18123: Add tests for hide group member and rename/delete group.
authorStephen Smith <stephen@curii.com>
Wed, 1 Dec 2021 18:40:59 +0000 (13:40 -0500)
committerStephen Smith <stephen@curii.com>
Wed, 1 Dec 2021 18:40:59 +0000 (13:40 -0500)
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>

cypress/integration/group-manage.spec.js
src/views-components/data-explorer/renderers.tsx
src/views/group-details-panel/group-details-panel.tsx

index 690102c096bbb120b57d65ccd94d8591f8cdf817..b317ad3c0b392b2625d4ed9b7996ca4bf3d6b392 100644 (file)
@@ -6,6 +6,7 @@ describe('Group manage tests', function() {
     let activeUser;
     let adminUser;
     let otherUser;
+    const groupName = `Test group (${Math.floor(999999 * Math.random())})`;
 
     before(function() {
         // Only set up common users once. These aren't set up as aliases because
@@ -35,7 +36,6 @@ describe('Group manage tests', function() {
     });
 
     it('creates a new group', function() {
-        const groupName = `Test group (${Math.floor(999999 * Math.random())})`;
         cy.loginAs(activeUser);
 
         // Navigate to Groups
@@ -104,7 +104,52 @@ describe('Group manage tests', function() {
             });
     });
 
+    it('unhides users', function() {
+        // Must use admin user to have manage permission on user
+        cy.loginAs(adminUser);
+        cy.get('[data-cy=side-panel-tree]').contains('Groups').click();
+        cy.get('[data-cy=groups-panel-data-explorer]').contains(groupName).click();
+
+        // Check that other user is hidden
+        cy.get('[data-cy=group-details-permissions-tab]').click();
+        cy.get('[data-cy=group-permissions-data-explorer]')
+            .should('not.contain', 'Other User')
+        cy.get('[data-cy=group-details-members-tab]').click();
+
+        // Test unhide
+        cy.get('[data-cy=group-members-data-explorer]')
+            .contains('Other User')
+            .parents('tr')
+            .within(() => {
+                cy.get('[data-cy=user-hidden-checkbox]').click();
+            });
+        // Check that other user is visible
+        cy.get('[data-cy=group-details-permissions-tab]').click();
+        cy.get('[data-cy=group-permissions-data-explorer]')
+            .contains('Other User')
+            .parents('tr')
+            .within(() => {
+                cy.contains('Read');
+            });
+        // Test re-hide
+        cy.get('[data-cy=group-details-members-tab]').click();
+        cy.get('[data-cy=group-members-data-explorer]')
+            .contains('Other User')
+            .parents('tr')
+            .within(() => {
+                cy.get('[data-cy=user-hidden-checkbox]').click();
+            });
+        // Check that other user is hidden
+        cy.get('[data-cy=group-details-permissions-tab]').click();
+        cy.get('[data-cy=group-permissions-data-explorer]')
+            .should('not.contain', 'Other User')
+    });
+
     it('removes users from the group', function() {
+        cy.loginAs(activeUser);
+        cy.get('[data-cy=side-panel-tree]').contains('Groups').click();
+        cy.get('[data-cy=groups-panel-data-explorer]').contains(groupName).click();
+
         // Remove other user
         cy.get('[data-cy=group-members-data-explorer]')
             .contains('Other User')
@@ -115,6 +160,49 @@ describe('Group manage tests', function() {
         cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
         cy.get('[data-cy=group-members-data-explorer]')
             .should('not.contain', 'Other User');
+    });
+
+    it('renames the group', function() {
+        // Navigate to Groups
+        cy.get('[data-cy=side-panel-tree]').contains('Groups').click();
+
+        // Open rename dialog
+        cy.get('[data-cy=groups-panel-data-explorer]')
+            .contains(groupName)
+            .rightclick();
+        cy.get('[data-cy=context-menu]')
+            .contains('Rename')
+            .click();
 
+        // Rename the group
+        cy.get('[data-cy=form-dialog]')
+            .should('contain', 'Edit Project')
+            .within(() => {
+                cy.get('input[name=name]').clear().type(groupName + ' (renamed)');
+                cy.get('button[type=submit]').click();
+            });
+
+        // Check that the group was renamed
+        cy.get('[data-cy=groups-panel-data-explorer]')
+            .contains(groupName + ' (renamed)');
     });
+
+    it('deletes the group', function() {
+        // Navigate to Groups
+        cy.get('[data-cy=side-panel-tree]').contains('Groups').click();
+
+        // Delete the group
+        cy.get('[data-cy=groups-panel-data-explorer]')
+            .contains(groupName + ' (renamed)')
+            .rightclick();
+        cy.get('[data-cy=context-menu]')
+            .contains('Remove')
+            .click();
+        cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
+
+        // Check that the group was deleted
+        cy.get('[data-cy=groups-panel-data-explorer]')
+            .should('not.contain', groupName + ' (renamed)');
+    });
+
 });
index 457de5043cc6e59f3333f2cda57d949caf091f5e..e87c9f33a7dafbd2ee4fe9253c9ea93dd7b162a0 100644 (file)
@@ -218,6 +218,7 @@ export const ResourceLinkTailIsActive = connect(
 const renderIsHidden = (props: { memberLinkUuid: string, permissionLinkUuid: string, hidden: boolean, setMemberIsHidden: (memberLinkUuid: string, permissionLinkUuid: string, hide: boolean) => void }) => {
     if (props.memberLinkUuid) {
         return <Checkbox
+                data-cy="user-hidden-checkbox"
                 color="primary"
                 checked={props.hidden}
                 onClick={() => props.setMemberIsHidden(props.memberLinkUuid, props.permissionLinkUuid, !props.hidden)} />;
index a44304c42290c5ec574c8e70067ec0532bfa5bb7..932005a7bf3efcd7bcb3b7b07b772c202a518674 100644 (file)
@@ -167,8 +167,8 @@ export const GroupDetailsPanel = connect(
             return (
                 <Paper>
                   <Tabs value={value} onChange={this.handleChange} variant="fullWidth">
-                      <Tab label="MEMBERS" />
-                      <Tab label="PERMISSIONS" />
+                      <Tab data-cy="group-details-members-tab" label="MEMBERS" />
+                      <Tab data-cy="group-details-permissions-tab" label="PERMISSIONS" />
                   </Tabs>
                   {value === 0 &&
                       <DataExplorer
@@ -199,6 +199,7 @@ export const GroupDetailsPanel = connect(
                   {value === 1 &&
                       <DataExplorer
                           id={GROUP_DETAILS_PERMISSIONS_PANEL_ID}
+                          data-cy="group-permissions-data-explorer"
                           onRowClick={noop}
                           onRowDoubleClick={noop}
                           onContextMenu={noop}