npm install json-api-mock-serverA simple json-api validated mock server.
``cli`
yarn add json-api-mock-server
`js
var mountEndpoints = require('json-api-mock-server');
mountEndpoints(app, config);
`
app is expected to be an express application instance.
json-api-mock-server expects to find:
- models at
- scenarios at
It will gracefully warn when these aren't found.
`js`
{
logApiRequests: true,
logApiResponses: true,
serializer: null,
scenario: 'default'
apiNamespace: 'api'
}
In server/index.js (add this file if not present):
`js`
/jshint node:true/
var mountEndpoints = require('json-api-mock-server');
var config = {
logApiRequests: true,
logApiResponses: true,
serializer: null,
scenario: 'default'
apiNamespace: 'api'
};
module.exports = function(app) {
mountEndpoints(app, config);
};
You will put the models and scenarios directories inside ofserver/
this directory.
Creating a simple model (no relationships): example server/models/foo.js
`js
var faker = require('faker');
var props = require('json-api-mock-server/lib/store/props');
var between = require('json-api-mock-server/lib/utils/between');
var attr = props.attr;
module.exports = {
title: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 5)); }}),
bar: one('bar', { inverse: 'foo', defaultValue: false }),
};
`
Creating a model foowith a one-to-(one|none|many) relationship withbar
another model
`js
var faker = require('faker');
var props = require('json-api-mock-server/lib/store/props');
var between = require('json-api-mock-server/lib/utils/between');
var attr = props.attr;
var one = props.one;
module.exports = {
title: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 5)); }}),
bar: one('bar', { inverse: 'foo', defaultValue: false }),
};
`
- Omit inverse or set it to a false-y value for one-to-none behavior.defaultValue
- setting to true will cause a related model to be createdfalse
while seeding the database. Setting it to will cause theredefaultValue
to be no related model for this record.
- can also be a function that returns true or false.
Creating a model foowith a many-to-(one|none|many) relationship withbar
another model
`js
var faker = require('faker');
var props = require('json-api-mock-server/lib/store/props');
var between = require('json-api-mock-server/lib/utils/between');
var attr = props.attr;
var many = props.many;
module.exports = {
title: attr('string', { defaultValue: function() { return faker.lorem.words(between(3, 5)); }}),
bars: many('bar', { inverse: 'foo', defaultValue: function() { return between(0, 3); }),
};
`
- defaultValue can be numericdefaultValue
- the number you set to or which defaultValue() returns4
represents the total number of relationships to seed for the related model.
e.g. returning will cause 4 bar records to be instantiated.
Example server/scenarios/default.js
`js`
module.exports = function(store) {
store.seed('user', 10);
store.seed('contacts', 200);
};
- the count passed to seed is a minimum to create, additional instancesuser
may be created during the seeding of the relationships of other record types
e.g. if has contacts and defaultValue on model user is 5,5 * 10 + 200 = 250`.
the total number of contacts generated is