/* eslint-disable no-undef */
/* eslint-disable global-require */
/* eslint-disable no-process-env */

import Bluebird from 'bluebird';

//------------------------------
// Global modules
//------------------------------
global._ = require('lodash');
global.chai = require('chai');
chai.use(require('sinon-chai'));
chai.use(require('chai-as-promised'));
global.expect = chai.expect;
global.sinon = require('sinon');
global.sandbox = sinon.sandbox.create();
global.Promise = Bluebird;

import nconf from 'nconf';
import mongoose from 'mongoose';

//------------------------------
// Load nconf for unit tests
//------------------------------
if (process.env.LOAD_SERVER === '0') { // when the server is in a different process we simply connect to mongoose
  require('../../website/server/libs/api-v3/setupNconf')('./config.json');
  // Use Q promises instead of mpromise in mongoose
  mongoose.Promise = Bluebird;
  mongoose.connect(nconf.get('TEST_DB_URI'));
} else { // When running tests and the server in the same process
  require('../../website/server/libs/api-v3/setupNconf')('./config.json.example');
  nconf.set('NODE_DB_URI', nconf.get('TEST_DB_URI'));
  nconf.set('NODE_ENV', 'test');
  nconf.set('IS_TEST', true);
  // We require src/server and npt src/index because
  // 1. nconf is already setup
  // 2. we don't need clustering
  require('../../website/server/server');
}
