From af3a38d81374f70d15134813563b7371e8e4127c Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Fri, 2 May 2014 19:41:23 -0400 Subject: [PATCH] Return empty list if no "links" supplied in api response. Add tests. --- .../app/models/arvados_resource_list.rb | 3 ++- .../test/unit/arvados_resource_list_test.rb | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 apps/workbench/test/unit/arvados_resource_list_test.rb diff --git a/apps/workbench/app/models/arvados_resource_list.rb b/apps/workbench/app/models/arvados_resource_list.rb index 329033f582..f0a164188a 100644 --- a/apps/workbench/app/models/arvados_resource_list.rb +++ b/apps/workbench/app/models/arvados_resource_list.rb @@ -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 index 0000000000..4ce67414c6 --- /dev/null +++ b/apps/workbench/test/unit/arvados_resource_list_test.rb @@ -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 -- 2.30.2