mongoose-fixture-loader
v1.0.2
Published
A promise fixture loader for Mongoose
Downloads
54
Maintainers
Readme
Mongoose Fixture Loader
A promise fixture loader for Mongoose.
Load a single object
loadFixture(UserModel, userObject);
Load an array of objects
loadFixture(UserModel, arrayOfUserObjects);
Load a sequence of objects
loadFixture(UserModel, userObject) .then((userInstance) => { loadFixture(BookModel, bookObjectRelatedToUserObject) });
Load objects in parallel
Promise.all([ loadFixture(UserModel, userObject), loadFixture(CatModel, catObject), loadFixture(DogModel, dogObject) ]);
Installation
npm install --save mongoose-fixture-loader
Usage
Assume you have a user model file
src/models/user-model.js
as the following.const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ firstName: { type: String, required: true }, lastName: {type: String, required: true }, email: { type: String }, created: { type: Date, default: Date.now } }); module.exports = mongoose.model('User', UserSchema);
Create a fixture file
test/fixtures/user.js
to export a JSON object,module.exports = { firstName: 'John', lastName: 'Doe', email: '[email protected]' };
or an array of JSON object.
module.exports = [ { firstName: 'John', lastName: 'Doe', email: '[email protected]' }, { firstName: 'Alice', lastName: 'Bob', email: '[email protected]' } ];
In your test file
test/index-test.js
, you can load and test your fixture.const expect = require('chai').expect; const mongoose = require('mongoose'); const loadFixture = require('mongoose-fixture-loader'); const UserModel = require('../src/models/user-model.js'); const user = require('./fixtures/user.js'); // Mongoose default promise is deprecated mongoose.Promise = global.Promise; describe('a test suite', () => { mongoose.connect('mongodb://localhost/mongoose-fixture-loader-test'); before((done) => { loadFixture(UserModel, user) .then((userInst) => { done(); }) .catch((err) => { done(err); }); }); after((done) => { UserModel.remove({}) .then(() => { return mongoose.connection.close(); }) .then(() => { done(); }) .catch((err) => { done(err); }); }); it('should find John', (done) => { UserModel.find({}) .then((users) => { expect(users[0].firstName).to.equal('John'); done(); }) .catch((err) => { done(err); }); }); });
Enjoy testing!
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
License
Copyright (c) 2016 Supasate Choochaisri
Licensed under the Apache License.