From 660ebe707d2f7c28648b38ff9be826622fbefd39 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Thu, 24 Apr 2014 15:37:45 -0400 Subject: [PATCH] Fix & test edge cases (no script_parameters), fix pipeline instance fixture UUIDs --- services/api/app/models/pipeline_instance.rb | 2 +- .../api/test/fixtures/pipeline_instances.yml | 19 +++++++++- .../api/test/unit/pipeline_instance_test.rb | 36 ++++++++++++------- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/services/api/app/models/pipeline_instance.rb b/services/api/app/models/pipeline_instance.rb index d314885cd3..ca4b69c62a 100644 --- a/services/api/app/models/pipeline_instance.rb +++ b/services/api/app/models/pipeline_instance.rb @@ -47,7 +47,7 @@ class PipelineInstance < ArvadosModel all_components_have_input = true self.components.each do |name, component| - component['script_parameters'].each do |parametername, parameter| + component['script_parameters'].andand.each do |parametername, parameter| parameter = { 'value' => parameter } unless parameter.is_a? Hash if parameter['value'].nil? and parameter['required'] if parameter['output_of'] diff --git a/services/api/test/fixtures/pipeline_instances.yml b/services/api/test/fixtures/pipeline_instances.yml index 931eb68f60..aa353952a9 100644 --- a/services/api/test/fixtures/pipeline_instances.yml +++ b/services/api/test/fixtures/pipeline_instances.yml @@ -1,3 +1,20 @@ new_pipeline: - uuid: zzzzz-xxxxx-f4gneyn6br1xize + uuid: zzzzz-d1hrv-f4gneyn6br1xize owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz + +has_component_with_no_script_parameters: + uuid: zzzzz-d1hrv-1xfj6xkicf2muk2 + owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz + components: + foo: + script: foo + script_version: master + script_parameters: {} + +has_component_with_empty_script_parameters: + uuid: zzzzz-d1hrv-jq16l10gcsnyumo + owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz + components: + foo: + script: foo + script_version: master diff --git a/services/api/test/unit/pipeline_instance_test.rb b/services/api/test/unit/pipeline_instance_test.rb index dfda3cc9c8..7b618140d1 100644 --- a/services/api/test/unit/pipeline_instance_test.rb +++ b/services/api/test/unit/pipeline_instance_test.rb @@ -13,7 +13,7 @@ class PipelineInstanceTest < ActiveSupport::TestCase Thread.current[:user] = users(:admin) pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::New, pi.state, 'expected state to be New for new pipeline' assert !pi.active, 'expected active to be false for a new pipeline' assert !pi.success, 'expected success to be false for a new pipeline' @@ -29,7 +29,7 @@ class PipelineInstanceTest < ActiveSupport::TestCase pi.components['first'] = component components = pi.components pi.update_attribute 'components', pi.components - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::New, pi.state, 'expected state to be New after adding component with input' assert_equal pi.components.size, 1, 'expected one component' assert !pi.active, 'expected active to be false after update' @@ -40,7 +40,7 @@ class PipelineInstanceTest < ActiveSupport::TestCase pi.components['first'] = component components = pi.components pi.update_attribute 'components', pi.components - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::Ready, pi.state, 'expected state to be Ready after adding component with input' assert_equal pi.components.size, 1, 'expected one component' assert !pi.active, 'expected active to be false after update' @@ -51,7 +51,7 @@ class PipelineInstanceTest < ActiveSupport::TestCase pi.components['first'] = component components = pi.components pi.update_attribute 'components', pi.components - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::Ready, pi.state, 'expected state to be Ready after adding component with input' assert_equal pi.components.size, 1, 'expected one component' assert !pi.active, 'expected active to be false after update' @@ -59,49 +59,49 @@ class PipelineInstanceTest < ActiveSupport::TestCase pi.active = true pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::RunningOnServer, pi.state, 'expected state to be RunningOnServer after updating active to true' assert pi.active, 'expected active to be true after update' assert !pi.success, 'expected success to be false for a new pipeline' pi.success = false pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::Failed, pi.state, 'expected state to be Failed after updating success to false' assert !pi.active, 'expected active to be false after update' assert !pi.success, 'expected success to be false for a new pipeline' pi.state = PipelineInstance::RunningOnServer pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::RunningOnServer, pi.state, 'expected state to be RunningOnServer after updating state to RunningOnServer' assert pi.active, 'expected active to be true after update' assert !pi.success, 'expected success to be alse after update' pi.state = PipelineInstance::Paused pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::Paused, pi.state, 'expected state to be Paused after updating state to Paused' assert !pi.active, 'expected active to be false after update' assert !pi.success, 'expected success to be false after update' pi.state = PipelineInstance::Complete pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::Complete, pi.state, 'expected state to be Complete after updating state to Complete' assert !pi.active, 'expected active to be false after update' assert pi.success, 'expected success to be true after update' pi.state = 'bogus' pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::Complete, pi.state, 'expected state to be unchanged with set to a bogus value' assert !pi.active, 'expected active to be false after update' assert pi.success, 'expected success to be true after update' pi.state = PipelineInstance::Failed pi.save - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::Failed, pi.state, 'expected state to be Failed after updating state to Failed' assert !pi.active, 'expected active to be false after update' assert !pi.success, 'expected success to be false after update' @@ -120,11 +120,23 @@ class PipelineInstanceTest < ActiveSupport::TestCase Thread.current[:user] = users(:admin) pi.update_attribute 'components', pi.components - pi = PipelineInstance.find_by_uuid 'zzzzz-xxxxx-f4gneyn6br1xize' + pi = PipelineInstance.find_by_uuid 'zzzzz-d1hrv-f4gneyn6br1xize' assert_equal PipelineInstance::New, pi.state, 'expected state to be New after adding component with input' assert_equal pi.components.size, 2, 'expected two components' assert !pi.active, 'expected active to be false after update' assert !pi.success, 'expected success to be false for a new pipeline' end + [:has_component_with_no_script_parameters, + :has_component_with_empty_script_parameters].each do |pi_name| + test "update pipeline that #{pi_name}" do + pi = pipeline_instances pi_name + + Thread.current[:user] = users(:active) + # Make sure we go through the "active_changed? and active" code: + pi.update_attributes active: true + pi.update_attributes active: false + assert_equal PipelineInstance::Ready, pi.state + end + end end -- 2.30.2