Files
edx-platform/cms/static/js/spec/views/license_spec.js
Syed Ali Abbas Zaidi d7053a6783 fix: eslint autofixable issues (#32181)
* 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
2023-05-18 11:03:59 +05:00

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');
});
});
});