X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dca6cfe9750d8d1be4f3b63895b8cb73cc6c4cfe..ff15e4e93e8c45239f653d495f7c76cfe4239337:/services/api/test/integration/select_test.rb diff --git a/services/api/test/integration/select_test.rb b/services/api/test/integration/select_test.rb index cf4d951906..20575654e6 100644 --- a/services/api/test/integration/select_test.rb +++ b/services/api/test/integration/select_test.rb @@ -35,6 +35,16 @@ class SelectTest < ActionDispatch::IntegrationTest end end + def assert_link_classes_ascend(current_class, prev_class) + # Databases and Ruby don't always agree about string ordering with + # punctuation. If the strings aren't ascending normally, check + # that they're equal up to punctuation. + if current_class < prev_class + class_prefix = current_class.split(/\W/).first + assert prev_class.start_with?(class_prefix) + end + end + test "select two columns with order" do get "/arvados/v1/links", {:format => :json, :select => ['link_class', 'uuid'], :order => ['link_class asc', "uuid desc"]}, auth(:active) assert_response :success @@ -49,7 +59,29 @@ class SelectTest < ActionDispatch::IntegrationTest prev_uuid = "zzzzz-zzzzz-zzzzzzzzzzzzzzz" end - assert i['link_class'] >= prev_link_class + assert_link_classes_ascend(i['link_class'], prev_link_class) + assert i['uuid'] < prev_uuid + + prev_link_class = i['link_class'] + prev_uuid = i['uuid'] + end + end + + test "select two columns with old-style order syntax" do + get "/arvados/v1/links", {:format => :json, :select => ['link_class', 'uuid'], :order => 'link_class asc, uuid desc'}, auth(:active) + assert_response :success + + assert json_response['items'].length > 0 + + prev_link_class = "" + prev_uuid = "zzzzz-zzzzz-zzzzzzzzzzzzzzz" + + json_response['items'].each do |i| + if prev_link_class != i['link_class'] + prev_uuid = "zzzzz-zzzzz-zzzzzzzzzzzzzzz" + end + + assert_link_classes_ascend(i['link_class'], prev_link_class) assert i['uuid'] < prev_uuid prev_link_class = i['link_class']