spec/lib/fedex/rate_spec.rb in fedex-3.1.0 vs spec/lib/fedex/rate_spec.rb in fedex-3.3.0
- old
+ new
@@ -39,20 +39,20 @@
{ :packaging_type => "YOUR_PACKAGING", :drop_off_type => "REGULAR_PICKUP" }
end
context "domestic shipment", :vcr do
it "should return a rate" do
- rate = fedex.rate({:shipper => shipper, :recipient => recipient, :packages => packages, :service_type => "FEDEX_GROUND"})
- rate.should be_an_instance_of(Rate)
+ rates = fedex.rate({:shipper => shipper, :recipient => recipient, :packages => packages, :service_type => "FEDEX_GROUND"})
+ rates.first.should be_an_instance_of(Rate)
end
end
context "canadian shipment", :vcr do
it "should return a rate" do
canadian_recipient = {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address=>"Address Line 1", :city => "Richmond", :state => "BC", :postal_code => "V7C4V4", :country_code => "CA", :residential => "true" }
- rate = fedex.rate({:shipper => shipper, :recipient => canadian_recipient, :packages => packages, :service_type => "FEDEX_GROUND"})
- rate.should be_an_instance_of(Rate)
+ rates = fedex.rate({:shipper => shipper, :recipient => canadian_recipient, :packages => packages, :service_type => "FEDEX_GROUND"})
+ rates.first.should be_an_instance_of(Rate)
end
end
context "canadian shipment including customs", :vcr do
it "should return a rate including international fees" do
@@ -138,12 +138,75 @@
:customs_value => {:currency => "USD", :amount => "150" }
}
]
customs_clearance = { :broker => broker, :clearance_brokerage => clearance_brokerage, :importer_of_record => importer_of_record, :recipient_customs_id => recipient_customs_id, :duties_payment => duties_payment, :commodities => commodities }
- rate = fedex.rate({:shipper => shipper, :recipient => canadian_recipient, :packages => packages, :service_type => "FEDEX_GROUND", :customs_clearance => customs_clearance})
- rate.should be_an_instance_of(Rate)
+ rates = fedex.rate({:shipper => shipper, :recipient => canadian_recipient, :packages => packages, :service_type => "FEDEX_GROUND", :customs_clearance => customs_clearance})
+ rates.first.should be_an_instance_of(Rate)
end
end
+
+ context "with service type specified", :vcr do
+
+ let(:rates) {
+ fedex.rate({
+ :shipper => shipper,
+ :recipient => recipient,
+ :packages => packages,
+ :service_type => "FEDEX_GROUND"
+ })
+ }
+
+ it "returns a single rate" do
+ rates.count.should eq 1
+ end
+
+ it "has service_type attribute" do
+ rates.first.service_type == 'FEDEX_GROUND'
+ end
+
+ end
+
+ context "with no service type specified", :vcr do
+
+ let(:rates) {
+ fedex.rate({
+ :shipper => shipper,
+ :recipient => recipient,
+ :packages => packages
+ })
+ }
+
+ it "returns multiple rates" do
+ rates.count.should > 1
+ end
+
+ context "each rate" do
+
+ it 'has service type attribute' do
+ rates.first.should respond_to(:service_type)
+ end
+
+ end
+
+ end
+
+ context "when there are no valid services available", :vcr do
+
+ let(:bad_shipper) { shipper.merge(state: 'Anywhere') }
+ let(:rates) {
+ fedex.rate({
+ :shipper => bad_shipper,
+ :recipient => recipient,
+ :packages => packages
+ })
+ }
+
+ it 'returns empty array' do
+ rates.should eq []
+ end
+
+ end
+
end
end
-end
\ No newline at end of file
+end