const schema = require('../fixtures/schema.json'); const assignments = require('../fixtures/assignments.json'); const mePayload = require('../fixtures/me.join-class.json'); const topics = require('../fixtures/topics.json'); const baseTopic = require('../fixtures/geld-und-kauf.json'); const moduleTeasers = require('../fixtures/module-teasers.json'); const fullModules = require('../fixtures/full-modules.json'); const topic = { topic: { ...baseTopic.topic, modules: { '__typename': 'ModuleNodeConnection', edges: [ ...Object.values(moduleTeasers).map(module => { return { node: module, __typename: 'ModuleNodeEdge' } }) ] } } } Cypress.Commands.add('checkHome', (n, skipHome) => { if (!skipHome) { cy.get('[data-cy="home-link"]').click(); } cy.get('[data-cy=start-modules-list]').should('exist'); cy.get('[data-cy=start-module-teaser]').should('have.length', n); }); Cypress.Commands.add('goToModule', (topicTitle, moduleMetaTitle) => { cy.get('[data-cy=open-sidebar-link]').click(); cy.contains(topicTitle).click(); cy.get('[data-cy=topic-title]').should('exist').should('contain', topicTitle); cy.contains(moduleMetaTitle).click(); }); describe('Current Module', () => { before(() => { cy.server(); let me = { ...mePayload.me, lastModule: { // 'id': 'TW9kdWxlTm9kZToxNw==', 'slug': 'lohn-und-budget', '__typename': 'ModuleNode' }, lastTopic: { 'id': 'VG9waWNOb2RlOjU=', 'slug': 'geld-und-kauf', '__typename': 'TopicNode' }, recentModules: { 'edges': [], '__typename': 'ModuleNodeConnection' }, }; cy.mockGraphql({ schema: schema, // endpoint: '/api/graphql' operations: { MeQuery: variables => { return { me: { ...me, '__typename': 'UserNode', 'permissions': [] } } }, AssignmentsQuery: { assignments }, ModulesQuery: variables => { return { module: fullModules[variables.slug] } }, TopicsQuery: topics, Topic: topic, UpdateLastTopic: { 'updateLastTopic': { 'topic': topic.topic, '__typename': 'UpdateLastTopicPayload' } }, UpdateLastModule: variables => { return { updateLastModule: { lastModule: moduleTeasers[variables.input.id], __typename: 'UpdateLastModulePayload' } } } } }); }); it('is set correctly', () => { cy.viewport('macbook-15'); cy.apolloLogin('nico.zickgraf', 'test'); cy.visit('/'); // module list exists, but does not have anything in it cy.checkHome(0, true); cy.get('[data-cy=no-modules-yet]').should('exist').should('contain', 'Sie haben sich noch kein Modul angeschaut. Legen Sie jetzt los!'); cy.goToModule('Geld und Kauf', 'Modul 2'); cy.get('[data-cy=module-title]').should('contain', 'Geld'); cy.checkHome(1); cy.get('[data-cy=start-module-teaser]').first().should('contain', 'Geld'); cy.goToModule('Geld und Kauf', 'Modul 1'); cy.get('[data-cy=module-title]').should('contain', 'Lohn und Budget'); cy.checkHome(2); cy.get('[data-cy=start-module-teaser]').first().should('contain', 'Lohn und Budget'); cy.get('[data-cy=start-module-teaser]').eq(1).should('contain', 'Geld'); cy.goToModule('Geld und Kauf', 'Modul 4'); cy.get('[data-cy=module-title]').should('contain', 'Lerntipps'); cy.checkHome(3); cy.get('[data-cy=start-module-teaser]').first().should('contain', 'Lerntipps'); cy.get('[data-cy=start-module-teaser]').eq(1).should('contain', 'Lohn und Budget'); cy.get('[data-cy=start-module-teaser]').eq(2).should('contain', 'Geld'); // module list is full, should switch only the order around cy.goToModule('Geld und Kauf', 'Modul 2'); cy.get('[data-cy=module-title]').should('contain', 'Geld'); cy.checkHome(3); cy.get('[data-cy=start-module-teaser]').first().should('contain', 'Geld'); cy.get('[data-cy=start-module-teaser]').eq(1).should('contain', 'Lerntipps'); cy.get('[data-cy=start-module-teaser]').eq(2).should('contain', 'Lohn und Budget'); cy.goToModule('Geld und Kauf', 'Modul 5'); cy.get('[data-cy=module-title]').should('contain', 'Random'); cy.checkHome(3); cy.get('[data-cy=start-module-teaser]').first().should('contain', 'Random'); cy.get('[data-cy=start-module-teaser]').eq(1).should('contain', 'Geld'); cy.get('[data-cy=start-module-teaser]').eq(2).should('contain', 'Lerntipps'); cy.get('[data-cy=start-module-teaser]').last().click(); cy.get('[data-cy=module-title]').should('contain', 'Lerntipps'); cy.checkHome(3); cy.get('[data-cy=start-module-teaser]').first().should('contain', 'Lerntipps'); cy.get('[data-cy=start-module-teaser]').eq(1).should('contain', 'Random'); cy.get('[data-cy=start-module-teaser]').eq(2).should('contain', 'Geld'); }) });