8767: Make offset work properly in ApiClientAuthorizationsController#index.
[arvados.git] / services / api / test / functional / arvados / v1 / query_test.rb
1 require 'test_helper'
2
3 class Arvados::V1::QueryTest < ActionController::TestCase
4   test 'no fallback orders when order is unambiguous' do
5     @controller = Arvados::V1::LogsController.new
6     authorize_with :active
7     get :index, {
8       order: ['id asc'],
9       controller: 'logs',
10     }
11     assert_response :success
12     assert_equal ['logs.id asc'], assigns(:objects).order_values
13   end
14
15   test 'fallback orders when order is ambiguous' do
16     @controller = Arvados::V1::LogsController.new
17     authorize_with :active
18     get :index, {
19       order: ['event_type asc'],
20       controller: 'logs',
21     }
22     assert_response :success
23     assert_equal('logs.event_type asc, logs.modified_at desc, logs.uuid',
24                  assigns(:objects).order_values.join(', '))
25   end
26
27   test 'skip fallback orders already given by client' do
28     @controller = Arvados::V1::LogsController.new
29     authorize_with :active
30     get :index, {
31       order: ['modified_at asc'],
32       controller: 'logs',
33     }
34     assert_response :success
35     assert_equal('logs.modified_at asc, logs.uuid',
36                  assigns(:objects).order_values.join(', '))
37   end
38
39   test 'eliminate superfluous orders' do
40     @controller = Arvados::V1::LogsController.new
41     authorize_with :active
42     get :index, {
43       order: ['logs.modified_at asc',
44               'modified_at desc',
45               'event_type desc',
46               'logs.event_type asc'],
47       controller: 'logs',
48     }
49     assert_response :success
50     assert_equal('logs.modified_at asc, logs.event_type desc, logs.uuid',
51                  assigns(:objects).order_values.join(', '))
52   end
53
54   test 'eliminate orders after the first unique column' do
55     @controller = Arvados::V1::LogsController.new
56     authorize_with :active
57     get :index, {
58       order: ['event_type asc',
59               'id asc',
60               'uuid asc',
61               'modified_at desc'],
62       controller: 'logs',
63     }
64     assert_response :success
65     assert_equal('logs.event_type asc, logs.id asc',
66                  assigns(:objects).order_values.join(', '))
67   end
68 end