| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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');
- const crowi = new Crowi(helpers.root(), process.env);
- const models = {};
- mongoose.Promise = global.Promise;
- before('Create database connection and clean up', (done) => {
- if (!mongoUri) {
- return done();
- }
- mongoose.connect(mongoUri, { useNewUrlParser: true });
- function clearDB() {
- Object.values(mongoose.connection.collections).forEach((collection) => {
- collection.remove(() => {});
- });
- return done();
- }
- if (mongoose.connection.readyState === 0) {
- mongoose.connect(mongoUri, { useNewUrlParser: true }, (err) => {
- if (err) {
- throw err;
- }
- return clearDB();
- });
- }
- return clearDB();
- });
- after('Close database connection', (done) => {
- if (!mongoUri) {
- return done();
- }
- mongoose.disconnect();
- return done();
- });
- // 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,
- };
|