From 462348dd32069a83f371adfa638c56d69e74a24f Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 27 Jul 2021 17:41:43 +0200 Subject: [PATCH] Add test for read only mode in room --- .../frontend/read-only/room-read-only.spec.js | 70 +++++++++++++++++++ .../school-class-team-read-only.spec.js | 11 --- client/src/pages/rooms.vue | 2 +- 3 files changed, 71 insertions(+), 12 deletions(-) create mode 100644 client/cypress/integration/frontend/read-only/room-read-only.spec.js diff --git a/client/cypress/integration/frontend/read-only/room-read-only.spec.js b/client/cypress/integration/frontend/read-only/room-read-only.spec.js new file mode 100644 index 00000000..a43dcdd6 --- /dev/null +++ b/client/cypress/integration/frontend/read-only/room-read-only.spec.js @@ -0,0 +1,70 @@ +import mocks from '../../../fixtures/mocks'; + +const SELECTED_CLASS_ID = 'selectedClassId'; + +const getOperations = ({readOnly}) => ({ + MeQuery: { + me: { + onboardingVisited: true, + readOnly, + isTeacher: true, + selectedClass: { + id: SELECTED_CLASS_ID, + }, + }, + }, + RoomsQuery: { + rooms: { + edges: [ + { + node: { + id: '', + slug: '', + title: 'some room', + entryCount: 3, + appearance: 'red', + description: 'some description', + schoolClass: { + id: SELECTED_CLASS_ID, + name: 'bla', + }, + }, + }, + ], + }, + }, +}); + +Cypress.Commands.add('checkRoomReadOnly', (readOnly) => { + cy.mockGraphqlOps({ + operations: getOperations({readOnly}), + }); + + const exist = readOnly ? 'not.exist' : 'exist'; + cy.visit('rooms'); + cy.log('visit'); + cy.get('.room-widget').should('exist'); + cy.getByDataCy('add-room').should(exist); +}); + +describe('Room Team Management - Read only', () => { + beforeEach(() => { + cy.fakeLogin('nino.teacher', 'test'); + cy.server(); + cy.viewport('macbook-15'); + cy.task('getSchema').then(schema => { + cy.mockGraphql({ + schema, + mocks, + }); + }); + }); + + it('can edit room', () => { + cy.checkRoomReadOnly(false); + }); + + it('can not edit room', () => { + cy.checkRoomReadOnly(true); + }); +}); diff --git a/client/cypress/integration/frontend/read-only/school-class-team-read-only.spec.js b/client/cypress/integration/frontend/read-only/school-class-team-read-only.spec.js index 6fe07a21..cde6c664 100644 --- a/client/cypress/integration/frontend/read-only/school-class-team-read-only.spec.js +++ b/client/cypress/integration/frontend/read-only/school-class-team-read-only.spec.js @@ -63,20 +63,9 @@ describe('School Class and Team Management - Read only', () => { it('can see menu items', () => { cy.checkSchoolClassTeamReadOnly(false); - // cy.visit('me/class'); - // cy.getByDataCy('group-list-name').should('exist').should('contain', selectedClassName); - // cy.getByDataCy('show-code-button').should('exist'); - // cy.getByDataCy('edit-group-name-link').should('exist'); - // cy.openSidebar(); - // cy.getByDataCy('class-selection').click(); - // cy.getByDataCy('current-class-name').should('exist'); - // cy.getByDataCy('create-class-link').should('exist'); }); it('can not see menu items', () => { - // cy.mockGraphqlOps({ - // operations: getOperations({readOnly: true}), - // }); cy.checkSchoolClassTeamReadOnly(true); }); }); diff --git a/client/src/pages/rooms.vue b/client/src/pages/rooms.vue index 8b85aaef..d01a9748 100644 --- a/client/src/pages/rooms.vue +++ b/client/src/pages/rooms.vue @@ -44,7 +44,7 @@ return this.me.selectedClass.id; }, canAddRoom() { - return this.me.permissions.includes('users.can_manage_school_class_content'); + return this.me.isTeacher && !this.me.readOnly; } },