1 | var fs = require('fs');
|
2 | var async = require('async');
|
3 | var loopback = require('loopback');
|
4 |
|
5 | function 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 |
|
19 | function 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 |
|
52 | module.exports = (process.env.NODE_ENV === 'test')? setupTestFixtures: function(){};
|