+
+ test 'skip fallback orders already given by client' do
+ @controller = Arvados::V1::LogsController.new
+ authorize_with :active
+ get :index, {
+ order: ['modified_at asc'],
+ controller: 'logs',
+ }
+ assert_response :success
+ assert_equal('logs.modified_at asc, logs.uuid',
+ assigns(:objects).order_values.join(', '))
+ end
+
+ test 'eliminate superfluous orders' do
+ @controller = Arvados::V1::LogsController.new
+ authorize_with :active
+ get :index, {
+ order: ['logs.modified_at asc',
+ 'modified_at desc',
+ 'event_type desc',
+ 'logs.event_type asc'],
+ controller: 'logs',
+ }
+ assert_response :success
+ assert_equal('logs.modified_at asc, logs.event_type desc, logs.uuid',
+ assigns(:objects).order_values.join(', '))
+ end
+
+ test 'eliminate orders after the first unique column' do
+ @controller = Arvados::V1::LogsController.new
+ authorize_with :active
+ get :index, {
+ order: ['event_type asc',
+ 'id asc',
+ 'uuid asc',
+ 'modified_at desc'],
+ controller: 'logs',
+ }
+ assert_response :success
+ assert_equal('logs.event_type asc, logs.id asc',
+ assigns(:objects).order_values.join(', '))
+ end
+
+ test 'do not count items_available if count=none' do
+ @controller = Arvados::V1::LinksController.new
+ authorize_with :active
+ get :index, {
+ count: 'none',
+ }
+ assert_response(:success)
+ refute(json_response.has_key?('items_available'))
+ end
+
+ [{}, {count: nil}, {count: ''}, {count: 'exact'}].each do |params|
+ test "count items_available if params=#{params.inspect}" do
+ @controller = Arvados::V1::LinksController.new
+ authorize_with :active
+ get :index, params
+ assert_response(:success)
+ assert_operator(json_response['items_available'], :>, 0)
+ end
+ end
+
+ test 'error if count=bogus' do
+ @controller = Arvados::V1::LinksController.new
+ authorize_with :active
+ get :index, {
+ count: 'bogus',
+ }
+ assert_response(422)
+ end