# frozen_string_literal: true
require "test_helper"
require "bandwidth_tn_order"
class BandwidthTNOrderTest < Minitest::Test
def test_for_received
order = BandwidthTNOrder.for(BandwidthIris::Order.new(
order_status: "RECEIVED"
))
assert_kind_of BandwidthTNOrder::Received, order
end
def test_for_complete
order = BandwidthTNOrder.for(BandwidthIris::Order.new(
order_status: "COMPLETE"
))
assert_kind_of BandwidthTNOrder::Complete, order
end
def test_for_failed
order = BandwidthTNOrder.for(BandwidthIris::Order.new(
order_status: "FAILED"
))
assert_kind_of BandwidthTNOrder::Failed, order
end
def test_for_unknown
order = BandwidthTNOrder.for(BandwidthIris::Order.new(
order_status: "randOmgarBagE"
))
assert_kind_of BandwidthTNOrder, order
assert_equal :randomgarbage, order.status
end
def test_poll
order = BandwidthTNOrder.new(BandwidthIris::Order.new)
assert_raises { order.poll.sync }
end
em :test_poll
class TestReceived < Minitest::Test
def setup
@order = BandwidthTNOrder::Received.new(
BandwidthIris::Order.new(id: "oid")
)
end
def test_poll
req = stub_request(
:get,
"https://dashboard.bandwidth.com/v1.0/accounts//orders/oid"
).to_return(status: 200, body: <<~RESPONSE)
<OrderResponse>
<OrderStatus>COMPLETE</OrderStatus>
</OrderResponse>
RESPONSE
new_order = PromiseMock.new
new_order.expect(:poll, nil)
@order.poll.sync
assert_requested req
end
em :test_poll
end
class TestComplete < Minitest::Test
def setup
@order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new)
end
def test_poll
assert_equal @order, @order.poll.sync
end
em :test_poll
end
class TestFailed < Minitest::Test
def setup
@order = BandwidthTNOrder::Failed.new(
BandwidthIris::Order.new(id: "oid")
)
end
def test_poll
assert_raises { @order.poll.sync }
end
em :test_poll
end
end