/* * SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) * * SPDX-License-Identifier: AGPL-3.0-only */ const BANNER_LOCAL_STORAGE_KEY = 'banner.lastModified' const MOCK_LAST_MODIFIED = 'mockETag' const bannerMockContent = 'This is the mock banner call' describe('Banner', () => { beforeEach(() => { cy.intercept({ method: 'GET', url: '/mock-backend/public/banner.txt' }, { statusCode: 200, headers: { 'Last-Modified': MOCK_LAST_MODIFIED }, body: bannerMockContent }) cy.intercept({ method: 'HEAD', url: '/mock-backend/public/banner.txt' }, { statusCode: 200, headers: { 'Last-Modified': MOCK_LAST_MODIFIED } }) .as('headBanner') cy.visit('/') localStorage.removeItem(BANNER_LOCAL_STORAGE_KEY) expect(localStorage.getItem(BANNER_LOCAL_STORAGE_KEY)).to.be.null }) it('shows the correct alert banner text', () => { cy.get('[data-cy="motd-banner"]') .contains(bannerMockContent) }) it('can be dismissed', () => { cy.get('[data-cy="motd-banner"]') .contains(bannerMockContent) cy.get('button[data-cy="motd-dismiss"]') .click() .then(() => { expect(localStorage.getItem(BANNER_LOCAL_STORAGE_KEY)) .to .equal(MOCK_LAST_MODIFIED) }) cy.get('[data-cy="no-motd-banner"]') .should('exist') cy.get('[data-cy="motd-banner"]') .should('not.exist') }) it('won\'t show again on reload', () => { cy.get('[data-cy="motd-banner"]') .contains(bannerMockContent) cy.get('button[data-cy="motd-dismiss"]') .click() .then(() => { expect(localStorage.getItem(BANNER_LOCAL_STORAGE_KEY)) .to .equal(MOCK_LAST_MODIFIED) }) cy.get('[data-cy="no-motd-banner"]') .should('exist') cy.get('[data-cy="motd-banner"]') .should('not.exist') cy.reload() cy.get('main') .should('exist') cy.wait('@headBanner') cy.get('[data-cy="no-motd-banner"]') .should('exist') cy.get('[data-cy="motd-banner"]') .should('not.exist') }) })