203 lines
7.2 KiB
JavaScript
203 lines
7.2 KiB
JavaScript
|
/**
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; under version 2
|
||
|
* of the License (non-upgradable).
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this program; if not, write to the Free Software
|
||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
*
|
||
|
* Copyright (c) 2021 (original work) Open Assessment Technologies SA ;
|
||
|
*/
|
||
|
|
||
|
import urls from '../utils/urls';
|
||
|
import selectors from '../utils/selectors';
|
||
|
|
||
|
import {
|
||
|
addBlockAndInlineInteractions,
|
||
|
removeBlockAndInlineInteractions,
|
||
|
addCommonInteractions,
|
||
|
removeCommonInteractions,
|
||
|
addMediaInteraction,
|
||
|
removeMediaInteraction,
|
||
|
addGraphicInteractions,
|
||
|
removeGraphicInteractions
|
||
|
} from '../utils/authoring-add-interactions';
|
||
|
|
||
|
describe('Item Authoring', () => {
|
||
|
const className = 'Test E2E class';
|
||
|
const itemName = 'Test E2E item 1';
|
||
|
/**
|
||
|
* Log in
|
||
|
* Visit the page
|
||
|
*/
|
||
|
before(() => {
|
||
|
cy.loginAsAdmin();
|
||
|
|
||
|
cy.intercept('POST', '**/edit*').as('edit');
|
||
|
cy.intercept('POST', `**/${selectors.editClassLabelUrl}`).as('editClassLabel');
|
||
|
cy.viewport(1000, 660);
|
||
|
cy.visit(urls.items);
|
||
|
cy.wait('@edit');
|
||
|
|
||
|
cy.get(selectors.root).then(root => {
|
||
|
if (root.find(`li[title="${className}"] a`).length) {
|
||
|
cy.deleteClassFromRoot(
|
||
|
selectors.root,
|
||
|
selectors.itemClassForm,
|
||
|
selectors.deleteClass,
|
||
|
selectors.deleteConfirm,
|
||
|
className,
|
||
|
selectors.deleteClassUrl,
|
||
|
selectors.resourceRelations,
|
||
|
false,
|
||
|
true
|
||
|
);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
after(() => {
|
||
|
cy.intercept('POST', '**/edit*').as('edit');
|
||
|
cy.visit(urls.items);
|
||
|
cy.wait('@edit');
|
||
|
|
||
|
cy.get(selectors.root).then(root => {
|
||
|
if (root.find(`li[title="${className}"] a`).length) {
|
||
|
cy.deleteClassFromRoot(
|
||
|
selectors.root,
|
||
|
selectors.itemClassForm,
|
||
|
selectors.deleteClass,
|
||
|
selectors.deleteConfirm,
|
||
|
className,
|
||
|
selectors.deleteClassUrl,
|
||
|
selectors.resourceRelations,
|
||
|
false,
|
||
|
true
|
||
|
);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Tests
|
||
|
*/
|
||
|
describe('Item authoring', () => {
|
||
|
it('can open item authoring', function () {
|
||
|
cy.addClassToRoot(
|
||
|
selectors.root,
|
||
|
selectors.itemClassForm,
|
||
|
className,
|
||
|
selectors.editClassLabelUrl,
|
||
|
selectors.treeRenderUrl,
|
||
|
selectors.addSubClassUrl
|
||
|
);
|
||
|
cy.addNode(selectors.itemForm, selectors.addItem);
|
||
|
cy.renameSelectedNode(selectors.itemForm, selectors.editItemUrl, itemName);
|
||
|
|
||
|
cy.get(selectors.authoring).click();
|
||
|
cy.location().should(loc => {
|
||
|
expect(`${loc.pathname}${loc.search}`).to.eq(urls.itemAuthoring);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should be "Manage Items" button', function () {
|
||
|
cy.get('[data-testid="manage-items"]').should('have.length', 1);
|
||
|
});
|
||
|
|
||
|
it('should be "Save" button', function () {
|
||
|
cy.get('[data-testid="save-the-item"]').should('have.length', 1);
|
||
|
});
|
||
|
|
||
|
it('should be disabled "Preview Item" button', function () {
|
||
|
cy.get('[data-testid="preview-the-item"]').should('have.class', 'disabled');
|
||
|
});
|
||
|
|
||
|
it('should be item editor panel', function () {
|
||
|
cy.get('#item-editor-panel').should('have.length', 1);
|
||
|
});
|
||
|
|
||
|
it('should be item properties right panel', function () {
|
||
|
cy.get('#item-editor-item-widget-bar').should('have.length', 1);
|
||
|
});
|
||
|
|
||
|
it('should be interactions left panel', function () {
|
||
|
cy.get('#item-editor-interaction-bar').should('have.length', 1);
|
||
|
});
|
||
|
|
||
|
it('can add inline interactions to Block', () => {
|
||
|
cy.getSettled('.qti-item.item-editor-item.edit-active').should('exist');
|
||
|
// open inline interactions panel
|
||
|
cy.get('#sidebar-left-section-inline-interactions').click();
|
||
|
addBlockAndInlineInteractions();
|
||
|
// close inline interactions panel
|
||
|
cy.get('#sidebar-left-section-inline-interactions ._accordion').click();
|
||
|
});
|
||
|
|
||
|
it('can add common interactions to canvas', () => {
|
||
|
addCommonInteractions();
|
||
|
});
|
||
|
|
||
|
it('can add media interaction to canvas and upload video', () => {
|
||
|
addMediaInteraction();
|
||
|
// close common interaction panel
|
||
|
cy.get('#sidebar-left-section-common-interactions ._accordion').click();
|
||
|
});
|
||
|
|
||
|
it('can add graphic interactions to canvas and upload image', () => {
|
||
|
// open graphic interactions panel
|
||
|
cy.get('#sidebar-left-section-graphic-interactions').click();
|
||
|
addGraphicInteractions();
|
||
|
});
|
||
|
|
||
|
it('can save item with interactions', () => {
|
||
|
cy.intercept('POST', '**/saveItem*').as('saveItem');
|
||
|
cy.get('[data-testid="save-the-item"]').click();
|
||
|
cy.wait('@saveItem').its('response.body').its('success').should('eq', true);
|
||
|
});
|
||
|
|
||
|
it('should be enabled "Preview Item" button', () => {
|
||
|
cy.get('[data-testid="preview-the-item"]').should('not.have.class', 'disabled');
|
||
|
});
|
||
|
|
||
|
it('can remove graphic interactions from canvas', () => {
|
||
|
// open graphic interactions panel
|
||
|
cy.get('#sidebar-left-section-graphic-interactions').click();
|
||
|
removeGraphicInteractions();
|
||
|
});
|
||
|
|
||
|
it('can remove media interaction from canvas', () => {
|
||
|
removeMediaInteraction();
|
||
|
// close common interaction panel
|
||
|
cy.get('#sidebar-left-section-common-interactions ._accordion').click();
|
||
|
});
|
||
|
|
||
|
it('can remove common interactions from canvas', () => {
|
||
|
removeCommonInteractions();
|
||
|
});
|
||
|
|
||
|
it('can remove inline interactions from Block', () => {
|
||
|
cy.getSettled('.qti-item.item-editor-item.edit-active').should('exist');
|
||
|
// open inline interactions panel
|
||
|
cy.get('#sidebar-left-section-inline-interactions').click();
|
||
|
|
||
|
removeBlockAndInlineInteractions();
|
||
|
|
||
|
// close inline interactions panel
|
||
|
cy.get('#sidebar-left-section-inline-interactions ._accordion').click();
|
||
|
});
|
||
|
|
||
|
it('can save item with removed interactions', () => {
|
||
|
cy.intercept('POST', '**/saveItem*').as('saveItem');
|
||
|
cy.get('[data-testid="save-the-item"]').click();
|
||
|
cy.wait('@saveItem').its('response.body').its('success').should('eq', true);
|
||
|
});
|
||
|
});
|
||
|
});
|