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 @order.poll.sync
64 assert_requested req
65 end
66 em :test_poll
67 end
68
69 class TestComplete < Minitest::Test
70 def setup
71 @order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new(
72 completed_numbers: {
73 telephone_number: { full_number: "5555550000" }
74 }
75 ))
76 end
77
78 def test_poll
79 assert_equal @order, @order.poll.sync
80 end
81 em :test_poll
82 end
83
84 class TestFailed < Minitest::Test
85 def setup
86 @order = BandwidthTNOrder::Failed.new(
87 BandwidthIris::Order.new(id: "oid")
88 )
89 end
90
91 def test_poll
92 assert_raises { @order.poll.sync }
93 end
94 em :test_poll
95 end
96end