# 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) COMPLETE 5555550000 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: 200) @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: 200) 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