Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions apps/dashboard/app/apps/request_tracker_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,15 @@ def create_ticket(support_ticket_request, session, job)
username: support_ticket_request.username
}

template = rt_config.fetch(:template, 'rt_ticket_content.text.erb')
ticket_content_template = ERB.new(File.read(Rails.root.join('app/views/support_ticket/rt').join(template)))
ticket_text = ticket_content_template.result_with_hash({ context: ticket_template_context,
helpers: TemplateHelpers.new })
template_path = File.join('support_ticket/rt', rt_config.fetch(:template, 'rt_ticket_content'))
ticket_text = ApplicationController.render(
template: template_path,
formats: [:text], # so Rails prefers *.text.* variants
locals: {
context: ticket_template_context,
helpers: TemplateHelpers.new
}
)

payload = create_payload(support_ticket_request, ticket_text)
rt_client = RequestTrackerClient.new(rt_config)
Expand Down
13 changes: 10 additions & 3 deletions apps/dashboard/app/apps/support_ticket_service_now_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,16 @@ def create_description_text(service_config, support_ticket_request, session, job
support_ticket: support_ticket_request
}

template = service_config.fetch(:template, 'servicenow_content.text.erb')
ticket_content_template = ERB.new(File.read(Rails.root.join('app/views/support_ticket/servicenow').join(template)))
ticket_content_template.result_with_hash({ context: ticket_template_context, helpers: TemplateHelpers.new })
template_path = File.join('support_ticket/servicenow', service_config.fetch(:template, 'servicenow_content'))
ApplicationController.render(
template: template_path,
formats: [:text], # so Rails prefers *.text.* variants
locals: {
context: ticket_template_context,
helpers: TemplateHelpers.new
}
)

end

class TemplateHelpers
Expand Down
72 changes: 47 additions & 25 deletions apps/dashboard/test/apps/request_tracker_service_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,90 +2,112 @@

class RequestTrackerServiceTest < ActiveSupport::TestCase

test "should throw exception when queues is not provided" do
test 'should throw exception when queues is not provided' do
config = {
queues: nil,
priority: "33",
priority: '33',
}

assert_raises(ArgumentError) { RequestTrackerService.new(config) }
end

test "should throw exception when priority is not provided" do
test 'should throw exception when priority is not provided' do
config = {
queues: [ "Standard" ],
queues: [ 'Standard' ],
priority: nil,
}

assert_raises(ArgumentError) { RequestTrackerService.new(config) }
end

test "create_ticket should run with no errors" do
test 'create_ticket should run with no errors' do
config = {
queues: [ "Standard" ],
priority: "10",
queues: [ 'Standard' ],
priority: '10',
}

support_ticket = SupportTicket.from_config({})
support_ticket.attributes = {email: "[email protected]", cc: "[email protected]", subject: "Subject"}
support_ticket.attributes = {email: '[email protected]', cc: '[email protected]', subject: 'Subject'}

mock_rt_client = mock("rt_client")
mock_rt_client = mock('rt_client')
mock_rt_client.expects(:create).with do |param_hash|
param_hash[:Requestor] == support_ticket.email &&
param_hash[:Cc] == support_ticket.cc &&
param_hash[:Subject] == support_ticket.subject &&
param_hash[:Queue] == "Standard" &&
param_hash[:Priority] == "10" &&
param_hash[:Queue] == 'Standard' &&
param_hash[:Priority] == '10' &&
param_hash[:Text].include?('Username:') &&
param_hash[:Text].include?('Description:') &&
param_hash[:Text].include?('Session Information:') &&
param_hash[:Text].include?('"id": "session_id"') &&
param_hash[:Text].include?('"id": "job_id"')
end
.returns("support_ticket_id")
.returns('support_ticket_id')

session = BatchConnect::Session.new(id: 'session_id', created_at: Time.now)
job = OodCore::Job::Info.new(id: 'job_id', status: 'running')
RequestTrackerClient.stubs(:new).returns(mock_rt_client)

result = RequestTrackerService.new(config).create_ticket(support_ticket, session, job)

assert_equal "support_ticket_id", result
assert_equal 'support_ticket_id', result
end

