A promise fixture loader for Mongoose.
-
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: 'john.doe@test.com'
};
or an array of JSON object.
module.exports = [
{
firstName: 'John',
lastName: 'Doe',
email: 'john.doe@test.com'
},
{
firstName: 'Alice',
lastName: 'Bob',
email: 'alice.bob@test.com'
}
];
-
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.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!