UNPKG

builder-builder

Version:

A runtime builder generator for use in node, io or the browser

44 lines (35 loc) 1.76 kB
describe('Validation', function () { "use strict"; var builderBuilder = (typeof require === 'function' && require('../src/builderBuilder')) || window.builderBuilder; beforeEach(function () { var exampleBuilder = builderBuilder({ required: ['anExample', 'url'], optional: ['anotherExample', 'optional'] }); this.builder = exampleBuilder(); }); it('should validate when building', function () { spyOn(this.builder, 'validate'); expect(this.builder.withAnExample('abc').withUrl('def').build).toThrow(); expect(this.builder.validate).toHaveBeenCalled(); }); it('validation should be based on list of missing required fields - failure example', function () { spyOn(this.builder, 'listMissingFields').and.returnValue([]); var validationResponse = this.builder.validate(); expect(this.builder.listMissingFields).toHaveBeenCalled(); expect(validationResponse).toBe(true); }); it('validate should hook into missing fields for consistency', function () { spyOn(this.builder, 'listMissingFields').and.returnValue(['a']); var validationResponse = this.builder.validate(); expect(this.builder.listMissingFields).toHaveBeenCalled(); expect(validationResponse).toBe(false); }); it('should error with a message', function () { expect(this.builder.build).toThrow(new Error('Could not build as builder didn\'t validate: missing anExample, url')); }); it('should error with a message listing missing fields when building with missing fields', function () { spyOn(this.builder, 'listMissingFields').and.returnValue(['one', 'two', 'three']); expect(this.builder.build).toThrow(new Error('Could not build as builder didn\'t validate: missing one, two, three')); }); });