UNPKG

1.49 kBJavaScriptView Raw
1var fs = require('fs');
2var async = require('async');
3var loopback = require('loopback');
4
5function loadFixtures(models, callback) {
6 console.log('load fixtures');
7 var fixturePath = __dirname + '/../test-fixtures/';
8 var fixtures = fs.readdirSync(fixturePath);
9
10 function loadFixture(fixture, done){
11 var fixtureName = fixture.replace('.json', '');
12 var fixtureData = require(fixturePath + fixture);
13 models[fixtureName].create(fixtureData, done);
14 }
15
16 async.each(fixtures, loadFixture, callback);
17}
18
19function setupTestFixtures(app) {
20
21 loadFixtures(app.models, function(err){
22 if (err) console.log(err);
23 });
24
25 var Test = app.model('test', {dataSource: 'db'});
26
27 Test.setupFixtures = app.setupFixtures function(options, callback){
28 loadFixtures(app.models, callback);
29 };
30
31 Test.teardownFixtures = app.teardownFixtures function(options, callback){
32 console.log('teardown fixtures');
33 var dataSourceNames = Object.keys(app.datasources);
34 dataSourceNames.forEach(function(dataSourceName){
35 app.datasources[dataSourceName].automigrate();
36 });
37 callback(null, 'teardown complete');
38 };
39
40 Test.remoteMethod('setupFixtures', {
41 description: 'Setup fixtures for testing',
42 http: {path: '/setup', verb: 'get'}
43 });
44
45 Test.remoteMethod('teardownFixtures', {
46 description: 'Teardown test fixtures',
47 http: {path: '/teardown', verb: 'get'}
48 });
49
50}
51
52module.exports = (process.env.NODE_ENV === 'test')? setupTestFixtures: function(){};