20913: Fix test to check that use profile gets saved
[arvados.git] / cypress / integration / project.spec.js
index 43f369459f06ef3e2978fcfc3a98866676e0d178..fd14cc4226323b331a22c09ea35724748a07f6b7 100644 (file)
@@ -120,6 +120,67 @@ describe('Project tests', function() {
         });
     });
 
+    it('creates a project without and with description', function() {
+        const projName = `Test project (${Math.floor(999999 * Math.random())})`;
+        cy.loginAs(activeUser);
+
+        // Create project
+        cy.get('[data-cy=side-panel-button]').click();
+        cy.get('[data-cy=side-panel-new-project]').click();
+        cy.get('[data-cy=form-dialog]')
+            .should('contain', 'New Project')
+            .within(() => {
+                cy.get('[data-cy=name-field]').within(() => {
+                    cy.get('input').type(projName);
+                });
+            });
+        cy.get('[data-cy=form-submit-btn]').click();
+        cy.get('[data-cy=form-dialog]').should('not.exist');
+
+        const editProjectDescription = (name, type) => {
+            cy.get('[data-cy=side-panel-tree]').contains('Home Projects').click();
+            cy.get('[data-cy=project-panel] tbody tr').contains(name).rightclick();
+            cy.get('[data-cy=context-menu]').contains('Edit').click();
+            cy.get('[data-cy=form-dialog]').within(() => {
+                cy.get('div[contenteditable=true]')
+                    .click()
+                    .type(type);
+                cy.get('[data-cy=form-submit-btn]').click();
+            });
+        };
+
+        const verifyProjectDescription = (name, description) => {
+            cy.doRequest('GET', '/arvados/v1/groups', null, {
+                filters: `[["name", "=", "${name}"], ["group_class", "=", "project"]]`,
+            })
+            .its('body.items').as('projects')
+            .then(function() {
+                expect(this.projects).to.have.lengthOf(1);
+                expect(this.projects[0].description).to.equal(description);
+            });
+        };
+
+        // Edit description
+        editProjectDescription(projName, 'Test description');
+
+        // Check description is set
+        verifyProjectDescription(projName, "<p>Test description</p>");
+
+        // Clear description
+        editProjectDescription(projName, '{selectall}{backspace}');
+
+        // Check description is null
+        verifyProjectDescription(projName, null);
+
+        // Set description to contain whitespace
+        editProjectDescription(projName, '{selectall}{backspace}    x');
+        editProjectDescription(projName, '{backspace}');
+
+        // Check description is null
+        verifyProjectDescription(projName, null);
+
+    });
+
     it('creates new project on home project and then a subproject inside it', function() {
         const createProject = function(name, parentName) {
             cy.get('[data-cy=side-panel-button]').click();
@@ -484,13 +545,16 @@ describe('Project tests', function() {
                 });
                 cy.get('[data-cy=form-submit-btn]').click();
             });
-
+        cy.get('[data-cy=form-dialog]').should("not.exist");
+        cy.get('[data-cy=snackbar]').contains('created');
+        cy.get('[data-cy=snackbar]').should("not.exist");
         cy.get('[data-cy=side-panel-tree]').contains('Projects').click();
-        cy.get('[data-cy=project-panel]').contains(projectName).rightclick();
+        cy.waitForDom();
+        cy.get('[data-cy=project-panel]').contains(projectName).should('be.visible').rightclick();
         cy.get('[data-cy=context-menu]').contains('Copy to clipboard').click();
         cy.window().then((win) => (
             win.navigator.clipboard.readText().then((text) => {
-                expect(text).to.match(/https\:\/\/localhost\:[0-9]+\/projects\/[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{15}/,);
+                expect(text).to.match(/https\:\/\/127\.0\.0\.1\:[0-9]+\/projects\/[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{15}/,);
             })
         ));