| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 'use strict';
- const mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || process.env.MONGO_URI || 'mongodb://localhost/growi_test'
- , mongoose= require('mongoose')
- , fs = require('fs')
- , helpers = require('@commons/util/helpers')
- , Crowi = require('@server/crowi')
- , crowi = new Crowi(helpers.root(), process.env)
- , models = {}
- ;
- mongoose.Promise = global.Promise;
- before('Create database connection and clean up', function (done) {
- if (!mongoUri) {
- return done();
- }
- mongoose.connect(mongoUri);
- function clearDB() {
- for (var i in mongoose.connection.collections) {
- mongoose.connection.collections[i].remove(function() {});
- }
- return done();
- }
- if (mongoose.connection.readyState === 0) {
- mongoose.connect(mongoUri, function (err) {
- if (err) {
- throw err;
- }
- return clearDB();
- });
- } else {
- return clearDB();
- }
- });
- after('Close database connection', function (done) {
- if (!mongoUri) {
- return done();
- }
- mongoose.disconnect();
- return done();
- });
- // Setup Models
- fs.readdirSync(helpers.root('src/server/models')).forEach(function(file) {
- if (file.match(/^([\w-]+)\.js$/)) {
- let name = RegExp.$1;
- if (name === 'index') {
- return;
- }
- let modelName = '';
- name.split('-').map(splitted => {
- modelName += (splitted.charAt(0).toUpperCase() + splitted.slice(1));
- });
- models[modelName] = require(`@server/models/${file}`)(crowi);
- }
- });
- crowi.models = models;
- module.exports = {
- models: models,
- mongoose: mongoose,
- };
|