Return empty list if no "links" supplied in api response. Add tests.
authorTom Clegg <tom@curoverse.com>
Fri, 2 May 2014 23:41:23 +0000 (19:41 -0400)
committerTom Clegg <tom@curoverse.com>
Fri, 2 May 2014 23:41:23 +0000 (19:41 -0400)
apps/workbench/app/models/arvados_resource_list.rb
apps/workbench/test/unit/arvados_resource_list_test.rb [new file with mode: 0644]

index 329033f582eb4b686075e68e54295758050d38e9..f0a164188a676ab5ebd2725940c96511ab0cbc15 100644 (file)
@@ -139,9 +139,10 @@ class ArvadosResourceList
   end
 
   def links_for item_or_uuid, link_class=nil
+    return [] if !result_links
     unless @links_for_uuid
       @links_for_uuid = {}
-      results.links.each do |link|
+      result_links.each do |link|
         if link.respond_to? :head_uuid
           @links_for_uuid[link.head_uuid] ||= []
           @links_for_uuid[link.head_uuid] << link
diff --git a/apps/workbench/test/unit/arvados_resource_list_test.rb b/apps/workbench/test/unit/arvados_resource_list_test.rb
new file mode 100644 (file)
index 0000000..4ce6741
--- /dev/null
@@ -0,0 +1,20 @@
+require 'test_helper'
+
+class ResourceListTest < ActiveSupport::TestCase
+
+  test 'links_for on a resource list that does not return links' do
+    use_token :active
+    results = Specimen.all
+    assert_equal [], results.links_for(api_fixture('users')['active']['uuid'])
+  end
+
+  test 'links_for on non-empty resource list' do
+    use_token :active
+    results = Group.find(api_fixture('groups')['afolder']['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
+
+end