'use strict';

var _ = require('lodash');
var chai = require('chai');
var sinon = require('sinon');
var should = chai.should();
var Utils = require('../lib/utils');

describe('Utils', function() {
  describe('#checkRequired', function() {
    it('should check required fields', function() {
      var obj = {
        id: 'id',
        name: 'name',
        array: ['a', 'b'],
      };
      var fixtures = [{
        args: 'id',
        check: true
      }, {
        args: ['id'],
        check: true
      }, {
        args: ['id, name'],
        check: false
      }, {
        args: ['id', 'name'],
        check: true
      }, {
        args: 'array',
        check: true
      }, {
        args: 'dummy',
        check: false
      }, {
        args: ['dummy1', 'dummy2'],
        check: false
      }, {
        args: ['id', 'dummy'],
        check: false
      }, ];
      _.each(fixtures, function(f) {
        Utils.checkRequired(obj, f.args).should.equal(f.check);
      });
    });
    it('should fail to check required fields on non-object', function() {
      var obj = 'dummy';
      Utils.checkRequired(obj, 'name').should.be.false;
    });
  });
});