15848: Enhances default ordering test with more cases.
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Thu, 21 Nov 2019 21:04:57 +0000 (18:04 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Fri, 22 Nov 2019 21:30:19 +0000 (18:30 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

services/api/test/integration/collections_api_test.rb

index 9ed978b717725d60f2e7c8c4ed6945126f997483..58b276ac635920b1130b020af33dcf312a0375a5 100644 (file)
@@ -15,29 +15,37 @@ class CollectionsApiTest < ActionDispatch::IntegrationTest
     assert_equal "arvados#collectionList", json_response['kind']
   end
 
-  test "should get index ordered by 'modified_at desc' by default" do
-    get "/arvados/v1/collections",
-      params: {:format => :json},
-      headers: auth(:active)
-    assert_response :success
-    modified_at_dates = json_response['items'].collect{ |x| DateTime.parse(x['modified_at']) }
-    assert modified_at_dates.first > modified_at_dates.last
-    assert_equal modified_at_dates, modified_at_dates.sort{|a, b| b <=> a}
-    oldest = json_response['items'].last
-
-    # Update oldest collection and re-request index
-    put "/arvados/v1/collections/#{oldest['uuid']}",
-      params: {
-        format: :json,
-        collection: { name: "a name" }
-      },
-      headers: auth(:admin)
-    assert_response :success
-    get "/arvados/v1/collections",
-      params: {:format => :json},
-      headers: auth(:active)
-    assert_response :success
-    assert_equal oldest['uuid'], json_response['items'].first['uuid']
+  [
+    ['without order', {:format => :json}],
+    ['with order=[]', {:format => :json, :order => [].to_json}],
+    ['with order=null', {:format => :json, :order => nil}],
+  ].each do |comment, params|
+    test "should get index ordered by 'modified_at desc' by default #{comment}" do
+      get "/arvados/v1/collections",
+        params: params,
+        headers: auth(:active)
+      assert_response :success
+      assert json_response['items'].length > 1
+      modified_at_dates = json_response['items'].collect{ |x| DateTime.parse(x['modified_at']) }
+      assert modified_at_dates.first > modified_at_dates.last
+      assert_equal modified_at_dates, modified_at_dates.sort{ |a, b| b <=> a }
+      oldest = json_response['items'].last
+
+      # Update oldest collection and re-request index
+      put "/arvados/v1/collections/#{oldest['uuid']}",
+        params: {
+          format: :json,
+          collection: { name: "a name" }
+        },
+        headers: auth(:admin)
+      assert_response :success
+      get "/arvados/v1/collections",
+        params: params,
+        headers: auth(:active)
+      assert_response :success
+      # Oldest should be now newest
+      assert_equal oldest['uuid'], json_response['items'].first['uuid']
+    end
   end
 
   test "get index with filters= (empty string)" do