+
+ // Open project edit via breadcrumbs
+ cy.get('[data-cy=breadcrumbs]').contains(projName).rightclick();
+ cy.get('[data-cy=context-menu]').contains('Edit').click();
+ cy.get('[data-cy=form-dialog]').within(() => {
+ cy.get('[data-cy=resource-properties-list]').within(() => {
+ cy.get('div[role=button]').contains('Color: Magenta');
+ cy.get('div[role=button]').contains('Color: Pink');
+ cy.get('div[role=button]').contains('Color: Yellow');
+ });
+ });
+ // Add another property
+ cy.get('[data-cy=resource-properties-form]').within(() => {
+ cy.get('[data-cy=property-field-key]').within(() => {
+ cy.get('input').type('Animal');
+ });
+ cy.get('[data-cy=property-field-value]').within(() => {
+ cy.get('input').type('Dog');
+ });
+ cy.root().submit();
+ });
+ cy.get('[data-cy=form-submit-btn]').click();
+ // Reopen edit via breadcrumbs and verify properties
+ cy.get('[data-cy=breadcrumbs]').contains(projName).rightclick();
+ cy.get('[data-cy=context-menu]').contains('Edit').click();
+ cy.get('[data-cy=form-dialog]').within(() => {
+ cy.get('[data-cy=resource-properties-list]').within(() => {
+ cy.get('div[role=button]').contains('Color: Magenta');
+ cy.get('div[role=button]').contains('Color: Pink');
+ cy.get('div[role=button]').contains('Color: Yellow');
+ cy.get('div[role=button]').contains('Animal: Dog');
+ });
+ });
+ });
+
+ 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();
+
+ 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);
+