1# frozen_string_literal: true
2
3require "test_helper"
4require "bandwidth_tn_order"
5
6class BandwidthTNOrderTest < Minitest::Test
7 def test_for_received
8 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
9 order_status: "RECEIVED"
10 ))
11 assert_kind_of BandwidthTNOrder::Received, order
12 end
13
14 def test_for_complete
15 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
16 order_status: "COMPLETE"
17 ))
18 assert_kind_of BandwidthTNOrder::Complete, order
19 end
20
21 def test_for_failed
22 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
23 order_status: "FAILED"
24 ))
25 assert_kind_of BandwidthTNOrder::Failed, order
26 end
27
28 def test_for_unknown
29 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
30 order_status: "randOmgarBagE"
31 ))
32 assert_kind_of BandwidthTNOrder, order
33 assert_equal :randomgarbage, order.status
34 end
35
36 def test_poll
37 order = BandwidthTNOrder.new(BandwidthIris::Order.new)
38 assert_raises { order.poll.sync }
39 end
40 em :test_poll
41
42 class TestReceived < Minitest::Test
43 def setup
44 @order = BandwidthTNOrder::Received.new(
45 BandwidthIris::Order.new(id: "oid")
46 )
47 end
48
49 def test_poll
50 req = stub_request(
51 :get,
52 "https://dashboard.bandwidth.com/v1.0/accounts//orders/oid"
53 ).to_return(status: 200, body: <<~RESPONSE)
54 <OrderResponse>
55 <OrderStatus>COMPLETE</OrderStatus>
56 <CompletedNumbers>
57 <TelephoneNumber>
58 <FullNumber>5555550000</FullNumber>
59 </TelephoneNumber>
60 </CompletedNumbers>
61 </OrderResponse>
62 RESPONSE
63 stub_request(
64 :post,
65 "https://api.catapult.inetwork.com/v1/users/catapult_user/phoneNumbers"
66 ).with(
67 body: File.open("#{__dir__}/data/catapult_import_body.json").read.chomp,
68 headers: {
69 "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
70 "Content-Type" => "application/json"
71 }
72 ).to_return(status: 201)
73 @order.poll.sync
74 assert_requested req
75 end
76 em :test_poll
77 end
78
79 class TestComplete < Minitest::Test
80 def setup
81 @order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new(
82 completed_numbers: {
83 telephone_number: { full_number: "5555550000" }
84 }
85 ))
86 end
87
88 def test_poll
89 req = stub_request(
90 :post,
91 "https://api.catapult.inetwork.com/v1/users/catapult_user/phoneNumbers"
92 ).with(
93 body: File.open("#{__dir__}/data/catapult_import_body.json").read.chomp,
94 headers: {
95 "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
96 "Content-Type" => "application/json"
97 }
98 ).to_return(status: 201)
99 assert_equal @order, @order.poll.sync
100 assert_requested req
101 end
102 em :test_poll
103 end
104
105 class TestFailed < Minitest::Test
106 def setup
107 @order = BandwidthTNOrder::Failed.new(
108 BandwidthIris::Order.new(id: "oid")
109 )
110 end
111
112 def test_poll
113 assert_raises { @order.poll.sync }
114 end
115 em :test_poll
116 end
117end