json-faker
Version:
This application creates json with fake contextual data. It takes input as a template.
127 lines (109 loc) • 4.47 kB
JavaScript
var JsonFaker = require('../src/json-faker');
var expect = require('chai').expect;
describe('JSON Faker testing', function () {
it('testing input object', function () {
var inputTemplate = {
prop1: '@faker.address.city()'
};
var result = JsonFaker.process(inputTemplate);
expect(result).to.have.property('prop1').and.not.equal('@faker.address.city()');
});
it('testing input string object', function () {
var stringInput = '{ "prop1": "@faker.address.city()", "prop2":"string here" }';
var result = JsonFaker.process(stringInput);
expect(result).to.have.property('prop1').and.not.equal('@faker.address.city()');
expect(result).to.have.property('prop2').and.equal('string here');
});
it('testing input file which contains all use cases', function () {
var inputFile = './test/test.json';
var result = JsonFaker.process(inputFile);
expect(result).to.have.property('level1Prop1').and.not.equal('@faker.address.state()');
expect(result).to.have.property('level1Prop2').and.not.equal('@faker.address.state()');
expect(result.level1Prop2).to.be.an('object');
expect(result.level1Prop3).to.be.an('array');
expect(result.level1Prop4).to.be.an('array');
expect(result.level1Prop5).to.equal(123456);
expect(result.level1Prop6).to.equal('test string');
expect(result.level1Prop7).to.be.oneOf(['type1', 'type2', 'type3', 'type4']);
expect(result.level1Prop8).to.be.an('object');
expect(result.level1Prop9).to.equal('Invalid input');
expect(result.level1Prop10).to.be.an('array');
expect(result.level1Prop11).to.equal('infinit loop()');
expect(result.level1Prop12).to.be.an('array');
expect(result.level1Prop12[0]).to.equal('Invalid input');
expect(result.level1Prop13).to.be.an('array');
expect(result.level1Prop13.length).to.equal(2);
expect(result.level1Prop14).to.be.NaN;
expect(result.level1Prop15).to.equal("12");
});
it('testing invalid file name', function () {
var inputString = 'abc.json';
var result = JsonFaker.process(inputString);
expect(result).to.equal('Invalid input');
});
it('testing invalid input', function () {
var inputString = 'notvaliddatatype';
var result = JsonFaker.process(inputString);
expect(result).to.equal('Invalid input data');
});
it('testing post function with invalid input', function () {
var postArg = 'invalidinput';
var result = JsonFaker.post(postArg);
expect(result.message).to.equal('Invalid input');
});
it('testing post function', function () {
var postArg = {
prop1: 'Some string',
prop2: 123,
prop3: ['abc', 'cde']
};
var result = JsonFaker.post(postArg);
expect(result).to.have.property('prop1').and.equal('Some string');
expect(result).to.have.property('prop2').and.equal(123);
expect(result).to.have.property('id');
});
it('testing put function', function () {
var putArg = {
prop1: 'Some string',
prop2: 123,
prop3: ['abc', 'cde']
};
var result = JsonFaker.put(putArg);
expect(result).to.have.property('prop1').and.equal('Some string');
expect(result).to.have.property('prop2').and.equal(123);
expect(result).to.have.property('id');
});
it('testing delete function', function () {
var deleteArg = {
prop1: 'Some string',
prop2: 123,
prop3: ['abc', 'cde']
};
var result = JsonFaker.delete(deleteArg);
expect(result).to.have.property('prop1').and.equal('Some string');
expect(result).to.have.property('prop2').and.equal(123);
expect(result).to.have.property('id');
});
it('testing for repeat', function () {
var inputObject = {
prop1: '{{repeat 2}}2{{/repeat}}'
};
var result = JsonFaker.process(inputObject);
expect(result.prop1).to.equal('2, 2');
});
it('testing for user template', function () {
var inputObject = {
prop1: 'Name {{person.firstName}} {{person.lastName}}',
prop2: '{{@faker.address.state()}}'
};
var myTemplate = {
person: {
firstName: 'John',
lastName: 'Doe'
}
};
var result = JsonFaker.process(inputObject, myTemplate);
expect(result.prop1).to.equal('Name John Doe');
expect(result).to.have.property('prop2').and.not.equal('@faker.address.state()');
});
});