17436: Fixed directory chooser added test to coverage this exception
authorDaniel Kutyła <daniel.kutyla@contractors.roche.com>
Tue, 13 Apr 2021 20:26:58 +0000 (22:26 +0200)
committerDaniel Kutyła <daniel.kutyla@contractors.roche.com>
Tue, 13 Apr 2021 20:26:58 +0000 (22:26 +0200)
Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła <daniel.kutyla@contractors.roche.com>

cypress/integration/favorites.spec.js
src/views/run-process-panel/inputs/directory-input.tsx
src/views/run-process-panel/run-process-inputs-form.tsx

index 2afdf92e5c4c11229a16009206e01027fd5e1490..eaeb66442526953617a46641af0ee5da921cfdda 100644 (file)
@@ -153,7 +153,7 @@ describe('Favorites tests', function () {
             });
     });
 
-    it('can view favourites in workflow', () => {
+    it.only('can view favourites in workflow', () => {
         cy.createProject({
             owningUser: adminUser,
             targetUser: activeUser,
@@ -185,6 +185,13 @@ describe('Favorites tests', function () {
                 })
                     .as('testWorkflow');
 
+                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.contains('Shared with me').click();
 
                 cy.doSearch(`${activeUser.user.uuid}`);
@@ -204,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}]`);
                     });
             });
     });
index 29ccd6e0ddf7d544855840fd2420fcba78e90135..f687e28dcb2afc1a96ec0fca2ba0a1c152caceca 100644 (file)
@@ -24,14 +24,18 @@ import { ERROR_MESSAGE } from '~/validators/require';
 
 export interface DirectoryInputProps {
     input: DirectoryCommandInputParameter;
+    options?: { showOnlyOwned: boolean, showOnlyWritable: boolean };
 }
-export const DirectoryInput = ({ input }: DirectoryInputProps) =>
+export const DirectoryInput = ({ input, options }: DirectoryInputProps) =>
     <Field
         name={input.id}
         commandInput={input}
         component={DirectoryInputComponent}
         format={format}
         parse={parse}
+        {...{
+            options
+        }}
         validate={getValidation(input)} />;
 
 const format = (value?: Directory) => value ? value.basename : '';
@@ -56,7 +60,9 @@ interface DirectoryInputComponentState {
 }
 
 const DirectoryInputComponent = connect()(
-    class FileInputComponent extends React.Component<GenericInputProps & DispatchProp, DirectoryInputComponentState> {
+    class FileInputComponent extends React.Component<GenericInputProps & DispatchProp & {
+        options?: { showOnlyOwned: boolean, showOnlyWritable: boolean };
+    }, DirectoryInputComponentState> {
         state: DirectoryInputComponentState = {
             open: false,
         };
@@ -113,12 +119,14 @@ const DirectoryInputComponent = connect()(
                 open={this.state.open}
                 onClose={this.closeDialog}
                 fullWidth
+                data-cy="choose-a-directory-dialog"
                 maxWidth='md'>
                 <DialogTitle>Choose a directory</DialogTitle>
                 <DialogContent>
                     <ProjectsTreePicker
                         pickerId={this.props.commandInput.id}
                         includeCollections
+                        options={this.props.options}
                         toggleItemActive={this.setDirectory} />
                 </DialogContent>
                 <DialogActions>
index 3a0afd34868c91fc7ce86727b84f3e7112e7f9b8..e6a504dbb8d2e9852cde01920d9b4398096f2c36 100644 (file)
@@ -92,7 +92,7 @@ const getInputComponent = (input: CommandInputParameter) => {
             return <FileInput options={{ showOnlyOwned: false, showOnlyWritable: false }} input={input as FileCommandInputParameter} />;
 
         case isPrimitiveOfType(input, CWLType.DIRECTORY):
-            return <DirectoryInput input={input as DirectoryCommandInputParameter} />;
+            return <DirectoryInput options={{ showOnlyOwned: false, showOnlyWritable: false }} input={input as DirectoryCommandInputParameter} />;
 
         case typeof input.type === 'object' &&
             !(input.type instanceof Array) &&