3 class CollectionsControllerTest < ActionController::TestCase
4 include PipelineInstancesHelper
6 test 'provenance graph' do
9 obj = find_fixture Collection, "graph_test_collection3"
11 provenance = obj.provenance.stringify_keys
13 [obj[:portable_data_hash]].each do |k|
14 assert_not_nil provenance[k], "Expected key #{k} in provenance set"
17 prov_svg = ProvenanceHelper::create_provenance_graph(provenance, "provenance_svg",
18 {:request => RequestDuck,
19 :direction => :bottom_up,
20 :combine_jobs => :script_only})
22 stage1 = find_fixture Job, "graph_stage1"
23 stage3 = find_fixture Job, "graph_stage3"
24 previous_job_run = find_fixture Job, "previous_job_run"
26 obj_id = obj.portable_data_hash.gsub('+', '\\\+')
27 stage1_out = stage1.output.gsub('+', '\\\+')
28 stage1_id = "#{stage1.script}_#{Digest::MD5.hexdigest(stage1[:script_parameters].to_json)}"
29 stage3_id = "#{stage3.script}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
31 assert /#{obj_id}->#{stage3_id}/.match(prov_svg)
33 assert /#{stage3_id}->#{stage1_out}/.match(prov_svg)
35 assert /#{stage1_out}->#{stage1_id}/.match(prov_svg)
39 test 'used_by graph' do
41 obj = find_fixture Collection, "graph_test_collection1"
43 used_by = obj.used_by.stringify_keys
45 used_by_svg = ProvenanceHelper::create_provenance_graph(used_by, "used_by_svg",
46 {:request => RequestDuck,
47 :direction => :top_down,
48 :combine_jobs => :script_only,
51 stage2 = find_fixture Job, "graph_stage2"
52 stage3 = find_fixture Job, "graph_stage3"
54 stage2_id = "#{stage2.script}_#{Digest::MD5.hexdigest(stage2[:script_parameters].to_json)}"
55 stage3_id = "#{stage3.script}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
57 obj_id = obj.portable_data_hash.gsub('+', '\\\+')
58 stage3_out = stage3.output.gsub('+', '\\\+')
60 assert /#{obj_id}->#{stage2_id}/.match(used_by_svg)
62 assert /#{obj_id}->#{stage3_id}/.match(used_by_svg)
64 assert /#{stage3_id}->#{stage3_out}/.match(used_by_svg)
66 assert /#{stage3_id}->#{stage3_out}/.match(used_by_svg)