|
| 1 | +require "test_helper" |
| 2 | + |
| 3 | +module PagerTree::Integrations |
| 4 | + class Freshservice::V3Test < ActiveSupport::TestCase |
| 5 | + include Integrateable |
| 6 | + |
| 7 | + setup do |
| 8 | + @integration = pager_tree_integrations_integrations(:freshservice_v3) |
| 9 | + |
| 10 | + @create_request = { |
| 11 | + # not a mistake, freshservice uses the "freshdesk" key, not "freshservice" |
| 12 | + freshdesk_webhook: { |
| 13 | + ticket_id: "123", |
| 14 | + ticket_subject: "Ticket Subject", |
| 15 | + ticket_description: "Ticket Description", |
| 16 | + ticket_priority: 1, |
| 17 | + ticket_status: 2, |
| 18 | + ticket_url: "https://desk.freshservice.com/ticket/123", |
| 19 | + ticket_public_url: "https://public.freshservice.com/ticket/123", |
| 20 | + ticket_due_by_time: "2022-05-23T08:18:26-05:00", |
| 21 | + ticket_source: "Customer", |
| 22 | + ticket_requester_name: "Joe Bob", |
| 23 | + ticket_requester_email: "[email protected]", |
| 24 | + ticket_requester_phone: nil, |
| 25 | + ticket_company_name: "Acme Corp" |
| 26 | + } |
| 27 | + }.with_indifferent_access |
| 28 | + |
| 29 | + @resolve_request = @create_request.deep_dup |
| 30 | + @resolve_request[:freshdesk_webhook][:ticket_status] = "Resolved" |
| 31 | + |
| 32 | + @other_request = @create_request.deep_dup |
| 33 | + @other_request[:freshdesk_webhook][:ticket_status] = "baaad" |
| 34 | + end |
| 35 | + |
| 36 | + test "sanity" do |
| 37 | + assert @integration.adapter_supports_incoming? |
| 38 | + assert @integration.adapter_incoming_can_defer? |
| 39 | + assert_not @integration.adapter_supports_outgoing? |
| 40 | + assert @integration.adapter_show_alerts? |
| 41 | + assert @integration.adapter_show_logs? |
| 42 | + assert_not @integration.adapter_show_outgoing_webhook_delivery? |
| 43 | + end |
| 44 | + |
| 45 | + test "adapter_actions" do |
| 46 | + @integration.adapter_incoming_request_params = @create_request |
| 47 | + assert_equal :create, @integration.adapter_action |
| 48 | + |
| 49 | + @integration.adapter_incoming_request_params = @resolve_request |
| 50 | + assert_equal :resolve, @integration.adapter_action |
| 51 | + |
| 52 | + @integration.adapter_incoming_request_params = @other_request |
| 53 | + assert_equal :other, @integration.adapter_action |
| 54 | + end |
| 55 | + |
| 56 | + test "adapter_thirdparty_id" do |
| 57 | + @integration.adapter_incoming_request_params = @create_request |
| 58 | + assert_equal @create_request[:freshdesk_webhook][:ticket_public_url], @integration.adapter_thirdparty_id |
| 59 | + end |
| 60 | + |
| 61 | + test "adapter_process_create" do |
| 62 | + @integration.adapter_incoming_request_params = @create_request |
| 63 | + |
| 64 | + true_alert = Alert.new( |
| 65 | + title: @create_request[:freshdesk_webhook][:ticket_subject], |
| 66 | + description: @create_request[:freshdesk_webhook][:ticket_description], |
| 67 | + urgency: :low, |
| 68 | + thirdparty_id: @create_request[:freshdesk_webhook][:ticket_public_url], |
| 69 | + dedup_keys: [@create_request[:freshdesk_webhook][:ticket_public_url]], |
| 70 | + additional_data: [ |
| 71 | + AdditionalDatum.new(format: "text", label: "Ticket ID", value: @create_request[:freshdesk_webhook].dig("ticket_id")), |
| 72 | + AdditionalDatum.new(format: "link", label: "Ticket URL", value: @create_request[:freshdesk_webhook].dig("ticket_url")), |
| 73 | + AdditionalDatum.new(format: "text", label: "Requester Email", value: @create_request[:freshdesk_webhook].dig("ticket_email")), |
| 74 | + AdditionalDatum.new(format: "text", label: "To Email", value: @create_request[:freshdesk_webhook].dig("ticket_to_email")), |
| 75 | + AdditionalDatum.new(format: "text", label: "CC Email", value: @create_request[:freshdesk_webhook].dig("ticket_cc_email")) |
| 76 | + ] |
| 77 | + ) |
| 78 | + |
| 79 | + assert_equal true_alert.to_json, @integration.adapter_process_create.to_json |
| 80 | + end |
| 81 | + end |
| 82 | +end |
0 commit comments