describe('The user texts page', () => { beforeEach(() => { cy.exec('npm run db:seed') cy.loginAsUser() }) afterEach(() => { cy.exec('npm run db:wipe') }) it('shows my texts page with heading and form', () => { cy.visit('/texts') cy.get('h1').should('contain', 'My Texts') cy.get('#newTextName').should('exist') cy.get('#submit').should('exist') }) it('lists the seeded text owned by the user', () => { cy.intercept('GET', '/api/texts').as('getTexts') cy.visit('/texts') cy.wait('@getTexts') cy.get('#texts-list').should('contain', 'Tanach') }) it('creates a new text', () => { cy.visit('/texts') cy.get('#newTextName').type('My Notes') cy.get('#submit').click() cy.contains('My Notes') }) it('newly created text links to /texts/{id}', () => { cy.visit('/texts') cy.get('#newTextName').type('Linked Text') cy.get('#submit').click() cy.get('a') .contains('Linked Text') .should('have.attr', 'href') .and('match', /^\/texts\/\d+$/) }) it('does not show texts owned by other users', () => { cy.loginAsSecondUser() cy.visit('/texts') cy.get('#texts-list').should('not.contain', 'Tanach') }) it('navigates to user text detail on click', () => { cy.visit('/texts') cy.get('a').contains('Tanach').click() cy.url().should('match', /\/texts\/0$/) cy.get('#back').should('have.attr', 'href', '/texts') }) })