11652: use "recursive=true" in workbench search requests
authorradhika <radhika@curoverse.com>
Tue, 6 Jun 2017 17:06:19 +0000 (13:06 -0400)
committerradhika <radhika@curoverse.com>
Tue, 6 Jun 2017 17:06:19 +0000 (13:06 -0400)
apps/workbench/app/controllers/search_controller.rb
apps/workbench/app/models/arvados_base.rb
apps/workbench/app/models/arvados_resource_list.rb
apps/workbench/test/controllers/search_controller_test.rb

index 2511ab08188fbb4aa2e17d250b1feecafff03bd9..3fa78365b9f35c98b5b12a1476634359ee875811 100644 (file)
@@ -15,6 +15,7 @@ class SearchController < ApplicationController
     end
     @objects = search_what.contents(limit: @limit,
                                     offset: @offset,
+                                    recursive: true,
                                     count: 'none',
                                     last_object_class: params["last_object_class"],
                                     filters: @filters)
@@ -24,6 +25,7 @@ class SearchController < ApplicationController
   def next_page_href with_params={}
     super with_params.merge(last_object_class: @objects.last.class.to_s,
                             project_uuid: params[:project_uuid],
+                            recursive: true,
                             count: 'none',
                             filters: @filters.to_json)
   end
index f06193c3ecfaeb307ae0a2a86009270b9a4b266c..58e3fb7a5c5b6133d1746d95126ed8ef79b474a2 100644 (file)
@@ -156,6 +156,10 @@ class ArvadosBase < ActiveRecord::Base
     ArvadosResourceList.new(self).include_trash(*args)
   end
 
+  def self.recursive(*args)
+    ArvadosResourceList.new(self).recursive(*args)
+  end
+
   def self.eager(*args)
     ArvadosResourceList.new(self).eager(*args)
   end
index 8ae48d82443587f2d042d70327d802ed8f466150..dea2f30d1de523176a04df8dd5e06a033855d623 100644 (file)
@@ -26,6 +26,11 @@ class ArvadosResourceList
     self
   end
 
+  def recursive(option=nil)
+    @recursive = option
+    self
+  end
+
   def limit(max_results)
     if not max_results.nil? and not max_results.is_a? Integer
       raise ArgumentError("argument to limit() must be an Integer or nil")
index a09d966a184c219cd5fad8a5dc69abea06d1a86c..2156c7016066b8043d42dc53c452c4223222cb75 100644 (file)
@@ -39,4 +39,27 @@ class SearchControllerTest < ActionController::TestCase
     assert_empty(json_response['content'],
                  'search results for empty project should be empty')
   end
+
+  test 'search results for aproject and verify recursive contents' do
+    xhr :get, :choose, {
+      format: :json,
+      partial: true,
+      project_uuid: api_fixture('groups')['aproject']['uuid'],
+    }, session_for(:active)
+    assert_response :success
+    assert_not_empty(json_response['content'],
+                 'search results for empty project should be empty')
+    items = []
+    json_response['content'].scan /<div[^>]+>/ do |div_tag|
+      div_tag.scan(/\ data-object-uuid=\"(.*?)\"/).each do |uuid,|
+        items << uuid
+      end
+    end
+
+    assert_includes(items, api_fixture('collections')['collection_to_move_around_in_aproject']['uuid'])
+    assert_includes(items, api_fixture('groups')['asubproject']['uuid'])
+    assert_includes(items, api_fixture('collections')['baz_collection_name_in_asubproject']['uuid'])
+    assert_includes(items,
+      api_fixture('groups')['subproject_in_asubproject_with_same_name_as_one_in_active_user_home']['uuid'])
+  end
 end