From e32b49ad5f61c35b008af394aa31613c79c97140 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 10 Aug 2021 17:25:59 +0200 Subject: [PATCH] Disable activating and deactivating users when in read only mode --- .../frontend/read-only/leave-class.spec.js | 54 +++++++++++++++++-- client/src/components/profile/GroupList.vue | 4 +- client/src/pages/myClass.vue | 2 +- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/client/cypress/integration/frontend/read-only/leave-class.spec.js b/client/cypress/integration/frontend/read-only/leave-class.spec.js index a08a93f7..52f0292d 100644 --- a/client/cypress/integration/frontend/read-only/leave-class.spec.js +++ b/client/cypress/integration/frontend/read-only/leave-class.spec.js @@ -1,9 +1,10 @@ import {getMinimalMe} from '../../../support/helpers'; -const MeQuery = getMinimalMe({readOnly: false}); -const me = MeQuery.me; +const getOperations = (readOnly = false, classReadOnly = false) => { + const MeQuery = getMinimalMe({readOnly, classReadOnly}); + const me = MeQuery.me; -const getOperations = () => ({ + return { MeQuery, MySchoolClassQuery: { me: { @@ -19,6 +20,22 @@ const getOperations = () => ({ isTeacher: true, isMe: true, active: true + }, + { + id: 'notMeId', + firstName: 'Otto', + lastName: 'Waalkes', + isTeacher: false, + isMe: false, + active: true + }, + { + id: 'alsoNotMeId', + firstName: 'Kaya', + lastName: 'Yanar', + isTeacher: false, + isMe: false, + active: false } ] } @@ -29,22 +46,49 @@ const getOperations = () => ({ success: true } } -}); +}; +}; describe('Leave School Class', () => { beforeEach(() => { cy.setup(); }); - it('leaves class', () => { + it('can leave class', () => { cy.mockGraphqlOps({ operations: getOperations(), }); cy.visit('/me/class'); + cy.getByDataCy('remove-from-class').should('exist'); + cy.getByDataCy('add-to-class').should('exist'); cy.getByDataCy('leave-group').click(); cy.getByDataCy('modal-save-button').click(); cy.getByDataCy('read-only-banner').should('exist'); }); + + it('can not leave class when license invalid', () => { + cy.mockGraphqlOps({ + operations: getOperations(true), + }); + + cy.visit('/me/class'); + + cy.getByDataCy('remove-from-class').should('not.exist'); + cy.getByDataCy('add-to-class').should('not.exist'); + cy.getByDataCy('leave-group').should('not.exist'); + }); + + it('can not leave class when class inactive', () => { + cy.mockGraphqlOps({ + operations: getOperations(false, true), + }); + + cy.visit('/me/class'); + + cy.getByDataCy('remove-from-class').should('not.exist'); + cy.getByDataCy('add-to-class').should('not.exist'); + cy.getByDataCy('leave-group').should('not.exist'); + }); }); diff --git a/client/src/components/profile/GroupList.vue b/client/src/components/profile/GroupList.vue index e12bfac8..6a9686be 100644 --- a/client/src/components/profile/GroupList.vue +++ b/client/src/components/profile/GroupList.vue @@ -32,7 +32,7 @@ Verlassen Aktivieren diff --git a/client/src/pages/myClass.vue b/client/src/pages/myClass.vue index bb2e54a1..de7bbd5a 100644 --- a/client/src/pages/myClass.vue +++ b/client/src/pages/myClass.vue @@ -8,7 +8,7 @@ :show-code-route="showCodeRoute" :read-only="me.readOnly" :can-edit="me.isTeacher" - :enable-deactivate="true" + :enable-deactivate="!me.readOnly && !me.selectedClass.readOnly" title="Klassenliste" class="my-class__class" @add="add"