// Jasmine Test Suite: Certifiate Model define([ 'js/certificates/models/certificate', 'js/certificates/collections/certificates' ], function(CertificateModel, CertificateCollection) { 'use strict'; describe('CertificateModel', function() { beforeEach(function() { this.newModelOptions = {add: true}; this.model = new CertificateModel({editing: true}, this.newModelOptions); this.collection = new CertificateCollection([this.model], {certificateUrl: '/outline'}); }); describe('Basic', function() { it('certificate should have name by default', function() { expect(this.model.get('name')).toEqual('Name of the certificate'); }); it('certificate should have description by default', function() { expect(this.model.get('description')).toEqual('Description of the certificate'); }); it('certificate should be able to reset itself', function() { var originalName = 'Original Name', model = new CertificateModel({name: originalName}, this.newModelOptions); model.set({name: 'New Name'}); model.reset(); expect(model.get('name')).toEqual(originalName); }); it('certificate should have signatories in its relations', function() { var relation = this.model.getRelations()[0]; expect(relation.key).toEqual('signatories'); }); }); describe('Validation', function() { it('requires a name', function() { var model = new CertificateModel({name: ''}, this.newModelOptions); expect(model.isValid()).toBeFalsy(); }); it('can pass validation', function() { var model = new CertificateModel({name: 'foo'}, this.newModelOptions); expect(model.isValid()).toBeTruthy(); }); }); }); });