test "create_ticket should run with no errors when selecting an alternate queue" do
test 'create_ticket should run with no errors when selecting an alternate queue' do
config = {
queues: [ "Standard", "Alternate" ],
priority: "10",
queues: [ 'Standard', 'Alternate' ],
priority: '10',
}

support_ticket = SupportTicket.from_config({})
support_ticket.attributes = {email: "[email protected]", cc: "[email protected]", subject: "Subject", queue: "Alternate"}
support_ticket.attributes = {email: '[email protected]', cc: '[email protected]', subject: 'Subject', queue: 'Alternate'}

mock_rt_client = mock("rt_client")
mock_rt_client = mock('rt_client')
mock_rt_client.expects(:create).with do |param_hash|
param_hash[:Requestor] == support_ticket.email &&
param_hash[:Cc] == support_ticket.cc &&
param_hash[:Subject] == support_ticket.subject &&
param_hash[:Queue] == support_ticket.queue &&
param_hash[:Priority] == "10"
param_hash[:Priority] == '10'
end
.returns("support_ticket_id")
.returns('support_ticket_id')

session = BatchConnect::Session.new(id: 'session', created_at: Time.now)
job = OodCore::Job::Info.new(id: '12345', status: 'running')
RequestTrackerClient.stubs(:new).returns(mock_rt_client)

result = RequestTrackerService.new(config).create_ticket(support_ticket, session, job)

assert_equal "support_ticket_id", result
assert_equal 'support_ticket_id', result
end

test "create_ticket should raise an error when selecting an invalid queue" do
test 'create_ticket should support template override' do
config = {
queues: [ "Standard", "Alternate" ],
priority: "10",
template: 'rt_override',
queues: [ 'Standard' ],
priority: '10',
}

mock_rt_client = mock('rt_client')
mock_rt_client.expects(:create).with do |param_hash|
param_hash[:Text] == 'Request Tracker content template override'
end
.returns('support_ticket_id')

RequestTrackerClient.stubs(:new).returns(mock_rt_client)
result = RequestTrackerService.new(config).create_ticket(SupportTicket.from_config({}), nil, nil)

assert_equal 'support_ticket_id', result
end

test 'create_ticket should raise an error when selecting an invalid queue' do
config = {
queues: [ 'Standard', 'Alternate' ],
priority: '10',
}

support_ticket = SupportTicket.from_config({})
support_ticket.attributes = {email: "[email protected]", cc: "[email protected]", subject: "Subject", queue: "Not_A_Queue"}
support_ticket.attributes = {email: '[email protected]', cc: '[email protected]', subject: 'Subject', queue: 'Not_A_Queue'}
session = BatchConnect::Session.new(id: 'session', created_at: Time.now)
job = OodCore::Job::Info.new(id: '12345', status: 'running')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,23 @@ def setup
target.deliver_support_ticket(support_ticket)
end

test 'deliver_support_ticket should support template override' do
config = {
servicenow_api: {
template: 'snow_override'
}
}
target = SupportTicketServiceNowService.new(config)
mock_client = mock('servicenow_client')
mock_client.expects(:create).with do |payload|
payload[:description] == 'ServiceNow content template override'
end
.returns(create_response('incident_number', true))

ServiceNowClient.expects(:new).returns(mock_client)
target.deliver_support_ticket(SupportTicket.from_config({}))
end

test 'deliver_support_ticket should delegate to ServiceNowClient class and return success message' do
ServiceNowClient.expects(:new).returns(stub(:create => create_response('123')))
result = @target.deliver_support_ticket(SupportTicket.new)
Expand All @@ -133,12 +150,12 @@ def setup
end

test 'deliver_support_ticket should delegate to ServiceNowClient class and return success message override when provided' do
rt_config = {
config = {
servicenow_api: {
success_message: 'success message override'
}
}
target = SupportTicketServiceNowService.new(rt_config)
target = SupportTicketServiceNowService.new(config)
ServiceNowClient.expects(:new).returns(stub(:create => create_response('123')))
result = target.deliver_support_ticket(SupportTicket.new)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Request Tracker content template override
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ServiceNow content template override
Loading