1# frozen_string_literal: true
2
3require "test_helper"
4require "bandwidth_tn_order"
5
6class BandwidthTNOrderTest < Minitest::Test
7 def test_create
8 req = stub_request(
9 :post,
10 "https://dashboard.bandwidth.com/v1.0/accounts//orders"
11 ).with(
12 body: {
13 Name: "sgx-jmp order +15551234567",
14 SiteId: "test_site",
15 PeerId: "test_peer",
16 CustomerOrderId: "test",
17 ExistingTelephoneNumberOrderType: {
18 TelephoneNumberList: {
19 TelephoneNumber: "5551234567"
20 }
21 }
22 }.to_xml(indent: 0, root: "Order")
23 ).to_return(status: 200)
24 BandwidthTNOrder.create("+15551234567", customer_order_id: "test").sync
25
26 assert_requested req
27 end
28 em :test_create
29
30 def test_create_with_reservation
31 req = stub_request(
32 :post,
33 "https://dashboard.bandwidth.com/v1.0/accounts//orders"
34 ).with(
35 body: {
36 Name: "sgx-jmp order +15551234567",
37 SiteId: "test_site",
38 PeerId: "test_peer",
39 CustomerOrderId: "test",
40 ExistingTelephoneNumberOrderType: {
41 TelephoneNumberList: {
42 TelephoneNumber: "5551234567"
43 },
44 ReservationIdList: {
45 ReservationId: "res"
46 }
47 }
48 }.to_xml(indent: 0, root: "Order")
49 ).to_return(status: 200)
50
51 BandwidthTNOrder.create(
52 "+15551234567",
53 customer_order_id: "test",
54 reservation_id: "res"
55 ).sync
56
57 assert_requested req
58 end
59 em :test_create_with_reservation
60
61 def test_for_received
62 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
63 order_status: "RECEIVED"
64 ))
65 assert_kind_of BandwidthTNOrder::Received, order
66 end
67
68 def test_for_complete
69 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
70 order_status: "COMPLETE"
71 ))
72 assert_kind_of BandwidthTNOrder::Complete, order
73 end
74
75 def test_for_failed
76 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
77 order_status: "FAILED"
78 ))
79 assert_kind_of BandwidthTNOrder::Failed, order
80 end
81
82 def test_for_unknown
83 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
84 order_status: "randOmgarBagE"
85 ))
86 assert_kind_of BandwidthTNOrder, order
87 assert_equal :randomgarbage, order.status
88 end
89
90 def test_poll
91 order = BandwidthTNOrder.new(BandwidthIris::Order.new)
92 assert_raises { order.poll.sync }
93 end
94 em :test_poll
95
96 class TestReceived < Minitest::Test
97 def setup
98 @order = BandwidthTNOrder::Received.new(
99 BandwidthIris::Order.new(id: "oid")
100 )
101 end
102
103 def test_poll
104 req = stub_request(
105 :get,
106 "https://dashboard.bandwidth.com/v1.0/accounts//orders/oid"
107 ).to_return(status: 200, body: <<~RESPONSE)
108 <OrderResponse>
109 <OrderStatus>COMPLETE</OrderStatus>
110 <CompletedNumbers>
111 <TelephoneNumber>
112 <FullNumber>5555550000</FullNumber>
113 </TelephoneNumber>
114 </CompletedNumbers>
115 </OrderResponse>
116 RESPONSE
117 @order.poll.sync
118 assert_requested req
119 end
120 em :test_poll
121 end
122
123 class TestComplete < Minitest::Test
124 def setup
125 @order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new(
126 completed_numbers: {
127 telephone_number: { full_number: "5555550000" }
128 }
129 ))
130 end
131
132 def test_poll
133 assert_equal @order, @order.poll.sync
134 end
135 em :test_poll
136 end
137
138 class TestFailed < Minitest::Test
139 def setup
140 @order = BandwidthTNOrder::Failed.new(
141 BandwidthIris::Order.new(id: "oid")
142 )
143 end
144
145 def test_poll
146 assert_raises { @order.poll.sync }
147 end
148 em :test_poll
149 end
150end