* fix: eslint operator-linebreak issue * fix: eslint quotes issue * fix: react jsx indent and props issues * fix: eslint trailing spaces issues * fix: eslint line around directives issue * fix: eslint semi rule * fix: eslint newline per chain rule * fix: eslint space infix ops rule * fix: eslint space-in-parens issue * fix: eslint space before function paren issue * fix: eslint space before blocks issue * fix: eslint arrow body style issue * fix: eslint dot-location issue * fix: eslint quotes issue * fix: eslint quote props issue * fix: eslint operator assignment issue * fix: eslint new line after import issue * fix: indent issues * fix: operator assignment issue * fix: all autofixable eslint issues * fix: all react related fixable issues * fix: autofixable eslint issues * chore: remove all template literals * fix: remaining autofixable issues * fix: failing js test
158 lines
7.5 KiB
JavaScript
158 lines
7.5 KiB
JavaScript
define(['js/views/license', 'js/models/license', 'common/js/spec_helpers/template_helpers'],
|
|
function(LicenseView, LicenseModel, TemplateHelpers) {
|
|
describe('License view', function() {
|
|
beforeEach(function() {
|
|
TemplateHelpers.installTemplate('license-selector', true);
|
|
this.model = new LicenseModel();
|
|
this.view = new LicenseView({model: this.model});
|
|
});
|
|
|
|
it('renders with no license', function() {
|
|
this.view.render();
|
|
expect(this.view.$('li[data-license=all-rights-reserved] button'))
|
|
.toHaveText('All Rights Reserved');
|
|
expect(this.view.$('li[data-license=all-rights-reserved] button'))
|
|
.not.toHaveClass('is-selected');
|
|
expect(this.view.$('li[data-license=creative-commons] button'))
|
|
.toHaveText('Creative Commons');
|
|
expect(this.view.$('li[data-license=creative-commons] button'))
|
|
.not.toHaveClass('is-selected');
|
|
});
|
|
|
|
it('renders with the right license selected', function() {
|
|
this.model.set('type', 'all-rights-reserved');
|
|
expect(this.view.$('li[data-license=all-rights-reserved] button'))
|
|
.toHaveClass('is-selected');
|
|
expect(this.view.$('li[data-license=creative-commons] button'))
|
|
.not.toHaveClass('is-selected');
|
|
});
|
|
|
|
it('switches license type on click', function() {
|
|
var arrBtn = this.view.$('li[data-license=all-rights-reserved] button');
|
|
expect(this.model.get('type')).toBeNull();
|
|
arrBtn.click();
|
|
expect(this.model.get('type')).toEqual('all-rights-reserved');
|
|
// view has re-rendered, so get a new reference to the button
|
|
arrBtn = this.view.$('li[data-license=all-rights-reserved] button');
|
|
expect(arrBtn).toHaveClass('is-selected');
|
|
// now switch to creative commons
|
|
var ccBtn = this.view.$('li[data-license=creative-commons] button');
|
|
ccBtn.click();
|
|
expect(this.model.get('type')).toEqual('creative-commons');
|
|
// update references again
|
|
arrBtn = this.view.$('li[data-license=all-rights-reserved] button');
|
|
ccBtn = this.view.$('li[data-license=creative-commons] button');
|
|
expect(arrBtn).not.toHaveClass('is-selected');
|
|
expect(ccBtn).toHaveClass('is-selected');
|
|
});
|
|
|
|
it('sets default license options when switching license types', function() {
|
|
expect(this.model.get('options')).toEqual({});
|
|
var ccBtn = this.view.$('li[data-license=creative-commons] button');
|
|
ccBtn.click();
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: true, ND: true, SA: false
|
|
}
|
|
);
|
|
var arrBtn = this.view.$('li[data-license=all-rights-reserved] button');
|
|
arrBtn.click();
|
|
expect(this.model.get('options')).toEqual({});
|
|
});
|
|
|
|
it('renders license options', function() {
|
|
this.model.set({type: 'creative-commons'});
|
|
expect(this.view.$('ul.license-options li[data-option=BY]'))
|
|
.toContainText('Attribution');
|
|
expect(this.view.$('ul.license-options li[data-option=NC]'))
|
|
.toContainText('Noncommercial');
|
|
expect(this.view.$('ul.license-options li[data-option=ND]'))
|
|
.toContainText('No Derivatives');
|
|
expect(this.view.$('ul.license-options li[data-option=SA]'))
|
|
.toContainText('Share Alike');
|
|
expect(this.view.$('ul.license-options li').length).toEqual(4);
|
|
});
|
|
|
|
it('toggles boolean options on click', function() {
|
|
this.view.$('li[data-license=creative-commons] button').click();
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: true, ND: true, SA: false
|
|
}
|
|
);
|
|
// toggle NC option
|
|
this.view.$('li[data-option=NC]').click();
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: false, ND: true, SA: false
|
|
}
|
|
);
|
|
});
|
|
|
|
it("doesn't toggle disabled options", function() {
|
|
this.view.$('li[data-license=creative-commons] button').click();
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: true, ND: true, SA: false
|
|
}
|
|
);
|
|
var BY = this.view.$('li[data-option=BY]');
|
|
expect(BY).toHaveClass('is-disabled');
|
|
// try to toggle BY option
|
|
BY.click();
|
|
// no change
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: true, ND: true, SA: false
|
|
}
|
|
);
|
|
});
|
|
|
|
it("doesn't allow simultaneous conflicting options", function() {
|
|
this.view.$('li[data-license=creative-commons] button').click();
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: true, ND: true, SA: false
|
|
}
|
|
);
|
|
// SA and ND conflict
|
|
var SA = this.view.$('li[data-option=SA]');
|
|
// try to turn on SA option
|
|
SA.click();
|
|
// ND should no longer be selected
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: true, ND: false, SA: true
|
|
}
|
|
);
|
|
|
|
// try to turn on ND option
|
|
ND = this.view.$('li[data-option=ND]');
|
|
ND.click();
|
|
expect(this.model.get('options')).toEqual(
|
|
{
|
|
ver: '4.0', BY: true, NC: true, ND: true, SA: false
|
|
}
|
|
);
|
|
});
|
|
|
|
it('has no preview by default', function() {
|
|
this.view.render();
|
|
expect(this.view.$('.license-preview').length).toEqual(0);
|
|
this.view.$('li[data-license=creative-commons] button').click();
|
|
expect(this.view.$('.license-preview').length).toEqual(0);
|
|
});
|
|
|
|
it('displays a preview if showPreview is true', function() {
|
|
this.view = new LicenseView({model: this.model, showPreview: true});
|
|
this.view.render();
|
|
expect(this.view.$('.license-preview').length).toEqual(1);
|
|
// Expect default text to be "All Rights Reserved"
|
|
expect(this.view.$('.license-preview')).toContainText('All Rights Reserved');
|
|
this.view.$('li[data-license=creative-commons] button').click();
|
|
expect(this.view.$('.license-preview').length).toEqual(1);
|
|
expect(this.view.$('.license-preview')).toContainText('Some Rights Reserved');
|
|
});
|
|
});
|
|
});
|