import.cy.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. describe('Import', () => {
  2. it('Opens import page', () => {
  3. cy.resetDB();
  4. cy.loginAndVisit('/subscribers/import');
  5. });
  6. it('Imports subscribers', () => {
  7. const cases = [
  8. { chkMode: 'subscribe', status: 'enabled', chkSubStatus: 'unconfirmed', subStatus: 'unconfirmed', overwrite: true, count: 102 },
  9. { chkMode: 'subscribe', status: 'enabled', chkSubStatus: 'confirmed', subStatus: 'confirmed', overwrite: true, count: 102 },
  10. { chkMode: 'subscribe', status: 'enabled', chkSubStatus: 'unconfirmed', subStatus: 'confirmed', overwrite: false, count: 102 },
  11. { chkMode: 'blocklist', status: 'blocklisted', chkSubStatus: 'unsubscribed', subStatus: 'unsubscribed', overwrite: true, count: 102 },
  12. ];
  13. cases.forEach((c) => {
  14. cy.get(`[data-cy=check-${c.chkMode}] .check`).click();
  15. cy.get(`[data-cy=check-${c.chkSubStatus}] .check`).click();
  16. if (!c.overwrite) {
  17. cy.get(`[data-cy=overwrite]`).click();
  18. }
  19. if (c.status === 'enabled') {
  20. cy.get('.list-selector input').click();
  21. cy.get('.list-selector .autocomplete a').first().click();
  22. }
  23. cy.fixture('subs.csv').then((data) => {
  24. cy.get('input[type="file"]').attachFile({
  25. fileContent: data.toString(),
  26. fileName: 'subs.csv',
  27. mimeType: 'text/csv',
  28. });
  29. });
  30. cy.get('button.is-primary').click();
  31. cy.get('section.wrap .has-text-success');
  32. cy.get('button.is-primary').click();
  33. cy.wait(100);
  34. // Verify that 100 (+2 default) subs are imported.
  35. cy.loginAndVisit('/subscribers');
  36. cy.wait(100);
  37. cy.get('[data-cy=count]').then(($el) => {
  38. cy.expect(parseInt($el.text().trim())).to.equal(c.count);
  39. });
  40. // Subscriber status.
  41. cy.get('tbody td[data-label=Status]').each(($el) => {
  42. cy.wrap($el).find(`.tag.${c.status}`);
  43. });
  44. // Subscription status.
  45. cy.get('tbody td[data-label=E-mail]').each(($el) => {
  46. cy.wrap($el).find(`.tag.${c.subStatus}`);
  47. });
  48. cy.loginAndVisit('/subscribers/import');
  49. cy.wait(100);
  50. });
  51. });
  52. it('Imports subscribers incorrectly', () => {
  53. cy.wait(1000);
  54. cy.resetDB();
  55. cy.wait(1000);
  56. cy.loginAndVisit('/subscribers/import');
  57. cy.get('.list-selector input').click();
  58. cy.get('.list-selector .autocomplete a').first().click();
  59. cy.get('input[name=delim]').clear().type('|');
  60. cy.fixture('subs.csv').then((data) => {
  61. cy.get('input[type="file"]').attachFile({
  62. fileContent: data.toString(),
  63. fileName: 'subs.csv',
  64. mimeType: 'text/csv',
  65. });
  66. });
  67. cy.get('button.is-primary').click();
  68. cy.wait(250);
  69. cy.get('section.wrap .has-text-danger');
  70. });
  71. });