X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b91db14a4dced9d6ea124e86be3c796e6f2c8e8c..8e4fc832108d9cae376d3eb1b9e62f9d6b468501:/services/api/test/unit/link_test.rb diff --git a/services/api/test/unit/link_test.rb b/services/api/test/unit/link_test.rb index 72d6017ce7..c04addd10b 100644 --- a/services/api/test/unit/link_test.rb +++ b/services/api/test/unit/link_test.rb @@ -4,7 +4,7 @@ class LinkTest < ActiveSupport::TestCase fixtures :all setup do - Thread.current[:user] = users(:active) + set_user_from_auth :admin_trustedclient end test 'name links with the same tail_uuid must be unique' do @@ -37,12 +37,67 @@ class LinkTest < ActiveSupport::TestCase end [nil, '', false].each do |name| - test "name links cannot have name=#{name.inspect}" do + test "name links cannot be renamed to name=#{name.inspect}" do + a = Link.create!(tail_uuid: groups(:afolder).uuid, + head_uuid: specimens(:owned_by_active_user).uuid, + link_class: 'name', + name: 'temp') + a.name = name + assert a.invalid?, "invalid name was accepted as valid?" + end + + test "name links cannot be created with name=#{name.inspect}" do a = Link.create(tail_uuid: groups(:afolder).uuid, head_uuid: specimens(:owned_by_active_user).uuid, link_class: 'name', name: name) - assert a.invalid?, "invalid name was accepted as valid?" + if a.name and !a.name.empty? + assert a.valid?, "name automatically assigned, but record not valid?" + else + assert a.invalid?, "invalid name was accepted as valid?" + end + end + end + + test "cannot delete an object referenced by links" do + ob = Specimen.create + link = Link.create(tail_uuid: users(:active).uuid, + head_uuid: ob.uuid, + link_class: 'test', + name: 'test') + assert_raises(ActiveRecord::DeleteRestrictionError, + "should not delete #{ob.uuid} with link #{link.uuid}") do + ob.destroy end end + + test "assign sequential generic name links" do + group = Group.create!(group_class: 'folder') + ob = Specimen.create! + 25.times do |n| + link = Link.create!(link_class: 'name', + tail_uuid: group.uuid, head_uuid: ob.uuid) + expect_name = 'New specimen' + (n==0 ? "" : " (#{n})") + assert_equal expect_name, link.name, "Expected sequential generic names" + end + end + + test "assign sequential generic name links for a two-word model" do + group = Group.create!(group_class: 'folder') + ob = VirtualMachine.create! + 5.times do |n| + link = Link.create!(link_class: 'name', + tail_uuid: group.uuid, head_uuid: ob.uuid) + expect_name = 'New virtual machine' + (n==0 ? "" : " (#{n})") + assert_equal expect_name, link.name, "Expected sequential generic names" + end + end + + test "cannot assign sequential generic name links for a bogus uuid type" do + group = Group.create!(group_class: 'folder') + link = Link.create(link_class: 'name', + tail_uuid: group.uuid, + head_uuid: 'zzzzz-abcde-123451234512345') + assert link.invalid?, "gave a bogus uuid, got automatic name #{link.name}" + end end