4015: test recording collection hashes for pipeline inputs
authorTim Pierce <twp@curoverse.com>
Thu, 23 Oct 2014 21:00:54 +0000 (17:00 -0400)
committerTim Pierce <twp@curoverse.com>
Thu, 23 Oct 2014 21:02:10 +0000 (17:02 -0400)
apps/workbench/test/integration/pipeline_instances_test.rb
services/api/test/fixtures/pipeline_templates.yml

index a941389c00dd0ff67b7371caed561677b0fa2ad7..4e53db7783ffdfc560ccb0011a70244ec41737bd 100644 (file)
@@ -117,12 +117,55 @@ class PipelineInstancesTest < ActionDispatch::IntegrationTest
     create_and_run_pipeline_in_aproject true
   end
 
-  # Create a pipeline instance from within a project and run
+  # Create a pipeline instance from without a project
   test 'Run a pipeline from dashboard' do
     visit page_with_token('active_trustedclient')
     create_and_run_pipeline_in_aproject false
   end
 
+  # Test that the portable_data_hash is recorded when choosing an
+  # input collection for a pipeline
+  test 'pipeline input collections are recorded with portable_data_hash' do
+    visit page_with_token('active_trustedclient')
+
+    template = api_fixture('pipeline_templates')['simple_pipeline']
+
+    visit '/pipeline_templates'
+    within('tr', text: 'Pipeline Template With Collection Input') do
+      find('a,button', text: 'Run').click
+    end
+
+    # project chooser
+    project = api_fixture('groups')['aproject']
+    within('.modal-dialog') do
+      find('.selectable', text: 'A Project').click
+      find('button', text: 'Choose').click
+    end
+
+    # find the collection input field
+    input = page.all('a', text: 'Choose').select { |a|
+      a[:href] =~ /Choose.a.dataset.for.foo.template.input/
+    }
+    assert_not_empty input
+    input.first.click
+
+    # Select a collection
+    col = api_fixture('collections')['foo_collection_in_aproject']
+    within('.modal-dialog') do
+      find('div', text: col['name']).click
+      find('button', text: 'OK').click
+    end
+
+    # The collection's portable_data_hash, name, and uuid should have
+    # been recorded, respectively, as the value, selection_name and selection_uuid
+    # for this component's input script_parameter.
+    api_response = JSON.parse(find('div#advanced_api_response pre').text)
+    input_params = api_response['components']['part-one']['script_parameters']['input']
+    assert_equal input_params['value'], col['portable_data_hash']
+    assert_equal input_params['selection_name'], col['name']
+    assert_equal input_params['selection_uuid'], col['uuid']
+  end
+
   test 'view pipeline with job and see graph' do
     visit page_with_token('active_trustedclient')
 
index 31ebb977dc25272a60d9d3580c265e5ef2d0e2ba..2f1e43e31c2e9e7ea23d1b9550ffe2236d22c634 100644 (file)
@@ -1,3 +1,23 @@
+simple_pipeline:
+  uuid: zzzzz-p5p6p-hrfcwbrc62fj0kq
+  owner_uuid: zzzzz-j7d0g-v955i6s2oi1cbso
+  created_at: 2014-10-23 16:46:27 -0400
+  updated_at: 2014-10-23 16:46:27 -0400
+  modified_at: 2014-10-23 16:46:27 -0400
+  modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+  modified_by_user_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+  name: Pipeline Template With Collection Input
+  components:
+    foo_component:
+      script: foo
+      script_version: master
+      script_parameters:
+        input:
+          required: true
+          dataclass: Collection
+          title: "simple pipeline input"
+          description: "Collection input for simple pipeline"
+
 two_part:
   uuid: zzzzz-p5p6p-aox0k0ofxrystgw
   owner_uuid: zzzzz-j7d0g-v955i6s2oi1cbso
@@ -88,6 +108,7 @@ new_pipeline_template:
   owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
   created_at: 2014-09-14 12:00:00
   modified_at: 2014-09-16 12:00:00
+  name: Pipeline Template Newer Than Instance
   components:
     foo:
       script: foo