bootstrap.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. 'use strict';
  2. var express = require('express')
  3. , async = require('async')
  4. , mongoose= require('mongoose')
  5. , ROOT_DIR = __dirname + '/..'
  6. , MODEL_DIR = __dirname + '/../lib/models'
  7. , Promise = require('bluebird')
  8. , mongoUri
  9. , testDBUtil
  10. ;
  11. mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || process.env.MONGO_URI || null;
  12. testDBUtil = {
  13. generateFixture: function (conn, model, fixture) {
  14. var m = conn.model(model);
  15. return new Promise(function(resolve, reject) {
  16. var createdModels = [];
  17. fixture.reduce(function(promise, entity) {
  18. return promise.then(function() {
  19. var newDoc = new m;
  20. Object.keys(entity).forEach(function(k) {
  21. newDoc[k] = entity[k];
  22. });
  23. return new Promise(function(r, rj) {
  24. newDoc.save(function(err, data) {
  25. createdModels.push(data);
  26. return r();
  27. });
  28. });
  29. });
  30. }, Promise.resolve()).then(function() {
  31. resolve(createdModels);
  32. });
  33. });
  34. },
  35. cleanUpDb: function (conn, models) {
  36. return new Promise(function(resolve, reject) {
  37. if (Array.isArray(models)) {
  38. models.reduce(function(promise, model) {
  39. return promise.then(function() {
  40. var m = conn.model(model);
  41. return new Promise(function(r, rj) {
  42. m.remove({}, r);
  43. });
  44. });
  45. }, Promise.resolve()).then(function() {
  46. resolve();
  47. });
  48. } else {
  49. var m = conn.model(models);
  50. m.remove({}, resolve);
  51. }
  52. });
  53. },
  54. };
  55. global.express = express;
  56. global.mongoose = mongoose;
  57. global.mongoUri = mongoUri;
  58. global.ROOT_DIR = ROOT_DIR;
  59. global.MODEL_DIR = MODEL_DIR;
  60. global.testDBUtil = testDBUtil;