test_bandwidth_tn_order.rb

 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