require File.join(File.expand_path(File.dirname(__FILE__)), 'helper') describe ELC::USPS do describe "#new" do describe "(with an invalid username)" do it "should throw an exception" do lambda { ELC::USPS.new('') }.should raise_error lambda { ELC::USPS.new(nil) }.should raise_error end end describe "(with a valid username)" do it "should succeed" do lambda { ELC::USPS.new(VALID_USERNAME) }.should_not raise_error end end end describe "#track" do describe "(without a tracking number)" do it "should throw an exception" do lambda { ELC::USPS.new(VALID_USERNAME).track }.should raise_error end end describe "(with an existing tracking number)" do before do @usps = ELC::USPS.new(VALID_USERNAME) @result = @usps.track(TEST_REQUEST_1) end it "should return a non-empty Array" do @result.should be_an_instance_of(Array) @result.should_not be_empty end it "should contain only valid Hashes" do @result.each do |event| event.should be_an_instance_of(Hash) event.keys.reject { |k| VALID_KEYS.include?(k)}.should be_empty end end it "should include a valid Hash" do @result.should include({:eventdate => "May 30, 2001", :event => "NOTICE LEFT", :eventcity => "WILMINGTON", :eventstate => "DE", :eventzipcode => "19801", :eventtime => "11:07 am"}) end end describe "(with a non existing tracking number)" do it "should return an empty Array" do @result = ELC::USPS.new(VALID_USERNAME).track('XX999999999AR') @result.should be_an_instance_of(Array) @result.should be_empty end end end end