Merge branch '17436-Favorites-in-workflow-picker-dialog-is-different-to-favorites'
[arvados.git] / cypress / integration / favorites.spec.js
index 4cfb832a5367aa0bc0f93fb98280173439c70eb8..c745e267174050a4c901d323d37ac0bf90921f90 100644 (file)
@@ -28,54 +28,9 @@ describe('Favorites tests', function () {
         cy.clearLocalStorage()
     });
 
-    const createSharedProjects = () => {
-        cy.createGroup(adminUser.token, {
-            name: `my-shared-writable-project ${Math.floor(Math.random() * 999999)}`,
-            group_class: 'project',
-        }).as('mySharedWritableProject').then(function (mySharedWritableProject) {
-            cy.contains('Refresh').click();
-            cy.get('main').contains(mySharedWritableProject.name).rightclick();
-            cy.get('[data-cy=context-menu]').within(() => {
-                cy.contains('Share').click();
-            });
-            cy.get('[id="select-permissions"]').as('selectPermissions');
-            cy.get('@selectPermissions').click();
-            cy.contains('Write').click();
-            cy.get('.sharing-dialog').as('sharingDialog');
-            cy.get('[data-cy=invite-people-field]').find('input').type(activeUser.user.email);
-            cy.get('[role=tooltip]').click();
-            cy.get('@sharingDialog').contains('Save').click();
-        });
-
-        cy.createGroup(adminUser.token, {
-            name: `my-shared-readonly-project ${Math.floor(Math.random() * 999999)}`,
-            group_class: 'project',
-        }).as('mySharedReadonlyProject').then(function (mySharedReadonlyProject) {
-            cy.contains('Refresh').click();
-            cy.get('main').contains(mySharedReadonlyProject.name).rightclick();
-            cy.get('[data-cy=context-menu]').within(() => {
-                cy.contains('Share').click();
-            });
-            cy.get('.sharing-dialog').as('sharingDialog');
-            cy.get('[data-cy=invite-people-field]').find('input').type(activeUser.user.email);
-            cy.get('[role=tooltip]').click();
-            cy.get('@sharingDialog').contains('Save').click();
-        });
-
-        cy.createGroup(activeUser.token, {
-            name: `my-project ${Math.floor(Math.random() * 999999)}`,
-            group_class: 'project',
-        }).as('myProject1');
-    };
-
-    it('checks that Public favorites does not appear under shared with me', function () {
-        cy.loginAs(adminUser);
-        cy.contains('Shared with me').click();
-        cy.get('main').contains('Public favorites').should('not.exist');
-    });
-
     it('creates and removes a public favorite', function () {
         cy.loginAs(adminUser);
+
         cy.createGroup(adminUser.token, {
             name: `my-favorite-project`,
             group_class: 'project',
@@ -91,61 +46,6 @@ describe('Favorites tests', function () {
         });
     });
 
-    it('can copy collection to favorites', () => {
-        cy.loginAs(adminUser);
-
-        createSharedProjects();
-
-        cy.createCollection(adminUser.token, {
-            name: `Test collection ${Math.floor(Math.random() * 999999)}`,
-            owner_uuid: activeUser.user.uuid,
-            manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
-        })
-            .as('testCollection');
-
-        cy.getAll('@mySharedWritableProject', '@mySharedReadonlyProject', '@myProject1', '@testCollection')
-            .then(function ([mySharedWritableProject, mySharedReadonlyProject, myProject1, testCollection]) {
-                cy.loginAs(activeUser);
-
-                cy.contains('Shared with me').click();
-
-                cy.get('main').contains(mySharedWritableProject.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Add to favorites').click();
-                });
-
-                cy.get('main').contains(mySharedReadonlyProject.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Add to favorites').click();
-                });
-
-                cy.doSearch(`${activeUser.user.uuid}`);
-
-                cy.get('main').contains(myProject1.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Add to favorites').click();
-                });
-
-                cy.contains(testCollection.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Move to').click();
-                });
-
-                cy.get('[data-cy=form-dialog]').within(function () {
-                    cy.get('[data-cy=projects-tree-favourites-tree-picker]').find('i').click();
-                    cy.contains(myProject1.name);
-                    cy.contains(mySharedWritableProject.name);
-                    cy.get('[data-cy=projects-tree-favourites-tree-picker]')
-                        .should('not.contain', mySharedReadonlyProject.name);
-                    cy.contains(mySharedWritableProject.name).click();
-                    cy.get('[data-cy=form-submit-btn]').click();
-                });
-
-                cy.doSearch(`${mySharedWritableProject.uuid}`);
-                cy.get('main').contains(testCollection.name);
-            });
-    });
-
     it('can copy selected into the collection', () => {
         cy.loginAs(adminUser);
 
@@ -154,36 +54,14 @@ describe('Favorites tests', function () {
             manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
         })
             .as('testSourceCollection').then(function (testSourceCollection) {
-                cy.contains('Refresh').click();
-                cy.get('main').contains(testSourceCollection.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Share').click();
-                });
-                cy.get('[id="select-permissions"]').as('selectPermissions');
-                cy.get('@selectPermissions').click();
-                cy.contains('Write').click();
-                cy.get('.sharing-dialog').as('sharingDialog');
-                cy.get('[data-cy=invite-people-field]').find('input').type(activeUser.user.email);
-                cy.get('[role=tooltip]').click();
-                cy.get('@sharingDialog').contains('Save').click();
+                cy.shareWith(adminUser.token, activeUser.user.uuid, testSourceCollection.uuid, 'can_read');
             });
 
         cy.createCollection(adminUser.token, {
             name: `Test target collection ${Math.floor(Math.random() * 999999)}`,
         })
             .as('testTargetCollection').then(function (testTargetCollection) {
-                cy.contains('Refresh').click();
-                cy.get('main').contains(testTargetCollection.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Share').click();
-                });
-                cy.get('[id="select-permissions"]').as('selectPermissions');
-                cy.get('@selectPermissions').click();
-                cy.contains('Write').click();
-                cy.get('.sharing-dialog').as('sharingDialog');
-                cy.get('[data-cy=invite-people-field]').find('input').type(activeUser.user.email);
-                cy.get('[role=tooltip]').click();
-                cy.get('@sharingDialog').contains('Save').click();
+                cy.shareWith(adminUser.token, activeUser.user.uuid, testTargetCollection.uuid, 'can_write');
             });
 
         cy.getAll('@testSourceCollection', '@testTargetCollection')
