# 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>
<CompletedNumbers>
<TelephoneNumber>
<FullNumber>5555550000</FullNumber>
</TelephoneNumber>
</CompletedNumbers>
</OrderResponse>
RESPONSE
@order.poll.sync
assert_requested req
end
em :test_poll
end
class TestComplete < Minitest::Test
def setup
@order = BandwidthTNOrder::Complete.new(BandwidthIris::Order.new(
completed_numbers: {
telephone_number: { full_number: "5555550000" }
}
))
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