Fixed #2367 - cannot sort by pending til
This commit is contained in:
parent
77794e0b26
commit
1be60c91db
4 changed files with 138 additions and 1 deletions
|
@ -677,11 +677,22 @@ class App.ControllerTable extends App.Controller
|
|||
@lastOrderDirection = orderDirection
|
||||
@lastOrderBy = orderBy
|
||||
|
||||
# Underscore's sortBy cannot deal with null values, so we replace null values with a place holder string
|
||||
sortBy = (list, iteratee) ->
|
||||
_.sortBy(
|
||||
list
|
||||
(item) ->
|
||||
res = iteratee(item)
|
||||
return res if res
|
||||
# null values are considered lexicographically "last"
|
||||
'\uFFFF'
|
||||
)
|
||||
|
||||
localObjects is undefined
|
||||
if orderBy
|
||||
for header in @headers
|
||||
if header.name is orderBy || "#{header.name}_id" is orderBy || header.name is "#{orderBy}_id"
|
||||
localObjects = _.sortBy(
|
||||
localObjects = sortBy(
|
||||
@objects
|
||||
(item) ->
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@ if [ "$LEVEL" == '1' ]; then
|
|||
rm test/browser/agent_ticket_overview_group_by_organization_test.rb
|
||||
rm test/browser/agent_ticket_overview_level0_test.rb
|
||||
rm test/browser/agent_ticket_overview_level1_test.rb
|
||||
rm test/browser/agent_ticket_overview_pending_til_test.rb
|
||||
rm test/browser/agent_ticket_overview_tab_test.rb
|
||||
rm test/browser/agent_ticket_tag_test.rb
|
||||
rm test/browser/agent_ticket_task_changed_test.rb
|
||||
|
@ -121,6 +122,7 @@ elif [ "$LEVEL" == '2' ]; then
|
|||
rm test/browser/agent_ticket_overview_group_by_organization_test.rb
|
||||
rm test/browser/agent_ticket_overview_level0_test.rb
|
||||
rm test/browser/agent_ticket_overview_level1_test.rb
|
||||
rm test/browser/agent_ticket_overview_pending_til_test.rb
|
||||
rm test/browser/agent_ticket_overview_tab_test.rb
|
||||
rm test/browser/agent_ticket_tag_test.rb
|
||||
rm test/browser/agent_ticket_task_changed_test.rb
|
||||
|
@ -201,6 +203,7 @@ elif [ "$LEVEL" == '3' ]; then
|
|||
rm test/browser/agent_ticket_overview_group_by_organization_test.rb
|
||||
rm test/browser/agent_ticket_overview_level0_test.rb
|
||||
rm test/browser/agent_ticket_overview_level1_test.rb
|
||||
rm test/browser/agent_ticket_overview_pending_til_test.rb
|
||||
rm test/browser/agent_ticket_overview_tab_test.rb
|
||||
# test/browser/agent_ticket_tag_test.rb
|
||||
# test/browser/agent_ticket_task_changed_test.rb
|
||||
|
@ -281,6 +284,7 @@ elif [ "$LEVEL" == '4' ]; then
|
|||
# test/browser/agent_ticket_overview_group_by_organization_test.rb
|
||||
# test/browser/agent_ticket_overview_level0_test.rb
|
||||
# test/browser/agent_ticket_overview_level1_test.rb
|
||||
# test/browser/agent_ticket_overview_pending_til_test.rb
|
||||
# test/browser/agent_ticket_overview_tab_test.rb
|
||||
rm test/browser/agent_ticket_tag_test.rb
|
||||
rm test/browser/agent_ticket_task_changed_test.rb
|
||||
|
@ -360,6 +364,7 @@ elif [ "$LEVEL" == '5' ]; then
|
|||
rm test/browser/agent_ticket_overview_group_by_organization_test.rb
|
||||
rm test/browser/agent_ticket_overview_level0_test.rb
|
||||
rm test/browser/agent_ticket_overview_level1_test.rb
|
||||
rm test/browser/agent_ticket_overview_pending_til_test.rb
|
||||
rm test/browser/agent_ticket_overview_tab_test.rb
|
||||
rm test/browser/agent_ticket_tag_test.rb
|
||||
rm test/browser/agent_ticket_task_changed_test.rb
|
||||
|
@ -442,6 +447,7 @@ elif [ "$LEVEL" == '6' ]; then
|
|||
rm test/browser/agent_ticket_overview_group_by_organization_test.rb
|
||||
rm test/browser/agent_ticket_overview_level0_test.rb
|
||||
rm test/browser/agent_ticket_overview_level1_test.rb
|
||||
rm test/browser/agent_ticket_overview_pending_til_test.rb
|
||||
rm test/browser/agent_ticket_overview_tab_test.rb
|
||||
rm test/browser/agent_ticket_tag_test.rb
|
||||
rm test/browser/agent_ticket_task_changed_test.rb
|
||||
|
|
66
test/browser/agent_ticket_overview_pending_til_test.rb
Normal file
66
test/browser/agent_ticket_overview_pending_til_test.rb
Normal file
|
@ -0,0 +1,66 @@
|
|||
require 'browser_test_helper'
|
||||
|
||||
class AgentTicketOverviewPendingTil < TestCase
|
||||
|
||||
# regression for issue #2367 - cannot sort by Pending Til
|
||||
def test_sorting_by_pending_til
|
||||
name = "overview_pending_til_#{rand(999_999)}"
|
||||
|
||||
@browser = browser_instance
|
||||
login(
|
||||
username: 'master@example.com',
|
||||
password: 'test',
|
||||
url: browser_url,
|
||||
)
|
||||
tasks_close_all()
|
||||
|
||||
# create 4 tickets, 2 with pending til data and 2 without
|
||||
tickets = []
|
||||
4.times do |i|
|
||||
ticket = ticket_create(
|
||||
data: {
|
||||
customer: 'nico',
|
||||
group: 'Users',
|
||||
title: "pending til ticket #{i}",
|
||||
body: 'test ticket',
|
||||
state: i.odd? ? 'pending close' : 'open',
|
||||
pending_date: '11/24/2018',
|
||||
pending_time: '08:00',
|
||||
}
|
||||
)
|
||||
tickets.push ticket
|
||||
end
|
||||
|
||||
# create and open new overview that has the Pending Til column
|
||||
overview_create(
|
||||
data: {
|
||||
name: name,
|
||||
roles: %w[Admin Agent],
|
||||
selector: {
|
||||
'State' => ['new', 'open', 'closed', 'merged', 'pending close', 'pending reminder'],
|
||||
},
|
||||
attributes: {
|
||||
'pending_time' => true,
|
||||
},
|
||||
}
|
||||
)
|
||||
overview_open(
|
||||
name: name,
|
||||
)
|
||||
|
||||
# sort by Pending Til
|
||||
click(
|
||||
css: '.content.active table.table th.js-tableHead[data-column-key="pending_time"]',
|
||||
)
|
||||
|
||||
# check if the first and second rows both correctly contain 'pending close'
|
||||
match(
|
||||
css: '.content.active table .js-tableBody tr:nth-child(1)',
|
||||
value: 'pending close',
|
||||
)
|
||||
match(
|
||||
css: '.content.active table .js-tableBody tr:nth-child(2)',
|
||||
value: 'pending close',
|
||||
)
|
||||
end
|
||||
end
|
|
@ -1778,6 +1778,20 @@ wait untill text in selector disabppears
|
|||
end
|
||||
end
|
||||
|
||||
data[:attributes]&.each do |key, value|
|
||||
if value
|
||||
check(
|
||||
browser: instance,
|
||||
css: ".modal .checkbox input[value=\"#{key}\"]",
|
||||
)
|
||||
else
|
||||
uncheck(
|
||||
browser: instance,
|
||||
css: ".modal .checkbox input[value=\"#{key}\"]",
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
data[:selector]&.each do |key, value|
|
||||
select(
|
||||
browser: instance,
|
||||
|
@ -1793,6 +1807,15 @@ wait untill text in selector disabppears
|
|||
value: value,
|
||||
mute_log: true,
|
||||
)
|
||||
elsif value.instance_of? Array
|
||||
value.each do |item|
|
||||
select(
|
||||
browser: instance,
|
||||
css: '.modal .ticket_selector .js-value select',
|
||||
value: item,
|
||||
mute_log: true,
|
||||
)
|
||||
end
|
||||
else
|
||||
select(
|
||||
browser: instance,
|
||||
|
@ -2008,6 +2031,19 @@ wait untill text in selector disabppears
|
|||
disable_group_check: true,
|
||||
)
|
||||
|
||||
ticket = ticket_create(
|
||||
browser: browser1,
|
||||
data: {
|
||||
customer: 'nico',
|
||||
priority: '2 normal',
|
||||
state: 'pending close',
|
||||
pending_date: '11/24/2018',
|
||||
pending_time: '08:00',
|
||||
title: 'overview #1',
|
||||
body: 'overview #1',
|
||||
},
|
||||
do_not_submit: true,
|
||||
)
|
||||
=end
|
||||
|
||||
def ticket_create(params)
|
||||
|
@ -2098,6 +2134,24 @@ wait untill text in selector disabppears
|
|||
value: data[:state],
|
||||
mute_log: true,
|
||||
)
|
||||
if ['pending close', 'pending reminder'].include?(data[:state]) &&
|
||||
data[:pending_date] &&
|
||||
data[:pending_time]
|
||||
set(
|
||||
browser: instance,
|
||||
css: '.content.active .newTicket input.js-datepicker',
|
||||
value: data[:pending_date],
|
||||
clear: true,
|
||||
mute_log: true,
|
||||
)
|
||||
set(
|
||||
browser: instance,
|
||||
css: '.content.active .newTicket input.js-timepicker',
|
||||
value: data[:pending_time],
|
||||
clear: true,
|
||||
mute_log: true,
|
||||
)
|
||||
end
|
||||
end
|
||||
if data[:title]
|
||||
set(
|
||||
|
|
Loading…
Reference in a new issue