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			stub_request(
 64				:post,
 65				"https://api.catapult.inetwork.com/v1/users/catapult_user/phoneNumbers"
 66			).with(
 67				body: File.open("#{__dir__}/data/catapult_import_body.json").read.chomp,
 68				headers: {
 69					"Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
 70					"Content-Type" => "application/json"
 71				}
 72			).to_return(status: 201)
 73			@order.poll.sync
 74			assert_requested req
 75		end
 76		em :test_poll
 77	end
 78
 79	class TestComplete < Minitest::Test
 80		def setup
 81			@order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new(
 82				completed_numbers: {
 83					telephone_number: { full_number: "5555550000" }
 84				}
 85			))
 86		end
 87
 88		def test_poll
 89			req = stub_request(
 90				:post,
 91				"https://api.catapult.inetwork.com/v1/users/catapult_user/phoneNumbers"
 92			).with(
 93				body: File.open("#{__dir__}/data/catapult_import_body.json").read.chomp,
 94				headers: {
 95					"Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
 96					"Content-Type" => "application/json"
 97				}
 98			).to_return(status: 201)
 99			assert_equal @order, @order.poll.sync
100			assert_requested req
101		end
102		em :test_poll
103	end
104
105	class TestFailed < Minitest::Test
106		def setup
107			@order = BandwidthTNOrder::Failed.new(
108				BandwidthIris::Order.new(id: "oid")
109			)
110		end
111
112		def test_poll
113			assert_raises { @order.poll.sync }
114		end
115		em :test_poll
116	end
117end