135 lines
3.5 KiB
JavaScript
135 lines
3.5 KiB
JavaScript
import {getMinimalMe} from '../../../support/helpers';
|
|
|
|
describe('The Rooms Page', () => {
|
|
const getOperations = (isTeacher) => ({
|
|
MeQuery: getMinimalMe({isTeacher}),
|
|
RoomsQuery: {
|
|
rooms: {
|
|
edges: [
|
|
{
|
|
node: {
|
|
schoolClass: {
|
|
id: 'selectedClassId',
|
|
},
|
|
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
});
|
|
|
|
const getOnboardingOperations = (isTeacher) => {
|
|
const operations = getOperations(isTeacher);
|
|
return {
|
|
...operations,
|
|
RoomsQuery: {
|
|
rooms: {
|
|
edges: [],
|
|
},
|
|
},
|
|
};
|
|
};
|
|
|
|
beforeEach(() => {
|
|
cy.setup();
|
|
});
|
|
|
|
it('shows the onboarding page', () => {
|
|
cy.mockGraphqlOps({
|
|
operations: getOnboardingOperations(true),
|
|
});
|
|
|
|
cy.visit('/rooms');
|
|
cy.getByDataCy('page-title').should('contain', 'Räume');
|
|
cy.getByDataCy('rooms-onboarding-text').should('contain', 'Hier können Sie Räume erstellen');
|
|
cy.getByDataCy('page-footer').should('not.exist');
|
|
cy.getByDataCy('create-room-button').should('contain', 'Raum erstellen').click();
|
|
cy.url().should('include', 'new-room');
|
|
});
|
|
|
|
it('shows the onboarding page without button for student', () => {
|
|
cy.mockGraphqlOps({
|
|
operations: getOnboardingOperations(false),
|
|
});
|
|
|
|
cy.visit('/rooms');
|
|
cy.getByDataCy('page-title').should('contain', 'Räume');
|
|
cy.getByDataCy('rooms-onboarding-text').should('contain', 'Hier können Sie Räume erstellen');
|
|
cy.getByDataCy('page-footer').should('not.exist');
|
|
cy.getByDataCy('create-room-button').should('not.exist');
|
|
});
|
|
|
|
it('goes to the rooms page', () => {
|
|
const operations = getOperations(true);
|
|
cy.mockGraphqlOps({
|
|
operations,
|
|
});
|
|
|
|
cy.visit('/rooms');
|
|
|
|
cy.getByDataCy('room-widget').should('have.length', 1);
|
|
cy.get('[data-cy=add-room]').should('exist');
|
|
});
|
|
|
|
it('actions should not exist for student', () => {
|
|
const operations = getOperations(false);
|
|
cy.mockGraphqlOps({
|
|
operations,
|
|
});
|
|
|
|
cy.visit('/rooms');
|
|
|
|
cy.getByDataCy('room-widget').should('have.length', 1);
|
|
cy.getByDataCy('toggle-room-actions-menu').should('not.exist');
|
|
});
|
|
|
|
it('adds a room as teacher', () => {
|
|
const getRoom = (title, appearance, description) => {
|
|
let id = title.toLowerCase().replace(' ', '-');
|
|
return {
|
|
id,
|
|
slug: id,
|
|
title: title,
|
|
entryCount: 3,
|
|
appearance: appearance,
|
|
description: description,
|
|
};
|
|
};
|
|
let rooms = [
|
|
getRoom('First Room', 'blue', 'Some description')
|
|
];
|
|
|
|
const operations = {
|
|
MeQuery: getMinimalMe({isTeacher: true}),
|
|
RoomsQuery() {
|
|
return {
|
|
rooms: {
|
|
edges: rooms.map(room => ({node: room})),
|
|
},
|
|
};
|
|
},
|
|
AddRoom({input: {room: {title, appearance, description}}}) {
|
|
const room = getRoom(title, appearance, description);
|
|
rooms.push(room);
|
|
return {
|
|
addRoom: {
|
|
room,
|
|
},
|
|
};
|
|
},
|
|
};
|
|
cy.mockGraphqlOps({
|
|
operations,
|
|
});
|
|
cy.visit('/rooms');
|
|
cy.getByDataCy('room-widget').should('have.length', 1);
|
|
cy.getByDataCy('add-room').click();
|
|
cy.getByDataCy('page-form-input-titel').type('Strg F');
|
|
cy.getByDataCy('school-class-select').should('not.exist');
|
|
cy.getByDataCy('color-select').eq(2).click();
|
|
cy.getByDataCy('room-form-save').click();
|
|
cy.getByDataCy('room-widget').should('have.length', 2);
|
|
});
|
|
});
|