233 lines
7.7 KiB
Ruby
233 lines
7.7 KiB
Ruby
describe '/system/get-stats/' do
|
|
Scripts.createUser('statsuser@os4.com', 'StatsUser', 'StatsUser')
|
|
|
|
def asUser()
|
|
Scripts.logout()
|
|
Scripts.login('statsuser@os4.com', 'StatsUser')
|
|
end
|
|
|
|
def asStaff()
|
|
Scripts.logout()
|
|
Scripts.login($staff[:email], $staff[:password], true)
|
|
end
|
|
|
|
@today = 199701010000
|
|
@dateRangeBefore2000 = "[" + @today.to_s + ",200001010000]"
|
|
@currTicket = 1
|
|
|
|
def nextDay()
|
|
@today += 10000
|
|
@dateRangeBefore2000 = "[" + @today.to_s + ",200001010000]"
|
|
end
|
|
|
|
def createTicket(date = @today)
|
|
result = request('/ticket/create', {
|
|
title: "Stats Ticket ##{@currTicket}: Title",
|
|
content: "Stats Ticket ##{@currTicket}: Content",
|
|
departmentId: 1,
|
|
language: 'en',
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
$database.query("UPDATE ticket SET date=#{date} ORDER BY id DESC LIMIT 1")
|
|
@currTicket += 1
|
|
end
|
|
|
|
def closeTicket(ticket_number)
|
|
result = request('/ticket/close', {
|
|
ticketNumber: ticket_number,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
return result
|
|
end
|
|
|
|
def reOpen(ticket_number)
|
|
result = request('/ticket/re-open', {
|
|
ticketNumber: ticket_number,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
return result
|
|
end
|
|
|
|
it 'should report no stats before year 2000' do
|
|
asStaff()
|
|
result = request('/system/get-stats', {
|
|
dateRange: @dateRangeBefore2000,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
|
|
(result['status']).should.equal('success')
|
|
(result['data']['created']).should.equal(0)
|
|
(result['data']['open']).should.equal(0)
|
|
(result['data']['closed']).should.equal(0)
|
|
(result['data']['instant']).should.equal(0)
|
|
(result['data']['reopened']).should.equal(0)
|
|
(result['data']['created_by_hour'].count(0)).should.equal(24)
|
|
(result['data']['created_by_weekday'].count(0)).should.equal(7)
|
|
(result['data']['average_first_reply']).should.equal(0)
|
|
(result['data']['average_first_closed']).should.equal(0)
|
|
(result['data']['average_last_closed']).should.equal(0)
|
|
(result['data']['average_department_hops']).should.equal(0.0)
|
|
(result['data']['average_staff_hops']).should.equal(0.0)
|
|
end
|
|
|
|
it 'should update number of created tickets after a ticket is created' do
|
|
asUser()
|
|
createTicket()
|
|
|
|
asStaff()
|
|
result = request('/system/get-stats', {
|
|
dateRange: @dateRangeBefore2000,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
(result['data']['created']).should.equal(1)
|
|
(result['data']['open']).should.equal(1)
|
|
(result['data']['closed']).should.equal(0)
|
|
end
|
|
|
|
it 'should update number of open/closed tickets after a ticket is closed' do
|
|
asStaff()
|
|
ticket = $database.getLastRow('ticket')
|
|
|
|
result = closeTicket(ticket['ticket_number'])
|
|
|
|
result = request('/system/get-stats', {
|
|
dateRange: @dateRangeBefore2000,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
(result['data']['created']).should.equal(1)
|
|
(result['data']['open']).should.equal(0)
|
|
(result['data']['closed']).should.equal(1)
|
|
end
|
|
|
|
it 'should update number of instant tickets after a ticket is replied by a single staff member' do
|
|
asUser()
|
|
createTicket()
|
|
|
|
asStaff()
|
|
ticket = $database.getLastRow('ticket')
|
|
result = request('/ticket/comment', {
|
|
content: 'This will be the only public reply to this ticket from a staff, then it will be closed',
|
|
ticketNumber: ticket['ticket_number'],
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
|
|
result = closeTicket(ticket['ticket_number'])
|
|
|
|
result = request('/system/get-stats', {
|
|
dateRange: @dateRangeBefore2000,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
(result['data']['created']).should.equal(2)
|
|
(result['data']['open']).should.equal(0)
|
|
(result['data']['closed']).should.equal(2)
|
|
(result['data']['instant']).should.equal(1)
|
|
end
|
|
|
|
it 'should update number of reopened tickets after a ticket is reopened' do
|
|
asUser()
|
|
createTicket()
|
|
|
|
asStaff()
|
|
ticket = $database.getLastRow('ticket')
|
|
result = closeTicket(ticket['ticket_number'])
|
|
result = reOpen(ticket['ticket_number'])
|
|
|
|
result = request('/system/get-stats', {
|
|
dateRange: @dateRangeBefore2000,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
(result['data']['created']).should.equal(3)
|
|
(result['data']['open']).should.equal(1)
|
|
(result['data']['closed']).should.equal(2)
|
|
(result['data']['instant']).should.equal(1)
|
|
(result['data']['reopened']).should.equal(1)
|
|
end
|
|
|
|
it 'should update created_by_hour accordingly' do
|
|
nextDay()
|
|
|
|
asUser()
|
|
|
|
createTicket(@today + 0)
|
|
createTicket(@today + 59)
|
|
createTicket(@today + 112)
|
|
createTicket(@today + 319)
|
|
createTicket(@today + 559)
|
|
createTicket(@today + 935)
|
|
createTicket(@today + 1044)
|
|
createTicket(@today + 1237)
|
|
createTicket(@today + 1400)
|
|
createTicket(@today + 1421)
|
|
createTicket(@today + 1449)
|
|
createTicket(@today + 1922)
|
|
createTicket(@today + 2033)
|
|
createTicket(@today + 2034)
|
|
createTicket(@today + 2035)
|
|
createTicket(@today + 2050)
|
|
createTicket(@today + 2359)
|
|
|
|
asStaff()
|
|
result = request('/system/get-stats', {
|
|
dateRange: @dateRangeBefore2000,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
(result['data']['created_by_hour']).should.equal([
|
|
2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 3, 0, 0, 0, 0, 1, 4, 0, 0, 1
|
|
])
|
|
end
|
|
|
|
it 'should update created_by_weekday accordingly' do
|
|
asUser()
|
|
for i in 1..4
|
|
nextDay() # Go to next monday
|
|
end
|
|
|
|
createTicket(@today + 0*10000)
|
|
createTicket(@today + 0*10000)
|
|
createTicket(@today + 1*10000)
|
|
createTicket(@today + 1*10000)
|
|
createTicket(@today + 1*10000)
|
|
createTicket(@today + 2*10000)
|
|
createTicket(@today + 2*10000)
|
|
createTicket(@today + 2*10000)
|
|
createTicket(@today + 2*10000)
|
|
createTicket(@today + 3*10000)
|
|
createTicket(@today + 4*10000)
|
|
createTicket(@today + 4*10000)
|
|
createTicket(@today + 5*10000)
|
|
createTicket(@today + 5*10000)
|
|
createTicket(@today + 5*10000)
|
|
createTicket(@today + 6*10000)
|
|
createTicket(@today + 6*10000)
|
|
|
|
asStaff()
|
|
result = request('/system/get-stats', {
|
|
dateRange: @dateRangeBefore2000,
|
|
csrf_userid: $csrf_userid,
|
|
csrf_token: $csrf_token
|
|
})
|
|
(result['status']).should.equal('success')
|
|
(result['data']['created_by_weekday']).should.equal([
|
|
2, 3, 4, 1, 2, 3, 2
|
|
])
|
|
end
|
|
end
|