var adminFields = require('../../../helper/adminFields'); module.exports.tests = {}; module.exports.tests.interface = function(test, common) { test('validate fields', function(t) { t.assert(adminFields instanceof Function, 'adminFields is a function'); t.assert(adminFields() instanceof Array, 'adminFields() returns an array'); t.assert(adminFields().length > 0, 'adminFields array is not empty'); t.end(); }); }; module.exports.tests.lookupExistance = function(test, common) { test('all expected fields in schema', function(t) { var expectedFields = [ 'one', 'two', 'three', 'four' ]; var schema = { mappings: { _default_: { properties: {} } } }; // inject all expected fields into schema mock expectedFields.forEach(function (field) { schema.mappings._default_.properties[field] = {}; }); var res = adminFields(schema, expectedFields); t.deepEquals(res, expectedFields, 'all expected fields are returned'); t.end(); }); test('some expected fields in schema', function(t) { var expectedFields = [ 'one', 'two', 'three', 'four' ]; var schema = { mappings: { _default_: { properties: {} } } }; // inject only some of the expected fields into schema mock expectedFields.slice(0, 3).forEach(function (field) { schema.mappings._default_.properties[field] = {}; }); var res = adminFields(schema, expectedFields); t.deepEquals(res, expectedFields.slice(0, 3), 'only matching expected fields are returned'); t.end(); }); test('no expected fields in schema', function(t) { var schema = { mappings: { _default_: { properties: { foo: {} } } } }; var logErrorCalled = false; var logger = { error: function () { logErrorCalled = true; }}; var res = adminFields(schema, undefined, logger); t.deepEquals(res, [], 'no admin fields found'); t.assert(logErrorCalled, 'log error called'); t.end(); }); }; module.exports.all = function (tape, common) { function test(name, testFunction) { return tape('adminFields: ' + name, testFunction); } for( var testCase in module.exports.tests ){ module.exports.tests[testCase](test, common); } };