1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- describe('Forms', () => {
- it('Opens forms page', () => {
- cy.resetDB();
- cy.loginAndVisit('/lists/forms');
- });
- it('Checks form URL', () => {
- cy.get('a[data-cy=url]').contains('http://localhost:9000');
- });
- it('Checks public lists', () => {
- cy.get('ul[data-cy=lists] li')
- .should('contain', 'Opt-in list')
- .its('length')
- .should('eq', 1);
- cy.get('[data-cy=form] pre').should('not.exist');
- });
- it('Selects public list', () => {
- // Click the list checkbox.
- cy.get('ul[data-cy=lists] .checkbox').click();
- // Make sure the <pre> form HTML has appeared.
- cy.get('[data-cy=form] pre').then(($pre) => {
- // Check that the ID of the list in the checkbox appears in the HTML.
- cy.get('ul[data-cy=lists] input').then(($inp) => {
- cy.wrap($pre).contains($inp.val());
- });
- });
- // Click the list checkbox.
- cy.get('ul[data-cy=lists] .checkbox').click();
- cy.get('[data-cy=form] pre').should('not.exist');
- });
- it('Subscribes from public form page', () => {
- // Create a public test list.
- cy.request('POST', '/api/lists', { name: 'test-list', type: 'public', optin: 'single' });
- // Open the public page and subscribe to alternating lists multiple times.
- // There should be no errors and two new subscribers should be subscribed to two lists.
- for (let i = 0; i < 2; i++) {
- for (let j = 0; j < 2; j++) {
- cy.loginAndVisit('/subscription/form');
- cy.get('input[name=email]').clear().type(`test${i}@test.com`);
- cy.get('input[name=name]').clear().type(`test${i}`);
- cy.get('input[type=checkbox]').eq(j).click();
- cy.get('button').click();
- cy.wait(250);
- cy.get('.wrap').contains(/has been sent|successfully/);
- }
- }
- // Verify form subscriptions.
- cy.request('/api/subscribers').should((response) => {
- const { data } = response.body;
- // Two new + two dummy subscribers that are there by default.
- expect(data.total).to.equal(4);
- // The two new subscribers should each have two list subscriptions.
- for (let i = 0; i < 2; i++) {
- expect(data.results.find((s) => s.email === `test${i}@test.com`).lists.length).to.equal(2);
- }
- });
- });
- });
|