2872: Merge branch 'master' into 2872-folder-nav
[arvados.git] / apps / workbench / test / unit / arvados_resource_list_test.rb
index 4ce67414c62ce527866ece2af61b99ecda0650c9..fa4f9c5697affc09c685f4ecca2ecd89c1509c2a 100644 (file)
@@ -10,11 +10,46 @@ class ResourceListTest < ActiveSupport::TestCase
 
   test 'links_for on non-empty resource list' do
     use_token :active
-    results = Group.find(api_fixture('groups')['afolder']['uuid']).contents(include_linked: true)
+    results = Group.find(api_fixture('groups')['aproject']['uuid']).contents(include_linked: true)
     assert_equal [], results.links_for(api_fixture('users')['active']['uuid'])
     assert_equal [], results.links_for(api_fixture('jobs')['running_cancelled']['uuid'])
     assert_equal [], results.links_for(api_fixture('jobs')['running']['uuid'], 'bogus-link-class')
     assert_equal true, results.links_for(api_fixture('jobs')['running']['uuid'], 'name').any?
   end
 
+  test 'links_for returns all link classes (simulated results)' do
+    project_uuid = api_fixture('groups')['aproject']['uuid']
+    specimen_uuid = api_fixture('specimens')['in_aproject']['uuid']
+    api_response = {
+      kind: 'arvados#specimenList',
+      links: [{kind: 'arvados#link',
+                uuid: 'zzzzz-o0j2j-asdfasdfasdfas0',
+                tail_uuid: project_uuid,
+                head_uuid: specimen_uuid,
+                link_class: 'name',
+                name: 'Alice'},
+              {kind: 'arvados#link',
+                uuid: 'zzzzz-o0j2j-asdfasdfasdfas1',
+                tail_uuid: project_uuid,
+                head_uuid: specimen_uuid,
+                link_class: 'foo',
+                name: 'Bob'},
+              {kind: 'arvados#link',
+                uuid: 'zzzzz-o0j2j-asdfasdfasdfas2',
+                tail_uuid: project_uuid,
+                head_uuid: specimen_uuid,
+                link_class: nil,
+                name: 'Clydesdale'}],
+      items: [{kind: 'arvados#specimen',
+                uuid: specimen_uuid}]
+    }
+    arl = ArvadosResourceList.new
+    arl.results = ArvadosApiClient.new.unpack_api_response(api_response)
+    assert_equal(['name', 'foo', nil],
+                 (arl.
+                  links_for(specimen_uuid).
+                  collect { |x| x.link_class }),
+                 "Expected links_for to return all link_classes")
+  end
+
 end