|
@@ -56,6 +56,127 @@ class FulFillmentTest < Test::Unit::TestCase
|
|
|
assert_equal 450789469, fulfillment.order_id
|
|
|
end
|
|
|
end
|
|
|
- end
|
|
|
|
|
|
+ context "#create" do
|
|
|
+ should "create a fulfillment with line_items_by_fulfillment_order" do
|
|
|
+ create_fulfillment_attributes = {
|
|
|
+ message: "The message for this FO fulfillment",
|
|
|
+ notify_customer: true,
|
|
|
+ tracking_info: {
|
|
|
+ number: "XSDFHYR23475",
|
|
|
+ url: "https://tracking.example.com/XSDFHYR23475",
|
|
|
+ company: "TFTC - the fulfillment/tracking company"
|
|
|
+ },
|
|
|
+ line_items_by_fulfillment_order: [
|
|
|
+ {
|
|
|
+ fulfillment_order_id: 3,
|
|
|
+ fulfillment_order_line_items: [{ id: 2, quantity: 1 }]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ request_body = { fulfillment: create_fulfillment_attributes }
|
|
|
+ response_body = { fulfillment: create_fulfillment_attributes.merge(id: 346743624) }
|
|
|
+ fake "fulfillments", :method => :post,
|
|
|
+ request_body: ActiveSupport::JSON.encode(request_body),
|
|
|
+ body: ActiveSupport::JSON.encode(response_body)
|
|
|
+
|
|
|
+ fulfillment = ShopifyAPI::Fulfillment.create(create_fulfillment_attributes)
|
|
|
+ assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
|
|
|
+ assert fulfillment.persisted?
|
|
|
+ assert_equal 346743624, fulfillment.id
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ context "#save" do
|
|
|
+ should "save a fulfillment with line_items_by_fulfillment_order" do
|
|
|
+ create_fulfillment_attributes = {
|
|
|
+ message: "The message for this FO fulfillment",
|
|
|
+ notify_customer: true,
|
|
|
+ tracking_info: {
|
|
|
+ number: "XSDFHYR23475",
|
|
|
+ url: "https://tracking.example.com/XSDFHYR23475",
|
|
|
+ company: "TFTC - the fulfillment/tracking company"
|
|
|
+ },
|
|
|
+ line_items_by_fulfillment_order: [
|
|
|
+ {
|
|
|
+ fulfillment_order_id: 3,
|
|
|
+ fulfillment_order_line_items: [{ id: 2, quantity: 1 }]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ request_body = { fulfillment: create_fulfillment_attributes }
|
|
|
+ response_body = { fulfillment: create_fulfillment_attributes.merge(id: 346743624) }
|
|
|
+ fake "fulfillments", :method => :post,
|
|
|
+ request_body: ActiveSupport::JSON.encode(request_body),
|
|
|
+ body: ActiveSupport::JSON.encode(response_body)
|
|
|
+
|
|
|
+ fulfillment = ShopifyAPI::Fulfillment.new(create_fulfillment_attributes)
|
|
|
+ assert fulfillment.save
|
|
|
+ assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
|
|
|
+ assert fulfillment.persisted?
|
|
|
+ assert_equal 346743624, fulfillment.id
|
|
|
+ end
|
|
|
+
|
|
|
+ should "save a fulfillment without line_items_by_fulfillment_order" do
|
|
|
+ order_id = 8
|
|
|
+ create_fulfillment_attributes = {
|
|
|
+ message: "The message for this FO fulfillment",
|
|
|
+ notify_customer: true,
|
|
|
+ tracking_info: {
|
|
|
+ number: "XSDFHYR23475",
|
|
|
+ url: "https://tracking.example.com/XSDFHYR23475",
|
|
|
+ company: "TFTC - the fulfillment/tracking company"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ request_body = { fulfillment: create_fulfillment_attributes }
|
|
|
+ response_body = { fulfillment: create_fulfillment_attributes.merge(id: 346743624) }
|
|
|
+ fake "orders/#{order_id}/fulfillments", :method => :post,
|
|
|
+ request_body: ActiveSupport::JSON.encode(request_body),
|
|
|
+ body: ActiveSupport::JSON.encode(response_body)
|
|
|
+
|
|
|
+ fulfillment = ShopifyAPI::Fulfillment.new(create_fulfillment_attributes)
|
|
|
+ fulfillment.prefix_options[:order_id] = order_id
|
|
|
+
|
|
|
+ assert fulfillment.save
|
|
|
+ assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
|
|
|
+ assert fulfillment.persisted?
|
|
|
+ assert_equal 346743624, fulfillment.id
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ context "#update_tracking" do
|
|
|
+ should "be able to update tracking info for a fulfillment" do
|
|
|
+ tracking_info = {
|
|
|
+ number: 'JSDHFHAG',
|
|
|
+ url: 'https://example.com/fulfillment_tracking/JSDHFHAG',
|
|
|
+ company: 'ACME co',
|
|
|
+ }
|
|
|
+ fake_fulfillment = ActiveSupport::JSON.decode(load_fixture('fulfillment'))['fulfillment']
|
|
|
+ fake_fulfillment['tracking_number'] = tracking_info[:number]
|
|
|
+ fake_fulfillment['tracking_numbers'] = [tracking_info[:number]]
|
|
|
+ fake_fulfillment['tracking_url'] = tracking_info[:url]
|
|
|
+ fake_fulfillment['tracking_urls'] = [tracking_info[:url]]
|
|
|
+ fake_fulfillment['tracking_company'] = tracking_info[:company]
|
|
|
+
|
|
|
+ request_body = {
|
|
|
+ fulfillment: {
|
|
|
+ tracking_info: tracking_info,
|
|
|
+ notify_customer: true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ fake "fulfillments/#{fake_fulfillment['id']}/update_tracking", method: :post,
|
|
|
+ request_body: ActiveSupport::JSON.encode(request_body),
|
|
|
+ body: ActiveSupport::JSON.encode(fulfillment: fake_fulfillment)
|
|
|
+
|
|
|
+ fulfillment = ShopifyAPI::Fulfillment.new(id: fake_fulfillment['id'])
|
|
|
+ assert fulfillment.update_tracking(tracking_info: tracking_info, notify_customer: true)
|
|
|
+
|
|
|
+ assert_equal tracking_info[:number], fulfillment.tracking_number
|
|
|
+ assert_equal [tracking_info[:number]], fulfillment.tracking_numbers
|
|
|
+ assert_equal tracking_info[:url], fulfillment.tracking_url
|
|
|
+ assert_equal [tracking_info[:url]], fulfillment.tracking_urls
|
|
|
+ assert_equal tracking_info[:company], fulfillment.tracking_company
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
end
|