Merge branch 'master' of git.clinicalfuture.com:arvados
[arvados.git] / apps / workbench / test / functional / pipeline_instances_controller_test.rb
1 require 'test_helper'
2
3 class PipelineInstancesControllerTest < ActionController::TestCase
4   def create_instance_long_enough_to
5     pt_fixture = api_fixture('pipeline_templates')['two_part']
6     post :create, {
7       pipeline_instance: {
8         pipeline_template_uuid: pt_fixture['uuid']
9       },
10       format: :json
11     }, session_for(:active)
12     assert_response :success
13     pi_uuid = assigns(:object).uuid
14     assert_not_nil assigns(:object)
15     yield pi_uuid, pt_fixture
16     post :destroy, {
17       id: pi_uuid,
18       format: :json
19     }
20     assert_response :success
21   end
22
23   test "pipeline instance components populated after create" do
24     create_instance_long_enough_to do |new_instance_uuid, template_fixture|
25       assert_equal(template_fixture['components'].to_json,
26                    assigns(:object).components.to_json)
27     end
28   end
29
30   test "update script_parameters one at a time using merge param" do
31     create_instance_long_enough_to do |new_instance_uuid, template_fixture|
32       post :update, {
33         id: new_instance_uuid,
34         pipeline_instance: {
35           components: {
36             "part-two" => {
37               script_parameters: {
38                 integer_with_value: {
39                   value: 9
40                 },
41                 plain_string: {
42                   value: 'quux'
43                 },
44               }
45             }
46           }
47         },
48         merge: true,
49         format: :json
50       }, session_for(:active)
51       assert_response :success
52       assert_not_nil assigns(:object)
53       orig_params = template_fixture['components']['part-two']['script_parameters']
54       new_params = assigns(:object).components[:'part-two'][:script_parameters]
55       orig_params.keys.each do |k|
56         unless %w(integer_with_value plain_string).index(k)
57           assert_equal orig_params[k].to_json, new_params[k.to_sym].to_json
58         end
59       end
60     end
61   end
62 end