spec/lib/fedex/shipment_spec.rb in fedex-2.0.1 vs spec/lib/fedex/shipment_spec.rb in fedex-2.2.0

- old
+ new

@@ -1,149 +1,44 @@ require 'spec_helper' +require 'fedex/shipment' -module Fedex - describe Shipment do - context "missing required parameters" do - it "should raise Rate exception" do - lambda{ Shipment.new}.should raise_error(RateError) - end +describe Fedex::Request::Shipment do + describe "ship service" do + let(:fedex) { Fedex::Shipment.new(fedex_credentials) } + let(:shipper) do + {:name => "Sender", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Harrison", :state => "AR", :postal_code => "72601", :country_code => "US"} end - - context "required parameters present" do - subject { Shipment.new(fedex_credentials) } - it "should create a valid instance" do - subject.should be_an_instance_of(Shipment) - end + let(:recipient) do + {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Frankin Park", :state => "IL", :postal_code => "60131", :country_code => "US", :residential => true } end + let(:packages) do + [ + { + :weight => {:units => "LB", :value => 2}, + :dimensions => {:length => 10, :width => 5, :height => 4, :units => "IN" } + } + ] + end + let(:shipping_options) do + { :packaging_type => "YOUR_PACKAGING", :drop_off_type => "REGULAR_PICKUP" } + end - describe "rate service" do - let(:fedex) { Shipment.new(fedex_credentials) } - let(:shipper) do - {:name => "Sender", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Harrison", :state => "AR", :postal_code => "72601", :country_code => "US"} + context "domestic shipment", :vcr do + let(:filename) { + require 'tmpdir' + File.join(Dir.tmpdir, "label#{rand(15000)}.pdf") + } + let(:options) do + {:shipper => shipper, :recipient => recipient, :packages => packages, :service_type => "FEDEX_GROUND", :filename => filename} end - let(:recipient) do - {:name => "Recipient", :company => "Company", :phone_number => "555-555-5555", :address => "Main Street", :city => "Frankin Park", :state => "IL", :postal_code => "60131", :country_code => "US", :residential => true } - end - let(:packages) do - [ - { - :weight => {:units => "LB", :value => 2}, - :dimensions => {:length => 10, :width => 5, :height => 4, :units => "IN" } - }, - { - :weight => {:units => "LB", :value => 6}, - :dimensions => {:length => 5, :width => 5, :height => 4, :units => "IN" } - } - ] - end - let(:shipping_options) do - { :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) - end - end + it "succeeds" do + expect { + @shipment = fedex.ship(options) + }.to_not raise_error - 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) - end + @shipment.class.should_not == Fedex::RateError end - - context "canadian shipment including customs", :vcr do - it "should return a rate including international fees" 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" } - broker = { - :account_number => "510087143", - :tins => { :tin_type => "BUSINESS_NATIONAL", - :number => "431870271", - :usage => "Usage" }, - :contact => { :contact_id => "1", - :person_name => "Broker Name", - :title => "Broker", - :company_name => "Broker One", - :phone_number => "555-555-5555", - :phone_extension => "555-555-5555", - :pager_number => "555", - :fax_number=> "555-555-5555", - :e_mail_address => "contact@me.com" }, - :address => { :street_lines => "Main Street", - :city => "Franklin Park", - :state_or_province_code => 'IL', - :postal_code => '60131', - :urbanization_code => '123', - :country_code => 'US', - :residential => 'false' } - } - - clearance_brokerage = "BROKER_INCLUSIVE" - - importer_of_record= { - :account_number => "22222", - :tins => { :tin_type => "BUSINESS_NATIONAL", - :number => "22222", - :usage => "Usage" }, - :contact => { :contact_id => "1", - :person_name => "Importer Name", - :title => "Importer", - :company_name => "Importer One", - :phone_number => "555-555-5555", - :phone_extension => "555-555-5555", - :pager_number => "555", - :fax_number=> "555-555-5555", - :e_mail_address => "contact@me.com" }, - :address => { :street_lines => "Main Street", - :city => "Chicago", - :state_or_province_code => 'IL', - :postal_code => '60611', - :urbanization_code => '2308', - :country_code => 'US', - :residential => 'false' } - } - - recipient_customs_id = { :type => 'COMPANY', - :value => '1254587' } - - - duties_payment = { :payment_type => "SENDER", - :payor => { :account_number => "510087143", - :country_code => "US" } } - - customs_value = { :currency => "USD", - :amount => "200" } - commodities = [{ - :name => "Cotton Coat", - :number_of_pieces => "2", - :description => "Cotton Coat", - :country_of_manufacture => "US", - :harmonized_code => "6103320000", - :weight => {:units => "LB", :value => "2"}, - :quantity => "3", - :unit_price => {:currency => "USD", :amount => "50" }, - :customs_value => {:currency => "USD", :amount => "150" } - }, - { - :name => "Poster", - :number_of_pieces => "1", - :description => "Paper Poster", - :country_of_manufacture => "US", - :harmonized_code => "4817100000", - :weight => {:units => "LB", :value => "0.2"}, - :quantity => "3", - :unit_price => {:currency => "USD", :amount => "50" }, - :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) - end - end end + end -end \ No newline at end of file +end