diff --git a/client/cypress/fixtures/mocks.js b/client/cypress/fixtures/mocks.js index 7c520a44..62a4e31c 100644 --- a/client/cypress/fixtures/mocks.js +++ b/client/cypress/fixtures/mocks.js @@ -46,5 +46,10 @@ export default { }), SchoolClassNode: () => ({ readOnly: false + }), + ClassMemberNode: () => ({ + active: true, + isTeacher: false, + isMe: false }) }; diff --git a/client/cypress/fixtures/selected-school-class.json b/client/cypress/fixtures/selected-school-class.json index 388aae7f..ec557f3b 100644 --- a/client/cypress/fixtures/selected-school-class.json +++ b/client/cypress/fixtures/selected-school-class.json @@ -6,24 +6,6 @@ "selectedClass": { "id": "U2Nob29sQ2xhc3NOb2RlOjE=", "name": "Moordale", - "members": [ - { - "id": "VXNlck5vZGU6Mw==", - "firstName": "Otis", - "lastName": "Milburn", - "isTeacher": false, - "active": true, - "__typename": "ClassMemberNode" - }, - { - "id": "VXNlck5vZGU6NA==", - "firstName": "Maeve", - "lastName": "Wiley", - "isTeacher": false, - "active": true, - "__typename": "ClassMemberNode" - } - ], "__typename": "SchoolClassNode" }, "__typename": "UserNode" diff --git a/client/cypress/integration/frontend/school-class.spec.js b/client/cypress/integration/frontend/school-class.spec.js index 5ad436de..f1ae6cf9 100644 --- a/client/cypress/integration/frontend/school-class.spec.js +++ b/client/cypress/integration/frontend/school-class.spec.js @@ -1,5 +1,23 @@ const me = require('../../fixtures/me.join-class.json'); -const selectedClass = require('../../fixtures/selected-school-class.json'); +const {getMinimalMe} = require('../../support/helpers'); + +const members = [ + { + id: 'VXNlck5vZGU6Mw==', + firstName: 'Otis', + lastName: 'Milburn', + }, + { + id: 'VXNlck5vZGU6NA==', + firstName: 'Maeve', + lastName: 'Wiley', + }, +]; + +const selectedClass = { + name: 'Moordale', + members +}; describe('Class Management', () => { beforeEach(() => { @@ -100,8 +118,8 @@ describe('Class Management', () => { cy.mockGraphqlOps({ operations: { MeQuery: me, - MySchoolClassQuery: selectedClass - } + MySchoolClassQuery: selectedClass, + }, }); cy.visit('/me/my-class'); @@ -111,55 +129,48 @@ describe('Class Management', () => { }); it('should leave and re-join class', () => { - // todo: re-enable after the deactivation of users is re-enabled again + const {me: teacher} = getMinimalMe({}); + const teacherSelectedClass = { + me: { + ...selectedClass.me, + isTeacher: true, + }, + }; + cy.mockGraphqlOps({ + operations: { + MeQuery: teacher, + AddRemoveMember: { + addRemoveMember: { + success: true, + }, + }, + MySchoolClassQuery: teacherSelectedClass, + }, + }); - // const teacher = { - // me: { - // ...me.me, - // isTeacher: true - // } - // }; - // const teacherSelectedClass = { - // me: { - // ...selectedClass.me, - // isTeacher: true - // } - // }; - // cy.mockGraphqlOps({ - // operations: { - // MeQuery: teacher, - // AddRemoveMember: { - // addRemoveMember: { - // success: true - // } - // }, - // MySchoolClassQuery: teacherSelectedClass - // } - // }); - // - // cy.visit('/me/my-class'); - // cy.get('[data-cy=active-class-members-list]').within(() => { - // cy.get('[data-cy=school-class-member]').should('have.length', 2) - // }); - // cy.get('[data-cy=inactive-class-members-list]').should('not.exist'); - // - // cy.get('[data-cy=remove-from-class]').first().click(); - // - // cy.get('[data-cy=modal-save-button]').click(); - // - // cy.get('[data-cy=active-class-members-list]').within(() => { - // cy.get('[data-cy=school-class-member]').should('have.length', 1) - // }); - // cy.get('[data-cy=inactive-class-members-list]').within(() => { - // cy.get('[data-cy=school-class-member]').should('have.length', 1) - // }); - // - // cy.get('[data-cy=add-to-class]').first().click(); - // - // cy.get('[data-cy=active-class-members-list]').within(() => { - // cy.get('[data-cy=school-class-member]').should('have.length', 2) - // }); - // cy.get('[data-cy=inactive-class-members-list]').should('not.exist'); + cy.visit('/me/my-class'); + cy.get('[data-cy=active-class-members-list]').within(() => { + cy.get('[data-cy=school-class-member]').should('have.length', 2); + }); + cy.get('[data-cy=inactive-class-members-list]').should('not.exist'); + + cy.get('[data-cy=remove-from-class]').first().click(); + + cy.get('[data-cy=modal-save-button]').click(); + + cy.get('[data-cy=active-class-members-list]').within(() => { + cy.get('[data-cy=school-class-member]').should('have.length', 1); + }); + cy.get('[data-cy=inactive-class-members-list]').within(() => { + cy.get('[data-cy=school-class-member]').should('have.length', 1); + }); + + cy.get('[data-cy=add-to-class]').first().click(); + + cy.get('[data-cy=active-class-members-list]').within(() => { + cy.get('[data-cy=school-class-member]').should('have.length', 2); + }); + cy.get('[data-cy=inactive-class-members-list]').should('not.exist'); }); it('should display old classes', () => { @@ -167,15 +178,15 @@ describe('Class Management', () => { let OldClassesQuery = { me: { ...me.me, - oldClasses + oldClasses, }, }; cy.mockGraphqlOps({ operations: { MeQuery: me, - OldClassesQuery - } + OldClassesQuery, + }, }); cy.visit('/me/old-classes'); @@ -204,8 +215,8 @@ describe('Teacher Class Management', () => { let localMe = { me: { ...me.me, - isTeacher: true - } + isTeacher: true, + }, }; cy.mockGraphqlOps({ @@ -214,20 +225,20 @@ describe('Teacher Class Management', () => { MySchoolClassQuery: { me: { ...selectedClass.me, - isTeacher: true - } + isTeacher: true, + }, }, UpdateSchoolClass: { updateSchoolClass: { success: true, schoolClass: { name: className, - __typename: 'SchoolClassNode' + __typename: 'SchoolClassNode', }, - __typename: 'UpdateSchoolClassPayload' - } - } - } + __typename: 'UpdateSchoolClassPayload', + }, + }, + }, }); cy.visit('/me/my-class');