Add Helpdesk issue API include serializer

This commit is contained in:
Jason Thistlethwaite
2026-05-04 09:49:42 -04:00
parent ac284d9dc9
commit fba494dada
7 changed files with 442 additions and 0 deletions
@@ -0,0 +1,46 @@
require 'minitest/autorun'
require_relative '../../plugins/redmine_contacts_helpdesk/lib/redmine_helpdesk/issue_api_serializer'
Contact = Struct.new(:id, :name, :company, :primary_email, :emails, keyword_init: true)
Ticket = Struct.new(:id, :contact_id, :message_id, :source, :from_address, :to_address, :cc_address, :ticket_date, :customer, keyword_init: true) do
def is_incoming?
true
end
end
Issue = Struct.new(:helpdesk_ticket, keyword_init: true)
class IssueApiSerializerTest < Minitest::Test
def test_serializes_helpdesk_ticket_with_expanded_contact
contact = Contact.new(
:id => 1890,
:name => 'Callum Mackeonis',
:company => 'SafeTag Tracking',
:primary_email => 'callum@safetagtracking.com',
:emails => ['callum@safetagtracking.com']
)
ticket = Ticket.new(
:id => 35159,
:contact_id => 1890,
:message_id => 'message-id',
:source => 0,
:from_address => 'callum@safetagtracking.com',
:to_address => 'contact@ldrprep.com',
:cc_address => '',
:ticket_date => Time.utc(2026, 4, 14, 10, 18, 38),
:customer => contact
)
payload = RedmineHelpdesk::IssueApiSerializer.serialize(Issue.new(:helpdesk_ticket => ticket))
assert_equal 35159, payload[:id]
assert_equal 1890, payload[:contact_id]
assert_equal 'callum@safetagtracking.com', payload[:contact][:email]
assert_equal 'Callum Mackeonis', payload[:contact][:name]
assert_equal 'SafeTag Tracking', payload[:contact][:company]
assert_equal '2026-04-14T10:18:38Z', payload[:ticket_date]
end
def test_returns_nil_for_non_helpdesk_issue
assert_nil RedmineHelpdesk::IssueApiSerializer.serialize(Issue.new(:helpdesk_ticket => nil))
end
end