test/unit/services/shipwire_test.rb in active_fulfillment-1.0.3 vs test/unit/services/shipwire_test.rb in active_fulfillment-2.0.0

- old
+ new

@@ -19,10 +19,11 @@ :address1 => '1234 Penny Lane', :city => 'Jonsetown', :state => 'NC', :country => 'US', :zip => '23456', + :company => 'MyCorp', :email => 'buyer@jadedpallet.com' } @line_items = [ { :sku => '9999', :quantity => 25 } ] end @@ -84,20 +85,30 @@ assert_equal 926, response.stock_levels['BlackDog'] assert_equal 805, response.stock_levels['MoustacheCat'] assert_equal 921, response.stock_levels['KingMonkey'] end + def test_inventory_request_with_include_empty_tag + @shipwire = ShipwireService.new( + :login => 'cody@example.com', + :password => 'test', + :include_empty_stock => true + ) + xml = REXML::Document.new(@shipwire.send(:build_inventory_request, {})) + assert REXML::XPath.first(xml, '//IncludeEmpty') + end + def test_no_tracking_numbers_available @shipwire.expects(:ssl_post).returns(successful_empty_tracking_response) response = @shipwire.fetch_tracking_numbers(['1234']) assert response.success? assert_equal Hash.new, response.tracking_numbers end def test_successful_tracking - expected = { "2986" => "1ZW682E90326614239", - "2987" => "1ZW682E90326795080" } + expected = { "2986" => ["1ZW682E90326614239"], + "2987" => ["1ZW682E90326795080"] } @shipwire.expects(:ssl_post).returns(successful_tracking_response) response = @shipwire.fetch_tracking_numbers(["2986", "2987"]) assert response.success? assert_equal "3", response.params["total_orders"] @@ -130,23 +141,61 @@ def test_invalid_credentials @shipwire.expects(:ssl_post).returns(invalid_login_response) assert !@shipwire.valid_credentials? end + def test_affiliate_id + ActiveMerchant::Fulfillment::ShipwireService.affiliate_id = 'affiliate_id' + + xml = REXML::Document.new(@shipwire.send(:build_fulfillment_request, '123456', @address, @line_items, @options)) + affiliate_id = REXML::XPath.first(xml, "//AffiliateId") + assert_equal 'affiliate_id', affiliate_id.text + end + + def test_company_name_in_request + xml = REXML::Document.new(@shipwire.send(:build_fulfillment_request, '123456', @address, @line_items, @options)) + company_node = REXML::XPath.first(xml, "//Company") + assert_equal 'MyCorp', company_node.text + end + + def test_order_excludes_note_by_default + xml = REXML::Document.new(@shipwire.send(:build_fulfillment_request, '123456', @address, @line_items, @options)) + note_node = REXML::XPath.first(xml, "//Note").cdatas.first + assert_nil note_node + end + + def test_order_includes_note_when_present + @options[:note] = "A test note" + xml = REXML::Document.new(@shipwire.send(:build_fulfillment_request, '123456', @address, @line_items, @options)) + note_node = REXML::XPath.first(xml, "//Note").cdatas.first + assert_equal "A test note", note_node.to_s + end + + def test_error_response_cdata_parsing + @shipwire.expects(:ssl_post).returns(xml_fixture('shipwire/fulfillment_failure_response')) + assert !@shipwire.valid_credentials? + end + private def successful_empty_tracking_response "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n<TrackingUpdateResponse><Status>Test</Status><TotalOrders></TotalOrders><TotalShippedOrders></TotalShippedOrders><TotalProducts></TotalProducts><Bookmark></Bookmark></TrackingUpdateResponse>" end def successful_tracking_response <<-XML <?xml version="1.0"?> <TrackingUpdateResponse> <Status>Test</Status> - <Order id="2986" shipped="YES" trackingNumber="1ZW682E90326614239" shipper="UPS GD" handling="1.00" shipping="13.66" total="14.66"/> - <Order id="2987" shipped="YES" trackingNumber="1ZW682E90326795080" shipper="UPS GD" handling="1.50" shipping="9.37" total="10.87"/> - <Order id="2988" shipped="NO" trackingNumber="" shipper="UPS GD" handling="" shipping="" total=""/> + <Order id="2986" shipped="YES" shipper="UPS GD" handling="1.00" shipping="13.66" total="14.66"> + <TrackingNumber>1ZW682E90326614239</TrackingNumber> + </Order> + <Order id="2987" shipped="YES" shipper="UPS GD" handling="1.50" shipping="9.37" total="10.87"> + <TrackingNumber>1ZW682E90326795080</TrackingNumber> + </Order> + <Order id="2988" shipped="NO" shipper="UPS GD" handling="" shipping="" total=""> + <TrackingNumber></TrackingNumber> + </Order> <TotalOrders>3</TotalOrders> <TotalShippedOrders>2</TotalShippedOrders> <Bookmark>2006-04-28 20:35:45</Bookmark> </TrackingUpdateResponse> XML @@ -155,25 +204,55 @@ def successful_live_tracking_response <<-XML <?xml version="1.0" encoding="ISO-8859-1"?> <TrackingUpdateResponse> <Status>0</Status> - <Order id="21" shipped="YES" trackingNumber="1Z6296VW0398500001" shipper="5" handling="0.00" shipping="6.58" total="6.58"/> - <Order id="22" shipped="YES" trackingNumber="1Z6296VW0390790002" shipper="5" handling="0.00" shipping="8.13" total="8.13"/> - <Order id="23" shipped="YES" trackingNumber="1Z6296VW0396490003" shipper="5" handling="0.00" shipping="7.63" total="7.63"/> - <Order id="24" shipped="YES" trackingNumber="1Z6296VW0390200004" shipper="5" handling="0.00" shipping="8.97" total="8.97"/> - <Order id="25" shipped="YES" trackingNumber="1Z6296VW0393240005" shipper="5" handling="0.00" shipping="8.42" total="8.42"/> - <Order id="26" shipped="YES" trackingNumber="1Z6296VW0396400006" shipper="5" handling="0.00" shipping="8.42" total="8.42"/> - <Order id="2581" shipped="YES" trackingNumber="1Z6296VW0391160007" shipper="5" handling="0.00" shipping="8.21" total="8.21"/> - <Order id="2576" shipped="YES" trackingNumber="CJ3026000018US" shipper="43" handling="0.00" shipping="18.60" total="18.60"/> - <Order id="2593" shipped="YES" trackingNumber="1Z6296VW0398660008" shipper="5" handling="0.00" shipping="7.63" total="7.63"/> - <Order id="2598" shipped="YES" trackingNumber="1Z6296VW0391610009" shipper="5" handling="0.00" shipping="9.84" total="9.84"/> - <Order id="2610" shipped="YES" trackingNumber="1Z6296VW0395650010" shipper="5" handling="0.00" shipping="7.63" total="7.63"/> - <Order id="2611" shipped="YES" trackingNumber="1Z6296VW0397050011" shipper="5" handling="0.00" shipping="7.13" total="7.13"/> - <Order id="2613" shipped="YES" trackingNumber="1Z6296VW0398970012" shipper="5" handling="0.00" shipping="8.97" total="8.97"/> - <Order id="2616" shipped="NO" trackingNumber="" shipper="5" handling="0.00" shipping="9.84" total="9.84"/> - <Order id="2631" shipped="NO" trackingNumber="" shipper="" handling="" shipping="" total=""/> + <Order id="21" shipped="YES" shipper="5" handling="0.00" shipping="6.58" total="6.58"> + <TrackingNumber>1Z6296VW0398500001</TrackingNumber> + </Order> + <Order id="22" shipped="YES" shipper="5" handling="0.00" shipping="8.13" total="8.13"> + <TrackingNumber>1Z6296VW0390790002</TrackingNumber> + </Order> + <Order id="23" shipped="YES" shipper="5" handling="0.00" shipping="7.63" total="7.63"> + <TrackingNumber>1Z6296VW0396490003</TrackingNumber> + </Order> + <Order id="24" shipped="YES" shipper="5" handling="0.00" shipping="8.97" total="8.97"> + <TrackingNumber>1Z6296VW0390200004</TrackingNumber> + </Order> + <Order id="25" shipped="YES" shipper="5" handling="0.00" shipping="8.42" total="8.42"> + <TrackingNumber>1Z6296VW0393240005</TrackingNumber> + </Order> + <Order id="26" shipped="YES" shipper="5" handling="0.00" shipping="8.42" total="8.42"> + <TrackingNumber>1Z6296VW0396400006</TrackingNumber> + </Order> + <Order id="2581" shipped="YES" shipper="5" handling="0.00" shipping="8.21" total="8.21"> + <TrackingNumber>1Z6296VW0391160007</TrackingNumber> + </Order> + <Order id="2576" shipped="YES" shipper="43" handling="0.00" shipping="18.60" total="18.60"> + <TrackingNumber>CJ3026000018US</TrackingNumber> + </Order> + <Order id="2593" shipped="YES" shipper="5" handling="0.00" shipping="7.63" total="7.63"> + <TrackingNumber>1Z6296VW0398660008</TrackingNumber> + </Order> + <Order id="2598" shipped="YES" shipper="5" handling="0.00" shipping="9.84" total="9.84"> + <TrackingNumber>1Z6296VW0391610009</TrackingNumber> + </Order> + <Order id="2610" shipped="YES" shipper="5" handling="0.00" shipping="7.63" total="7.63"> + <TrackingNumber>1Z6296VW0395650010</TrackingNumber> + </Order> + <Order id="2611" shipped="YES" shipper="5" handling="0.00" shipping="7.13" total="7.13"> + <TrackingNumber>1Z6296VW0397050011</TrackingNumber> + </Order> + <Order id="2613" shipped="YES" shipper="5" handling="0.00" shipping="8.97" total="8.97"> + <TrackingNumber>1Z6296VW0398970012</TrackingNumber> + </Order> + <Order id="2616" shipped="NO" shipper="5" handling="0.00" shipping="9.84" total="9.84"> + <TrackingNumber></TrackingNumber> + </Order> + <Order id="2631" shipped="NO" shipper="" handling="" shipping="" total=""> + <TrackingNumber></TrackingNumber> + </Order> <TotalOrders>15</TotalOrders> <TotalShippedOrders>13</TotalShippedOrders> <TotalProducts/> <Bookmark/> </TrackingUpdateResponse> @@ -183,10 +262,10 @@ def invalid_login_response <<-XML <?xml version="1.0" encoding="ISO-8859-1"?> <TrackingUpdateResponse><Status>Error</Status><ErrorMessage> -Error with EmailAddress, valid email is required. +Error with Valid Username/EmailAddress and Password Required. There is an error in XML document. </ErrorMessage></TrackingUpdateResponse> XML end end