fix(motd): move fetch into component

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2022-10-01 18:06:31 +02:00
parent 0dac59ed2d
commit 8a5f86a89e
13 changed files with 359 additions and 254 deletions

View file

@ -10,101 +10,28 @@ const motdMockContent = 'This is the **mock** Motd call'
const motdMockHtml = 'This is the <strong>mock</strong> Motd call'
describe('Motd', () => {
const mockExistingMotd = (useEtag?: boolean, content = motdMockContent) => {
it("shows, dismisses and won't show again a motd modal", () => {
localStorage.removeItem(MOTD_LOCAL_STORAGE_KEY)
cy.intercept('GET', 'public/motd.md', {
statusCode: 200,
headers: { [useEtag ? 'etag' : 'Last-Modified']: MOCK_LAST_MODIFIED },
body: content
headers: { 'Last-Modified': MOCK_LAST_MODIFIED },
body: motdMockContent
})
cy.intercept('HEAD', 'public/motd.md', {
statusCode: 200,
headers: { [useEtag ? 'etag' : 'Last-Modified']: MOCK_LAST_MODIFIED }
headers: { 'Last-Modified': MOCK_LAST_MODIFIED }
})
}
beforeEach(() => {
localStorage.removeItem(MOTD_LOCAL_STORAGE_KEY)
})
it('shows the correct alert Motd text', () => {
mockExistingMotd()
cy.visitHome()
cy.getByCypressId('motd').find('.markdown-body').should('contain.html', motdMockHtml)
})
it("doesn't allow html in the motd", () => {
mockExistingMotd(false, '<iframe></iframe>')
cy.visitHome()
cy.getByCypressId('motd').find('.markdown-body').should('have.html', '<p>&lt;iframe&gt;&lt;/iframe&gt;</p>\n')
})
it('can be dismissed using etag', () => {
mockExistingMotd(true)
cy.visitHome()
cy.getByCypressId('motd').find('.markdown-body').should('contain.html', motdMockHtml)
cy.getByCypressId('motd-modal').find('.markdown-body').should('contain.html', motdMockHtml)
cy.getByCypressId('motd-dismiss')
.click()
.then(() => {
expect(localStorage.getItem(MOTD_LOCAL_STORAGE_KEY)).to.equal(MOCK_LAST_MODIFIED)
})
cy.getByCypressId('motd').should('not.exist')
})
it('can be dismissed', () => {
mockExistingMotd()
cy.visitHome()
cy.getByCypressId('motd').find('.markdown-body').should('contain.html', motdMockHtml)
cy.getByCypressId('motd-dismiss')
.click()
.then(() => {
expect(localStorage.getItem(MOTD_LOCAL_STORAGE_KEY)).to.equal(MOCK_LAST_MODIFIED)
})
cy.getByCypressId('motd').should('not.exist')
})
it("won't show again after dismiss and reload", () => {
mockExistingMotd()
cy.visitHome()
cy.getByCypressId('motd').find('.markdown-body').should('contain.html', motdMockHtml)
cy.getByCypressId('motd-dismiss')
.click()
.then(() => {
expect(localStorage.getItem(MOTD_LOCAL_STORAGE_KEY)).to.equal(MOCK_LAST_MODIFIED)
})
cy.getByCypressId('motd').should('not.exist')
cy.getByCypressId('motd-modal').should('not.exist')
cy.reload()
cy.get('main').should('exist')
cy.getByCypressId('motd').should('not.exist')
})
it('will show again after reload without dismiss', () => {
mockExistingMotd()
cy.visitHome()
cy.getByCypressId('motd').find('.markdown-body').should('contain.html', motdMockHtml)
cy.reload()
cy.get('main').should('exist')
cy.getByCypressId('motd').find('.markdown-body').should('contain.html', motdMockHtml)
})
it("won't show again after dismiss and page navigation", () => {
mockExistingMotd()
cy.visitHome()
cy.getByCypressId('motd').find('.markdown-body').should('contain.html', motdMockHtml)
cy.getByCypressId('motd-dismiss')
.click()
.then(() => {
expect(localStorage.getItem(MOTD_LOCAL_STORAGE_KEY)).to.equal(MOCK_LAST_MODIFIED)
})
cy.getByCypressId('motd').should('not.exist')
cy.getByCypressId('navLinkHistory').click()
cy.get('main').should('exist')
cy.getByCypressId('motd').should('not.exist')
})
it("won't show if no file exists", () => {
cy.visitHome()
cy.get('main').should('exist')
cy.getByCypressId('motd').should('not.exist')
cy.getByCypressId('motd-modal').should('not.exist')
})
})