diff --git a/cypress/e2e/adminNavLink.cy.js b/cypress/e2e/adminNavLink.cy.js new file mode 100644 index 0000000..0b0ae36 --- /dev/null +++ b/cypress/e2e/adminNavLink.cy.js @@ -0,0 +1,70 @@ +describe('The admin nav link', () => { + beforeEach(() => { + cy.exec('npm run db:seed') + }) + afterEach(() => { + cy.exec('npm run db:wipe') + }) + + describe('when logged in as an admin', () => { + beforeEach(() => { + cy.loginAsAdmin() + }) + + it('shows the admin link on the home page', () => { + cy.visit('/home') + cy.get('#admin-link') + .should('be.visible') + .and('have.attr', 'href', '/admin') + }) + + it('shows the admin link on the today page', () => { + cy.visit('/today') + cy.get('#admin-link') + .should('be.visible') + .and('have.attr', 'href', '/admin') + }) + + it('shows the admin link on the user texts page', () => { + cy.visit('/texts') + cy.get('#admin-link') + .should('be.visible') + .and('have.attr', 'href', '/admin') + }) + + it('navigates to the admin page when clicked', () => { + cy.visit('/home') + cy.get('#admin-link').click() + cy.url().should('include', '/admin') + cy.get('h1').should('contain', 'Admin') + }) + }) + + describe('when logged in as a regular user', () => { + beforeEach(() => { + cy.loginAsUser() + }) + + it('does not show the admin link on the home page', () => { + cy.visit('/home') + cy.get('#admin-link').should('not.be.visible') + }) + + it('does not show the admin link on the today page', () => { + cy.visit('/today') + cy.get('#admin-link').should('not.be.visible') + }) + + it('does not show the admin link on the user texts page', () => { + cy.visit('/texts') + cy.get('#admin-link').should('not.be.visible') + }) + + it('does not show the admin link on a user text page', () => { + cy.intercept('GET', '/api/texts/0').as('getText') + cy.visit('/texts/0') + cy.wait('@getText') + cy.get('#admin-link').should('not.be.visible') + }) + }) +})