Skip to content
Snippets Groups Projects
edit-project.spec.js 2.58 KiB
Newer Older
/// <reference types="Cypress" />
/* globals cy, expect */

context('Edit Project Browser Testing', () => {
  let projectName = 'Edited Test Project ',
      customerName = 'Edited Test Customer ',
      description = 'Edited Test Description ',
      menuQuery = [
        'solid-display.project-tab',
        'solid-display:last-child',
        'solid-display[order-by="customer.name"]'
      ];
  before(() => {
    cy.randomNum().then(num => {
      projectName += num;
      customerName += num;
      description += num;
    });
    cy.clearLocalStorage({ domain: null });
    cy.clearCookies({ domain: null });
  });
  beforeEach(() => cy.setToken());
  it('should visit user login screen', () => cy.userLogin());
  describe('Project Edition process', () => {
    it('should login', () => cy.login());
    it('should visit the project list screen', () => cy.naviagte('/admin/admin-projects'));
    it('should visit the last project edit screen', () => {
      cy.get(menuQuery.join(' '))
        .invoke('attr', 'data-src')
        .then(url => cy.encodeUrl(url).then(id  => {
          cy.naviagte('/project/@' + id + '/project-information/project-edit');
        }));
    });
    it('should enter new project data', () => {
      cy.get('#project-edit input[name="customer.name"]').clear().type(customerName);
      cy.get('#project-edit input[name="customer.name"]').should('have.value', customerName);
      cy.get('#project-edit input[name="name"]').clear().type(projectName);
      cy.get('#project-edit input[name="name"]').should('have.value', projectName);
      cy.get('#project-edit textarea[name="description"]').clear().type(description);
      cy.get('#project-edit textarea[name="description"]').should('have.value', description);
    });
    it('should click button to save the project', () => {
      cy.get('#project-edit input[value="Enregistrer"]').click();
    });
    it('should land on project information screen', () => {
      cy.get(menuQuery.join(' '))
        .invoke('attr', 'data-src')
        .then(url => cy.encodeUrl(url).then(id  => {
          cy.location().should((loc) => {
            expect(loc.pathname).to.eq('/project/@' + id + '/project-information');
          });
        }));
      // Workaround - component reactivity bug
      cy.reload();
      cy.get('.accept-button').click();
      // End workaround
    });
    it('should show edited project data on project information screen', () => {
      cy.contains('solid-display-value[name="customer.name"]', customerName).should("exist");
      cy.contains('solid-display-value[name="name"]', projectName).should("exist");
    });
  });
});