const topics = [ { id: 'VG9waWNOb2RlOjU=', order: 1, title: 'Geld und Kauf', slug: 'geld-und-kauf', }, { id: 'VG9waWNOb2RlOjUz', order: 2, title: 'Berufliche Grundbildung', slug: 'berufliche-grundbildung', }, ]; let recentModules = []; const getId = (id) => btoa(`ModuleNode:${id}`); const modules = { [getId(1)]: { title: 'Lohn und Budget', metaTitle: 'Modul 1', slug: 'lohn-und-budget', id: getId(1), }, [getId(2)]: { title: 'Geld', metaTitle: 'Modul 2', slug: 'geld', id: getId(2), }, [getId(3)]: { title: 'Lerntipps', metaTitle: 'Modul 4', slug: 'lerntipps', id: getId(3), }, [getId(4)]: { title: 'Random', metaTitle: 'Modul 5', slug: 'random', id: getId(4), }, }; const slugs = { 'lohn-und-budget': getId(1), 'geld': getId(2), 'lerntipps': getId(3), 'random': getId(4), }; const getModuleBySlug = (slug) => { console.log('getModuleBySlug', slug); const id = slugs[slug]; console.log(id); return modules[id]; }; const moduleNodes = Object.values(modules).map(module => ({ node: module, })); console.log(moduleNodes); const getTopic = () => { console.info('calling getTopic'); return { topic: { title: 'Geld und Kauf', id: 'VG9waWNOb2RlOjU=', teaser: 'Topic 2', modules: { edges: moduleNodes, }, } }; }; const checkHome = (n, skipHome) => { cy.log(`Checking if home has ${n} teasers`); 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); }; const goToModule = (topicTitle, moduleMetaTitle) => { cy.log(`Going to module ${moduleMetaTitle} in topic ${topicTitle}`); 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', () => { const me = { lastModule: { slug: 'lohn-und-budget', id: 'last-module-id', }, lastTopic: { id: 'VG9waWNOb2RlOjU=', slug: 'geld-und-kauf', }, recentModules: { edges: recentModules, }, }; const operations = { MeQuery: { me, }, AssignmentsQuery: { assignments: [], }, ModuleDetailsQuery: variables => { console.log('calling ModuleDetailsQuery', getModuleBySlug(variables.slug)); return { module: getModuleBySlug(variables.slug) }; }, TopicsQuery: { topics: { edges: topics.map(topic => ({node: topic})), }, }, Topic: getTopic(), UpdateLastTopic: () => { const Topic = getTopic(); const topic = Topic.topic; return { updateLastTopic: { topic, }, }; }, NewsTeasers: { newsTeasers: { edges: [], }, }, UpdateLastModule: ({input: {id}}) => { const lastModule = modules[id]; return { updateLastModule: { lastModule, }, }; }, }; before(() => { cy.setup(); }); it.skip('is set correctly', () => { cy.mockGraphqlOps({ operations, }); cy.visit('/'); // module list exists, but does not have anything in it 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!'); goToModule('Geld und Kauf', 'Modul 2'); cy.get('[data-cy=module-title]').should('contain', 'Geld'); checkHome(1); cy.get('[data-cy=start-module-teaser]').first().should('contain', 'Geld'); goToModule('Geld und Kauf', 'Modul 1'); cy.get('[data-cy=module-title]').should('contain', 'Lohn und Budget'); 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'); goToModule('Geld und Kauf', 'Modul 4'); cy.get('[data-cy=module-title]').should('contain', 'Lerntipps'); 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 goToModule('Geld und Kauf', 'Modul 2'); cy.get('[data-cy=module-title]').should('contain', 'Geld'); 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'); goToModule('Geld und Kauf', 'Modul 5'); cy.get('[data-cy=module-title]').should('contain', 'Random'); 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'); 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'); }); });