Fixed random order of objects in index controller, added order_by id.
This commit is contained in:
parent
3280a2c5e1
commit
d8913eec6d
6 changed files with 123 additions and 7 deletions
|
@ -603,9 +603,9 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
generic_objects = if offset > 0
|
generic_objects = if offset > 0
|
||||||
object.limit(params[:per_page]).offset(offset).limit(limit)
|
object.limit(params[:per_page]).order(id: 'ASC').offset(offset).limit(limit)
|
||||||
else
|
else
|
||||||
object.all.offset(offset).limit(limit)
|
object.all.order(id: 'ASC').offset(offset).limit(limit)
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:expand]
|
if params[:expand]
|
||||||
|
|
|
@ -63,10 +63,10 @@ curl http://localhost/api/v1/organizations -v -u #{login}:#{password}
|
||||||
organizations = []
|
organizations = []
|
||||||
if !current_user.permissions?('admin.organization') && !current_user.permissions?('ticket.agent')
|
if !current_user.permissions?('admin.organization') && !current_user.permissions?('ticket.agent')
|
||||||
if current_user.organization_id
|
if current_user.organization_id
|
||||||
organizations = Organization.where(id: current_user.organization_id).offset(offset).limit(per_page)
|
organizations = Organization.where(id: current_user.organization_id).order(id: 'ASC').offset(offset).limit(per_page)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
organizations = Organization.all.offset(offset).limit(per_page)
|
organizations = Organization.all.order(id: 'ASC').offset(offset).limit(per_page)
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:expand]
|
if params[:expand]
|
||||||
|
|
|
@ -18,7 +18,7 @@ class TicketsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
access_condition = Ticket.access_condition(current_user)
|
access_condition = Ticket.access_condition(current_user)
|
||||||
tickets = Ticket.where(access_condition).offset(offset).limit(per_page)
|
tickets = Ticket.where(access_condition).order(id: 'ASC').offset(offset).limit(per_page)
|
||||||
|
|
||||||
if params[:expand]
|
if params[:expand]
|
||||||
list = []
|
list = []
|
||||||
|
|
|
@ -26,9 +26,9 @@ class UsersController < ApplicationController
|
||||||
|
|
||||||
# only allow customer to fetch him self
|
# only allow customer to fetch him self
|
||||||
users = if !current_user.permissions?('admin.user') && !current_user.permissions?('ticket.agent')
|
users = if !current_user.permissions?('admin.user') && !current_user.permissions?('ticket.agent')
|
||||||
User.where(id: current_user.id).offset(offset).limit(per_page)
|
User.where(id: current_user.id).order(id: 'ASC').offset(offset).limit(per_page)
|
||||||
else
|
else
|
||||||
User.all.offset(offset).limit(per_page)
|
User.all.order(id: 'ASC').offset(offset).limit(per_page)
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:expand]
|
if params[:expand]
|
||||||
|
|
|
@ -460,6 +460,86 @@ class TicketsControllerTest < ActionDispatch::IntegrationTest
|
||||||
assert_response(200)
|
assert_response(200)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test '02.05 ticket pagination' do
|
||||||
|
title = "ticket pagination #{rand(999_999_999)}"
|
||||||
|
tickets = []
|
||||||
|
(1..20).each { |count|
|
||||||
|
ticket = Ticket.create!(
|
||||||
|
title: "#{title} - #{count}",
|
||||||
|
group: Group.lookup(name: 'Users'),
|
||||||
|
customer_id: @customer_without_org.id,
|
||||||
|
state: Ticket::State.lookup(name: 'new'),
|
||||||
|
priority: Ticket::Priority.lookup(name: '2 normal'),
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
Ticket::Article.create!(
|
||||||
|
type: Ticket::Article::Type.lookup(name: 'note'),
|
||||||
|
sender: Ticket::Article::Sender.lookup(name: 'Customer'),
|
||||||
|
from: 'sender',
|
||||||
|
subject: 'subject',
|
||||||
|
body: 'some body',
|
||||||
|
ticket_id: ticket.id,
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
tickets.push ticket
|
||||||
|
sleep 1
|
||||||
|
}
|
||||||
|
|
||||||
|
credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-admin', 'adminpw')
|
||||||
|
get "/api/v1/tickets/search?query=#{CGI.escape(title)}&limit=40", {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Hash, result.class)
|
||||||
|
assert_equal(tickets[19].id, result['tickets'][0])
|
||||||
|
assert_equal(tickets[0].id, result['tickets'][19])
|
||||||
|
assert_equal(20, result['tickets_count'])
|
||||||
|
|
||||||
|
get "/api/v1/tickets/search?query=#{CGI.escape(title)}&limit=10", {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Hash, result.class)
|
||||||
|
assert_equal(tickets[19].id, result['tickets'][0])
|
||||||
|
assert_equal(tickets[10].id, result['tickets'][9])
|
||||||
|
assert_equal(10, result['tickets_count'])
|
||||||
|
|
||||||
|
get "/api/v1/tickets/search?query=#{CGI.escape(title)}&limit=40&page=1&per_page=5", {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Hash, result.class)
|
||||||
|
assert_equal(tickets[19].id, result['tickets'][0])
|
||||||
|
assert_equal(tickets[15].id, result['tickets'][4])
|
||||||
|
assert_equal(5, result['tickets_count'])
|
||||||
|
|
||||||
|
get "/api/v1/tickets/search?query=#{CGI.escape(title)}&limit=40&page=2&per_page=5", {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Hash, result.class)
|
||||||
|
assert_equal(tickets[14].id, result['tickets'][0])
|
||||||
|
assert_equal(tickets[10].id, result['tickets'][4])
|
||||||
|
assert_equal(5, result['tickets_count'])
|
||||||
|
|
||||||
|
get '/api/v1/tickets?limit=40&page=1&per_page=5', {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Array, result.class)
|
||||||
|
tickets = Ticket.order(:id).limit(5)
|
||||||
|
assert_equal(tickets[0].id, result[0]['id'])
|
||||||
|
assert_equal(tickets[4].id, result[4]['id'])
|
||||||
|
assert_equal(5, result.count)
|
||||||
|
|
||||||
|
get '/api/v1/tickets?limit=40&page=2&per_page=5', {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Array, result.class)
|
||||||
|
tickets = Ticket.order(:id).limit(10)
|
||||||
|
assert_equal(tickets[5].id, result[0]['id'])
|
||||||
|
assert_equal(tickets[9].id, result[4]['id'])
|
||||||
|
assert_equal(5, result.count)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
test '03.01 ticket create with customer minimal' do
|
test '03.01 ticket create with customer minimal' do
|
||||||
credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-customer1@example.com', 'customer1pw')
|
credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-customer1@example.com', 'customer1pw')
|
||||||
params = {
|
params = {
|
||||||
|
|
|
@ -321,6 +321,24 @@ class UserOrganizationControllerTest < ActionDispatch::IntegrationTest
|
||||||
assert_equal(result.class, Array)
|
assert_equal(result.class, Array)
|
||||||
assert(result.length >= 3)
|
assert(result.length >= 3)
|
||||||
|
|
||||||
|
get '/api/v1/users?limit=40&page=1&per_page=2', {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Array, result.class)
|
||||||
|
users = User.order(:id).limit(2)
|
||||||
|
assert_equal(users[0].id, result[0]['id'])
|
||||||
|
assert_equal(users[1].id, result[1]['id'])
|
||||||
|
assert_equal(2, result.count)
|
||||||
|
|
||||||
|
get '/api/v1/users?limit=40&page=2&per_page=2', {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Array, result.class)
|
||||||
|
users = User.order(:id).limit(4)
|
||||||
|
assert_equal(users[2].id, result[0]['id'])
|
||||||
|
assert_equal(users[3].id, result[1]['id'])
|
||||||
|
assert_equal(2, result.count)
|
||||||
|
|
||||||
# create user with admin role
|
# create user with admin role
|
||||||
firstname = "First test#{rand(999_999_999)}"
|
firstname = "First test#{rand(999_999_999)}"
|
||||||
role = Role.lookup(name: 'Admin')
|
role = Role.lookup(name: 'Admin')
|
||||||
|
@ -468,6 +486,24 @@ class UserOrganizationControllerTest < ActionDispatch::IntegrationTest
|
||||||
assert_equal(result.class, Array)
|
assert_equal(result.class, Array)
|
||||||
assert(result.length >= 3)
|
assert(result.length >= 3)
|
||||||
|
|
||||||
|
get '/api/v1/organizations?limit=40&page=1&per_page=2', {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Array, result.class)
|
||||||
|
organizations = Organization.order(:id).limit(2)
|
||||||
|
assert_equal(organizations[0].id, result[0]['id'])
|
||||||
|
assert_equal(organizations[1].id, result[1]['id'])
|
||||||
|
assert_equal(2, result.count)
|
||||||
|
|
||||||
|
get '/api/v1/organizations?limit=40&page=2&per_page=2', {}, @headers.merge('Authorization' => credentials)
|
||||||
|
assert_response(200)
|
||||||
|
result = JSON.parse(@response.body)
|
||||||
|
assert_equal(Array, result.class)
|
||||||
|
organizations = Organization.order(:id).limit(4)
|
||||||
|
assert_equal(organizations[2].id, result[0]['id'])
|
||||||
|
assert_equal(organizations[3].id, result[1]['id'])
|
||||||
|
assert_equal(2, result.count)
|
||||||
|
|
||||||
# show/:id
|
# show/:id
|
||||||
get "/api/v1/organizations/#{@organization.id}", {}, @headers.merge('Authorization' => credentials)
|
get "/api/v1/organizations/#{@organization.id}", {}, @headers.merge('Authorization' => credentials)
|
||||||
assert_response(200)
|
assert_response(200)
|
||||||
|
|
Loading…
Reference in a new issue