X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f4ca9ad94a6bb006d1f3c7ba207837f1736d1247..0035033f6bf6db955b116e2e0cc052bc5c79d80e:/services/api/test/functional/arvados/v1/filters_test.rb diff --git a/services/api/test/functional/arvados/v1/filters_test.rb b/services/api/test/functional/arvados/v1/filters_test.rb index 9344b0bc75..b0660f96fc 100644 --- a/services/api/test/functional/arvados/v1/filters_test.rb +++ b/services/api/test/functional/arvados/v1/filters_test.rb @@ -32,7 +32,7 @@ class Arvados::V1::FiltersTest < ActionController::TestCase filters: [['uuid', '@@', 'abcdef']], } assert_response 422 - assert_match /not supported/, json_response['errors'].join(' ') + assert_match(/not supported/, json_response['errors'].join(' ')) end test 'difficult characters in full text search' do @@ -52,7 +52,7 @@ class Arvados::V1::FiltersTest < ActionController::TestCase filters: [['any', '@@', ['abc', 'def']]], } assert_response 422 - assert_match /not supported/, json_response['errors'].join(' ') + assert_match(/not supported/, json_response['errors'].join(' ')) end test 'api responses provide timestamps with nanoseconds' do @@ -65,7 +65,7 @@ class Arvados::V1::FiltersTest < ActionController::TestCase %w(created_at modified_at).each do |attr| # Pass fixtures with null timestamps. next if item[attr].nil? - assert_match /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d.\d{9}Z$/, item[attr] + assert_match(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d.\d{9}Z$/, item[attr]) end end end @@ -95,4 +95,56 @@ class Arvados::V1::FiltersTest < ActionController::TestCase end end end + + test "full text search with count='none'" do + @controller = Arvados::V1::GroupsController.new + authorize_with :admin + + get :contents, { + format: :json, + count: 'none', + limit: 1000, + filters: [['any', '@@', Rails.configuration.uuid_prefix]], + } + + assert_response :success + + all_objects = Hash.new(0) + json_response['items'].map{|o| o['kind']}.each{|t| all_objects[t] += 1} + + assert_equal true, all_objects['arvados#group']>0 + assert_equal true, all_objects['arvados#job']>0 + assert_equal true, all_objects['arvados#pipelineInstance']>0 + assert_equal true, all_objects['arvados#pipelineTemplate']>0 + + # Perform test again mimicking a second page request with: + # last_object_class = PipelineInstance + # and hence groups and jobs should not be included in the response + # offset = 5, which means first 5 pipeline instances were already received in page 1 + # and hence the remaining pipeline instances and all other object types should be included in the response + + @test_counter = 0 # Reset executed action counter + + @controller = Arvados::V1::GroupsController.new + + get :contents, { + format: :json, + count: 'none', + limit: 1000, + offset: '5', + last_object_class: 'PipelineInstance', + filters: [['any', '@@', Rails.configuration.uuid_prefix]], + } + + assert_response :success + + second_page = Hash.new(0) + json_response['items'].map{|o| o['kind']}.each{|t| second_page[t] += 1} + + assert_equal false, second_page.include?('arvados#group') + assert_equal false, second_page.include?('arvados#job') + assert_equal true, second_page['arvados#pipelineInstance']>0 + assert_equal all_objects['arvados#pipelineInstance'], second_page['arvados#pipelineInstance']+5 + assert_equal true, second_page['arvados#pipelineTemplate']>0 + end end