# 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
stub_request(
:post,
"https://api.catapult.inetwork.com/v1/users/catapult_user/phoneNumbers"
).with(
body: open(__dir__ + "/data/catapult_import_body.json").read.chomp,
headers: {
"Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
"Content-Type" => "application/json"
}
).to_return(status: 201)
@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
req = stub_request(
:post,
"https://api.catapult.inetwork.com/v1/users/catapult_user/phoneNumbers"
).with(
body: open(__dir__ + "/data/catapult_import_body.json").read.chomp,
headers: {
"Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
"Content-Type" => "application/json"
}
).to_return(status: 201)
assert_equal @order, @order.poll.sync
assert_requested req
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