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 </OrderResponse>
57 RESPONSE
58 new_order = PromiseMock.new
59 new_order.expect(:poll, nil)
60 @order.poll.sync
61 assert_requested req
62 end
63 em :test_poll
64 end
65
66 class TestComplete < Minitest::Test
67 def setup
68 @order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new)
69 end
70
71 def test_poll
72 assert_equal @order, @order.poll.sync
73 end
74 em :test_poll
75 end
76
77 class TestFailed < Minitest::Test
78 def setup
79 @order = BandwidthTNOrder::Failed.new(
80 BandwidthIris::Order.new(id: "oid")
81 )
82 end
83
84 def test_poll
85 assert_raises { @order.poll.sync }
86 end
87 em :test_poll
88 end
89end