Files
edx-platform/cms/static/js/spec/models/license_spec.js
2016-08-08 15:04:06 -04:00

73 lines
2.8 KiB
JavaScript

define(['js/models/license'], function(LicenseModel) {
describe('License model constructor', function() {
it('accepts no arguments', function() {
var model = new LicenseModel();
expect(model.get('type')).toBeNull();
expect(model.get('options')).toEqual({});
expect(model.get('custom')).toBeFalsy();
});
it('accepts normal arguments', function() {
var model = new LicenseModel({
'type': 'creative-commons',
'options': {'fake-boolean': true, 'version': 'your momma'}
});
expect(model.get('type')).toEqual('creative-commons');
expect(model.get('options')).toEqual({'fake-boolean': true, 'version': 'your momma'});
});
it('accepts a license string argument', function() {
var model = new LicenseModel({'asString': 'all-rights-reserved'});
expect(model.get('type')).toEqual('all-rights-reserved');
expect(model.get('options')).toEqual({});
expect(model.get('custom')).toBeFalsy();
});
it('accepts a custom license argument', function() {
var model = new LicenseModel({'asString': 'Mozilla Public License 2.0'});
expect(model.get('type')).toBeNull();
expect(model.get('options')).toEqual({});
expect(model.get('custom')).toEqual('Mozilla Public License 2.0');
});
});
describe('License model', function() {
beforeEach(function() {
this.model = new LicenseModel();
});
it('can parse license strings', function() {
this.model.setFromString('creative-commons: BY');
expect(this.model.get('type')).toEqual('creative-commons');
expect(this.model.get('options')).toEqual({'BY': true});
expect(this.model.get('custom')).toBeFalsy();
});
it('can stringify a null license', function() {
expect(this.model.toString()).toEqual('');
});
it('can stringify a simple license', function() {
this.model.set('type', 'foobie thinger');
expect(this.model.toString()).toEqual('foobie thinger');
});
it('can stringify a license with options', function() {
this.model.set({
'type': 'abc',
'options': {'ping': 'pong', 'bing': true, 'buzz': true, 'beep': false}}
);
expect(this.model.toString()).toEqual('abc: ping=pong bing buzz');
});
it('can stringify a custom license', function() {
this.model.set({
'type': "doesn't matter",
'options': {'ignore': 'me'},
'custom': 'this is my super cool license'
});
expect(this.model.toString()).toEqual('this is my super cool license');
});
});
});