Yuki Takei пре 6 година
родитељ
комит
3341625a7d
4 измењених фајлова са 70 додато и 69 уклоњено
  1. 30 0
      src/server/crowi/index.js
  2. 26 26
      src/test/crowi/crowi.test.js
  3. 4 2
      src/test/models/config.test.js
  4. 10 41
      src/test/utils.js

+ 30 - 0
src/server/crowi/index.js

@@ -104,6 +104,36 @@ Crowi.prototype.init = async function() {
   ]);
 };
 
+Crowi.prototype.initForTest = async function() {
+  // await this.setupDatabase();
+  await this.setupModels();
+  // await this.setupSessionConfig();
+  await this.setupConfigManager();
+
+  // // customizeService depends on AppService and XssService
+  // // passportService depends on appService
+  // // slack depends on setUpSlacklNotification
+  // await Promise.all([
+  //   this.setUpApp(),
+  //   this.setUpXss(),
+  //   this.setUpSlacklNotification(),
+  // ]);
+
+  // await Promise.all([
+  //   this.scanRuntimeVersions(),
+  //   this.setupPassport(),
+  //   this.setupSearcher(),
+  //   this.setupMailer(),
+  //   this.setupSlack(),
+  //   this.setupCsrf(),
+  //   this.setUpGlobalNotification(),
+  //   this.setUpFileUpload(),
+  //   this.setUpAcl(),
+  //   this.setUpCustomize(),
+  //   this.setUpRestQiitaAPI(),
+  // ]);
+};
+
 Crowi.prototype.isPageId = function(pageId) {
   if (!pageId) {
     return false;

+ 26 - 26
src/test/crowi/crowi.test.js

@@ -34,30 +34,30 @@ describe('Test for Crowi application context', () => {
     });
   });
 
-  describe('.setupDatabase', () => {
-    before(() => {
-      mongoose.disconnect(); // avoid error of Trying to open unclosed connection
-    });
-    it('setup completed', (done) => {
-      const crowi = new Crowi(helpers.root());
-      // set
-      const p = crowi.setupDatabase();
-      expect(p).to.instanceof(Promise);
-      p
-        .then(() => {
-          expect(mongoose.connection.readyState).to.equals(1);
-          done();
-        })
-        .catch((err) => { // eslint-disable-line no-unused-vars
-          // console.log('readyState', mongoose.connection.readyState);
-          if (mongoose.connection.readyState === 2 || mongoose.connection.readyState === 1) { // alreaady connected
-            // throught
-          }
-          else {
-            expect(mongoose.connection.readyState).to.equals(0);
-          }
-          done();
-        });
-    });
-  });
+  // describe('.setupDatabase', () => {
+  //   before(() => {
+  //     mongoose.disconnect(); // avoid error of Trying to open unclosed connection
+  //   });
+  //   it('setup completed', (done) => {
+  //     const crowi = new Crowi(helpers.root());
+  //     // set
+  //     const p = crowi.setupDatabase();
+  //     expect(p).to.instanceof(Promise);
+  //     p
+  //       .then(() => {
+  //         expect(mongoose.connection.readyState).to.equals(1);
+  //         done();
+  //       })
+  //       .catch((err) => { // eslint-disable-line no-unused-vars
+  //         // console.log('readyState', mongoose.connection.readyState);
+  //         if (mongoose.connection.readyState === 2 || mongoose.connection.readyState === 1) { // alreaady connected
+  //           // throught
+  //         }
+  //         else {
+  //           expect(mongoose.connection.readyState).to.equals(0);
+  //         }
+  //         done();
+  //       });
+  //   });
+  // });
 });

+ 4 - 2
src/test/models/config.test.js

@@ -1,5 +1,8 @@
 const chai = require('chai');
 const sinonChai = require('sinon-chai');
+
+const mongoose = require('mongoose');
+
 const utils = require('../utils.js');
 
 const { expect } = chai;
@@ -8,9 +11,8 @@ chai.use(sinonChai);
 
 /* global testDBUtil */
 
-
 describe('Config model test', () => {
-  const Config = utils.models.Config;
+  const Config = mongoose.model('Config');
 
   const conn = utils.mongoose.connection;
 

+ 10 - 41
src/test/utils.js

@@ -1,7 +1,7 @@
 
 const mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || process.env.MONGO_URI || 'mongodb://localhost/growi_test';
 const mongoose = require('mongoose');
-const fs = require('fs');
+
 const helpers = require('@commons/util/helpers');
 const Crowi = require('@server/crowi');
 
@@ -11,58 +11,27 @@ const models = {};
 
 mongoose.Promise = global.Promise;
 
-before('Create database connection and clean up', (done) => {
+before('Create database connection and clean up', async() => {
   if (!mongoUri) {
-    return done();
+    return;
   }
 
-  mongoose.connect(mongoUri, { useNewUrlParser: true });
-
-  function clearDB() {
-    Object.values(mongoose.connection.collections).forEach((collection) => {
-      collection.remove(() => {});
-    });
-    return done();
-  }
+  await mongoose.connect(mongoUri, { useNewUrlParser: true });
 
-  if (mongoose.connection.readyState === 0) {
-    mongoose.connect(mongoUri, { useNewUrlParser: true }, (err) => {
-      if (err) {
-        throw err;
-      }
-      return clearDB();
-    });
-  }
+  // drop database
+  await mongoose.connection.dropDatabase();
 
-  return clearDB();
+  await crowi.initForTest();
 });
 
-after('Close database connection', (done) => {
+after('Close database connection', async() => {
   if (!mongoUri) {
-    return done();
+    return;
   }
 
-  mongoose.disconnect();
-  return done();
+  return mongoose.disconnect();
 });
 
-// Setup Models
-fs.readdirSync(helpers.root('src/server/models')).forEach((file) => {
-  if (file.match(/^([\w-]+)\.js$/)) {
-    const name = RegExp.$1;
-    if (name === 'index') {
-      return;
-    }
-    let modelName = '';
-    name.split('-').forEach((splitted) => {
-      modelName += (splitted.charAt(0).toUpperCase() + splitted.slice(1));
-    });
-    models[modelName] = require(`@server/models/${file}`)(crowi);
-  }
-});
-
-crowi.models = models;
-
 module.exports = {
   models,
   mongoose,