Merge branch '2035-arv-mount-tags-folders' into origin-2035-arv-mount-tags-folders
[arvados.git] / services / api / test / unit / link_test.rb
1 require 'test_helper'
2
3 class LinkTest < ActiveSupport::TestCase
4   fixtures :all
5
6   setup do
7     Thread.current[:user] = users(:active)
8   end
9
10   test 'name links with the same tail_uuid must be unique' do
11     a = Link.create!(tail_uuid: groups(:afolder).uuid,
12                      head_uuid: specimens(:owned_by_active_user).uuid,
13                      link_class: 'name',
14                      name: 'foo')
15     assert a.valid?, a.errors.to_s
16     assert_raises ActiveRecord::RecordNotUnique do
17       b = Link.create!(tail_uuid: groups(:afolder).uuid,
18                        head_uuid: specimens(:owned_by_active_user).uuid,
19                        link_class: 'name',
20                        name: 'foo')
21     end
22   end
23
24   test 'name links with different tail_uuid need not be unique' do
25     a = Link.create!(tail_uuid: groups(:afolder).uuid,
26                      head_uuid: specimens(:owned_by_active_user).uuid,
27                      link_class: 'name',
28                      name: 'foo')
29     assert a.valid?, a.errors.to_s
30     b = Link.create!(tail_uuid: groups(:asubfolder).uuid,
31                      head_uuid: specimens(:owned_by_active_user).uuid,
32                      link_class: 'name',
33                      name: 'foo')
34     assert b.valid?, b.errors.to_s
35     assert_not_equal(a.uuid, b.uuid,
36                      "created two links and got the same uuid back.")
37   end
38
39   [nil, '', false].each do |name|
40     test "name links cannot have name=#{name.inspect}" do
41       a = Link.create(tail_uuid: groups(:afolder).uuid,
42                       head_uuid: specimens(:owned_by_active_user).uuid,
43                       link_class: 'name',
44                       name: name)
45       assert a.invalid?, "invalid name was accepted as valid?"
46     end
47   end
48 end