+
+ test "job validation fails when collection uuid found in script_parameters" do
+ bad_params = {
+ script_parameters: {
+ 'input' => {
+ 'param1' => 'the collection uuid zzzzz-4zz18-012345678901234'
+ }
+ }
+ }
+ assert_raises(ActiveRecord::RecordInvalid,
+ "created job with a collection uuid in script_parameters") do
+ job = Job.create!(job_attrs(bad_params))
+ end
+ end
+
+ test "job validation succeeds when no collection uuid in script_parameters" do
+ good_params = {
+ script_parameters: {
+ 'arg1' => 'foo',
+ 'arg2' => [ 'bar', 'baz' ],
+ 'arg3' => {
+ 'a' => 1,
+ 'b' => [2, 3, 4],
+ }
+ }
+ }
+ job = Job.create!(job_attrs(good_params))
+ assert job.valid?
+ end
+
+ test 'update job uuid tag in internal.git when version changes' do
+ authorize_with :active
+ j = jobs :queued
+ j.update_attributes repository: 'active/foo', script_version: 'b1'
+ assert_equal('1de84a854e2b440dc53bf42f8548afa4c17da332',
+ internal_tag(j.uuid))
+ j.update_attributes repository: 'active/foo', script_version: 'master'
+ assert_equal('077ba2ad3ea24a929091a9e6ce545c93199b8e57',
+ internal_tag(j.uuid))
+ end
+
+ test 'script_parameters_digest is independent of key order' do
+ j1 = Job.new(job_attrs(script_parameters: {'a' => 'a', 'ddee' => {'d' => 'd', 'e' => 'e'}}))
+ j2 = Job.new(job_attrs(script_parameters: {'ddee' => {'e' => 'e', 'd' => 'd'}, 'a' => 'a'}))
+ assert j1.valid?
+ assert j2.valid?
+ assert_equal(j1.script_parameters_digest, j2.script_parameters_digest)
+ end
+
+ test 'job fixtures have correct script_parameters_digest' do
+ Job.all.each do |j|
+ d = j.script_parameters_digest
+ assert_equal(j.update_script_parameters_digest, d,
+ "wrong script_parameters_digest for #{j.uuid}")
+ end
+ end