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_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