btrz-mongo-factory
Factory to create data in mongodb from a json-schema with the ability to override values.
Runtimes supported
io.js >= 1.0.3 node v0.11.x with the --harmony flag
Usage
Add the module to your package.json
directly or just run
npm install btrz-mongo-factory --save
You need to create fixture files. Each file can contain more than one fixture.Fixtures define an object using Json-Schema.
We took a dependency on json-schema-faker
to auto-generate objects based on those schemas and save to the db.
Given you have a fixture named "user", you can create and save a an object with the user schema into a MongoDb collection by the name of user
with one call.
let options = {
fixtures: `${__dirname}/fixtures`,
"db": {
"options": {
"database": "btrzMongoFactory",
"username": "",
"password": ""
},
"uris": [
"127.0.0.1:27017"
]
}
};
let factory = new MongoFactory(options);
factory.create("user");
.create()
You can create a single user with random values calling the create method with the fixture name.
factory.create("user");
You can override one or more values for the object given an options literal with the desired values to the create method of the factory.
factory.create("user", {name: "John Smith"});
The user will be create with the name: John Smith.
If your schema have $ref
you can pass that as the third parameter. (Leave the second parameter empty if you don't want to override anything);
// addressSchema is another schema
factory.create("user", {}, addressSchema);
You can create multiple users at once using the createList methods.
factory.createList("user", 3);
This will create 3 records in mongo for the user
collection. They will all be different.
Of course, you can override values on those objects. Notice that the override will be applied to all the records.
Ex: We want to make sure all user(s) are "active".
factory.createList("user", 4, {status: "active"});
This will create 4 users and they all will be active.
You can clean up the db calling the clearAll
method.
This method will remove all objects created by the instance.
factory.clearAll();