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 CustomerOrderId: "test",
15 SiteId: "test_site",
16 PeerId: "test_peer",
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 assert_requested req
26 end
27 em :test_create
28
29 def test_for_received
30 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
31 order_status: "RECEIVED"
32 ))
33 assert_kind_of BandwidthTNOrder::Received, order
34 end
35
36 def test_for_complete
37 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
38 order_status: "COMPLETE"
39 ))
40 assert_kind_of BandwidthTNOrder::Complete, order
41 end
42
43 def test_for_failed
44 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
45 order_status: "FAILED"
46 ))
47 assert_kind_of BandwidthTNOrder::Failed, order
48 end
49
50 def test_for_unknown
51 order = BandwidthTNOrder.for(BandwidthIris::Order.new(
52 order_status: "randOmgarBagE"
53 ))
54 assert_kind_of BandwidthTNOrder, order
55 assert_equal :randomgarbage, order.status
56 end
57
58 def test_poll
59 order = BandwidthTNOrder.new(BandwidthIris::Order.new)
60 assert_raises { order.poll.sync }
61 end
62 em :test_poll
63
64 class TestReceived < Minitest::Test
65 def setup
66 @order = BandwidthTNOrder::Received.new(
67 BandwidthIris::Order.new(id: "oid")
68 )
69 end
70
71 def test_poll
72 req = stub_request(
73 :get,
74 "https://dashboard.bandwidth.com/v1.0/accounts//orders/oid"
75 ).to_return(status: 200, body: <<~RESPONSE)
76 <OrderResponse>
77 <OrderStatus>COMPLETE</OrderStatus>
78 <CompletedNumbers>
79 <TelephoneNumber>
80 <FullNumber>5555550000</FullNumber>
81 </TelephoneNumber>
82 </CompletedNumbers>
83 </OrderResponse>
84 RESPONSE
85 @order.poll.sync
86 assert_requested req
87 end
88 em :test_poll
89 end
90
91 class TestComplete < Minitest::Test
92 def setup
93 @order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new(
94 completed_numbers: {
95 telephone_number: { full_number: "5555550000" }
96 }
97 ))
98 end
99
100 def test_poll
101 assert_equal @order, @order.poll.sync
102 end
103 em :test_poll
104 end
105
106 class TestFailed < Minitest::Test
107 def setup
108 @order = BandwidthTNOrder::Failed.new(
109 BandwidthIris::Order.new(id: "oid")
110 )
111 end
112
113 def test_poll
114 assert_raises { @order.poll.sync }
115 end
116 em :test_poll
117 end
118end