@@ -193,10 +71,7 @@ describe('Favorites tests', function () {
                 cy.get('.layout-pane-primary')
                     .contains('Projects').click();
 
-                cy.get('main').contains(testTargetCollection.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Add to favorites').click();
-                });
+                cy.addToFavorites(activeUser.token, activeUser.user.uuid, testTargetCollection.uuid);
 
                 cy.get('main').contains(testSourceCollection.name).click();
                 cy.get('[data-cy=collection-files-panel]').contains('bar');
@@ -224,10 +99,80 @@ describe('Favorites tests', function () {
             });
     });
 
-    it.only('can view favourites in workflow', () => {
-        cy.loginAs(adminUser);
+    it('can copy collection to favorites', () => {
+        cy.createProject({
+            owningUser: adminUser,
+            targetUser: activeUser,
+            projectName: 'mySharedWritableProject',
+            canWrite: true,
+            addToFavorites: true
+        });
+        cy.createProject({
+            owningUser: adminUser,
+            targetUser: activeUser,
+            projectName: 'mySharedReadonlyProject',
+            canWrite: false,
+            addToFavorites: true
+        });
+        cy.createProject({
+            owningUser: activeUser,
+            projectName: 'myProject1',
+            addToFavorites: true
+        });
+
+        cy.createCollection(adminUser.token, {
+            name: `Test collection ${Math.floor(Math.random() * 999999)}`,
+            owner_uuid: activeUser.user.uuid,
+            manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
+        })
+            .as('testCollection');
+
+        cy.getAll('@mySharedWritableProject', '@mySharedReadonlyProject', '@myProject1', '@testCollection')
+            .then(function ([mySharedWritableProject, mySharedReadonlyProject, myProject1, testCollection]) {
+                cy.loginAs(activeUser);
+
+                cy.doSearch(`${activeUser.user.uuid}`);
+
+                cy.contains(testCollection.name).rightclick();
+                cy.get('[data-cy=context-menu]').within(() => {
+                    cy.contains('Move to').click();
+                });
+
+                cy.get('[data-cy=form-dialog]').within(function () {
+                    cy.get('[data-cy=projects-tree-favourites-tree-picker]').find('i').click();
+                    cy.contains(myProject1.name);
+                    cy.contains(mySharedWritableProject.name);
+                    cy.get('[data-cy=projects-tree-favourites-tree-picker]')
+                        .should('not.contain', mySharedReadonlyProject.name);
+                    cy.contains(mySharedWritableProject.name).click();
+                    cy.get('[data-cy=form-submit-btn]').click();
+                });
 
-        createSharedProjects();
+                cy.doSearch(`${mySharedWritableProject.uuid}`);
+                cy.get('main').contains(testCollection.name);
+            });
+    });
+
+    it('can view favourites in workflow', () => {
+        cy.createProject({
+            owningUser: adminUser,
+            targetUser: activeUser,
+            projectName: 'mySharedWritableProject',
+            canWrite: true,
+            addToFavorites: true
+        });
+        cy.createProject({
+            owningUser: adminUser,
+            targetUser: activeUser,
+            projectName: 'mySharedReadonlyProject',
+            canWrite: false,
+            addToFavorites: true
+        });
+        cy.createProject({
+            owningUser: activeUser,
+            projectName: 'myProject1',
+            addToFavorites: true
+        });
 
         cy.getAll('@mySharedWritableProject', '@mySharedReadonlyProject', '@myProject1')
             .then(function ([mySharedWritableProject, mySharedReadonlyProject, myProject1]) {
@@ -240,17 +185,14 @@ describe('Favorites tests', function () {
                 })
                     .as('testWorkflow');
 
-                cy.contains('Shared with me').click();
-
-                cy.get('main').contains(mySharedWritableProject.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Add to favorites').click();
-                });
+                cy.createWorkflow(adminUser.token, {
+                    name: `TestWorkflow2-${Math.floor(Math.random() * 999999)}.cwl`,
+                    definition: "{     \"$graph\": [         {             \"$namespaces\": {                 \"arv\": \"http://arvados.org/cwl#\"             },             \"class\": \"Workflow\",             \"doc\": \"Detect blurriness of WSI data.\",             \"id\": \"#main\",             \"inputs\": [                 {                     \"default\": {                         \"basename\": \"3d3cb547725e72ddb442bc620adbc342+2463\",                         \"class\": \"Directory\",                         \"location\": \"keep:3d3cb547725e72ddb442bc620adbc342+2463\"                     },                     \"doc\": \"Collection containing all pipeline input images\",                     \"id\": \"#main/image_collection\",                     \"type\": \"Directory\"                 }             ],             \"outputs\": [                 {                     \"id\": \"#main/blur_report\",                     \"outputSource\": \"#main/blurdetection/report\",                     \"type\": \"Any\"                 }             ],             \"steps\": [                 {                     \"id\": \"#main/blurdetection\",                     \"in\": [                         {                             \"id\": \"#main/blurdetection/image_collection\",                             \"source\": \"#main/image_collection\"                         }                     ],                     \"out\": [                         \"#main/blurdetection/report\"                     ],                     \"run\": \"#blurdetection.cwl\"                 }             ]         },         {             \"arguments\": [                 \"--num_workers\",                 \"0\",                 \"--wsi_dir\",                 \"$(inputs.image_collection)\",                 \"--tile_out_dir\",                 \"$(runtime.outdir)\"             ],             \"baseCommand\": [                 \"python3\",                 \"/updated_blur_on_folder.py\"             ],             \"class\": \"CommandLineTool\",             \"hints\": [                 {                     \"class\": \"DockerRequirement\",                     \"dockerPull\": \"updated_score_aws:cpu2\",                     \"http://arvados.org/cwl#dockerCollectionPDH\": \"0d6702518d1408ce2c471ffec40695cf+4924\"                 },                 {                     \"class\": \"ResourceRequirement\",                     \"coresMin\": 8,                     \"ramMin\": 20000                 },                 {                     \"class\": \"http://arvados.org/cwl#RuntimeConstraints\",                     \"keep_cache\": 2000                 }             ],             \"id\": \"#blurdetection.cwl\",             \"inputs\": [                 {                     \"doc\": \"Collection containing all pipeline input images\",                     \"id\": \"#blurdetection.cwl/image_collection\",                     \"type\": \"Directory\"                 }             ],             \"outputs\": [                 {                     \"id\": \"#blurdetection.cwl/report\",                     \"outputBinding\": {                         \"glob\": \"*.csv\"                     },                     \"type\": \"Any\"                 }             ]         }     ],     \"cwlVersion\": \"v1.0\" }",
+                    owner_uuid: myProject1.uuid,
+                })
+                    .as('testWorkflow2');
 
-                cy.get('main').contains(mySharedReadonlyProject.name).rightclick();
-                cy.get('[data-cy=context-menu]').within(() => {
-                    cy.contains('Add to favorites').click();
-                });
+                cy.contains('Shared with me').click();
 
                 cy.doSearch(`${activeUser.user.uuid}`);
 
@@ -269,6 +211,21 @@ describe('Favorites tests', function () {
                         cy.get('[data-cy=projects-tree-favourites-tree-picker]').contains('Favorites').closest('ul').find('i').click();
                         cy.get('@chooseFileDialog').find(`[data-id=${mySharedWritableProject.uuid}]`);
                         cy.get('@chooseFileDialog').find(`[data-id=${mySharedReadonlyProject.uuid}]`);
+                        cy.get('button').contains('Cancel').click();
+                    });
+
+                cy.get('button').contains('Back').click();
+
+                cy.get('@testWorkflow2')
+                    .then((testWorkflow2) => {
+                        cy.get('main').contains(testWorkflow2.name).click();
+                        cy.get('button').contains('Change Workflow').click();
+                        cy.get('[data-cy=run-process-next-button]').click();
+                        cy.get('[readonly]').click();
+                        cy.get('[data-cy=choose-a-directory-dialog]').as('chooseDirectoryDialog');
+                        cy.get('[data-cy=projects-tree-favourites-tree-picker]').contains('Favorites').closest('ul').find('i').click();
+                        cy.get('@chooseDirectoryDialog').find(`[data-id=${mySharedWritableProject.uuid}]`);
+                        cy.get('@chooseDirectoryDialog').find(`[data-id=${mySharedReadonlyProject.uuid}]`);
                     });
             });
     });