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"