shopify_api 9.0.2 → 9.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +36 -0
  3. data/.github/workflows/build.yml +41 -0
  4. data/.gitignore +2 -1
  5. data/.rubocop.yml +23 -3
  6. data/.rubocop_todo.yml +75 -0
  7. data/CHANGELOG.md +43 -0
  8. data/CONTRIBUTING.md +1 -1
  9. data/Gemfile +5 -0
  10. data/Gemfile.lock +151 -0
  11. data/Gemfile_ar51 +1 -1
  12. data/README.md +47 -31
  13. data/RELEASING +10 -6
  14. data/Rakefile +16 -5
  15. data/SECURITY.md +59 -0
  16. data/docs/_config.yml +1 -0
  17. data/docs/_includes/footer.html +28 -0
  18. data/docs/_includes/head.html +28 -0
  19. data/docs/_layouts/index.html +57 -0
  20. data/docs/graphql.md +47 -2
  21. data/docs/index.md +639 -0
  22. data/lib/active_resource/connection_ext.rb +1 -0
  23. data/lib/active_resource/detailed_log_subscriber.rb +6 -7
  24. data/lib/active_resource/json_errors.rb +8 -2
  25. data/lib/shopify_api.rb +8 -1
  26. data/lib/shopify_api/api_access.rb +57 -0
  27. data/lib/shopify_api/api_version.rb +6 -5
  28. data/lib/shopify_api/connection.rb +1 -0
  29. data/lib/shopify_api/countable.rb +3 -2
  30. data/lib/shopify_api/disable_prefix_check.rb +2 -2
  31. data/lib/shopify_api/events.rb +2 -1
  32. data/lib/shopify_api/graphql.rb +28 -8
  33. data/lib/shopify_api/limits.rb +3 -2
  34. data/lib/shopify_api/message_enricher.rb +11 -9
  35. data/lib/shopify_api/meta.rb +0 -1
  36. data/lib/shopify_api/metafields.rb +5 -4
  37. data/lib/shopify_api/pagination_link_headers.rb +5 -4
  38. data/lib/shopify_api/resources.rb +1 -0
  39. data/lib/shopify_api/resources/access_scope.rb +1 -1
  40. data/lib/shopify_api/resources/access_token.rb +1 -0
  41. data/lib/shopify_api/resources/address.rb +1 -0
  42. data/lib/shopify_api/resources/announcement.rb +2 -1
  43. data/lib/shopify_api/resources/application_charge.rb +1 -0
  44. data/lib/shopify_api/resources/application_credit.rb +1 -0
  45. data/lib/shopify_api/resources/article.rb +3 -2
  46. data/lib/shopify_api/resources/asset.rb +6 -5
  47. data/lib/shopify_api/resources/assigned_fulfillment_order.rb +1 -1
  48. data/lib/shopify_api/resources/base.rb +12 -8
  49. data/lib/shopify_api/resources/billing_address.rb +1 -0
  50. data/lib/shopify_api/resources/blog.rb +2 -1
  51. data/lib/shopify_api/resources/carrier_service.rb +1 -0
  52. data/lib/shopify_api/resources/cart.rb +2 -1
  53. data/lib/shopify_api/resources/collect.rb +1 -0
  54. data/lib/shopify_api/resources/collection_listing.rb +1 -0
  55. data/lib/shopify_api/resources/comment.rb +20 -5
  56. data/lib/shopify_api/resources/country.rb +1 -0
  57. data/lib/shopify_api/resources/custom_collection.rb +4 -3
  58. data/lib/shopify_api/resources/customer.rb +2 -1
  59. data/lib/shopify_api/resources/customer_group.rb +1 -0
  60. data/lib/shopify_api/resources/customer_invite.rb +1 -0
  61. data/lib/shopify_api/resources/customer_saved_search.rb +2 -1
  62. data/lib/shopify_api/resources/discount_code.rb +1 -0
  63. data/lib/shopify_api/resources/discount_code_batch.rb +34 -0
  64. data/lib/shopify_api/resources/draft_order.rb +1 -0
  65. data/lib/shopify_api/resources/draft_order_invoice.rb +1 -0
  66. data/lib/shopify_api/resources/event.rb +1 -0
  67. data/lib/shopify_api/resources/fulfillment.rb +12 -3
  68. data/lib/shopify_api/resources/fulfillment_event.rb +1 -0
  69. data/lib/shopify_api/resources/fulfillment_order.rb +30 -16
  70. data/lib/shopify_api/resources/fulfillment_order_locations_for_move.rb +1 -0
  71. data/lib/shopify_api/resources/fulfillment_request.rb +1 -0
  72. data/lib/shopify_api/resources/fulfillment_service.rb +1 -0
  73. data/lib/shopify_api/resources/fulfillment_v2.rb +3 -2
  74. data/lib/shopify_api/resources/gift_card.rb +1 -0
  75. data/lib/shopify_api/resources/image.rb +2 -1
  76. data/lib/shopify_api/resources/inventory_level.rb +3 -4
  77. data/lib/shopify_api/resources/line_item.rb +4 -3
  78. data/lib/shopify_api/resources/location.rb +1 -1
  79. data/lib/shopify_api/resources/marketing_event.rb +1 -0
  80. data/lib/shopify_api/resources/metafield.rb +1 -0
  81. data/lib/shopify_api/resources/note_attribute.rb +1 -0
  82. data/lib/shopify_api/resources/option.rb +1 -0
  83. data/lib/shopify_api/resources/order.rb +2 -1
  84. data/lib/shopify_api/resources/order_risk.rb +1 -0
  85. data/lib/shopify_api/resources/page.rb +1 -0
  86. data/lib/shopify_api/resources/payment_details.rb +1 -0
  87. data/lib/shopify_api/resources/policy.rb +1 -0
  88. data/lib/shopify_api/resources/price_rule.rb +1 -1
  89. data/lib/shopify_api/resources/product.rb +27 -3
  90. data/lib/shopify_api/resources/product_listing.rb +1 -0
  91. data/lib/shopify_api/resources/province.rb +1 -0
  92. data/lib/shopify_api/resources/receipt.rb +1 -0
  93. data/lib/shopify_api/resources/recurring_application_charge.rb +4 -1
  94. data/lib/shopify_api/resources/redirect.rb +1 -0
  95. data/lib/shopify_api/resources/refund.rb +2 -1
  96. data/lib/shopify_api/resources/report.rb +1 -0
  97. data/lib/shopify_api/resources/resource_feedback.rb +1 -1
  98. data/lib/shopify_api/resources/rule.rb +1 -0
  99. data/lib/shopify_api/resources/script_tag.rb +1 -0
  100. data/lib/shopify_api/resources/shipping_address.rb +1 -0
  101. data/lib/shopify_api/resources/shipping_line.rb +1 -0
  102. data/lib/shopify_api/resources/shipping_zone.rb +1 -0
  103. data/lib/shopify_api/resources/shop.rb +2 -1
  104. data/lib/shopify_api/resources/smart_collection.rb +4 -8
  105. data/lib/shopify_api/resources/storefront_access_token.rb +1 -0
  106. data/lib/shopify_api/resources/tax_line.rb +1 -0
  107. data/lib/shopify_api/resources/tax_service.rb +1 -0
  108. data/lib/shopify_api/resources/theme.rb +1 -0
  109. data/lib/shopify_api/resources/transaction.rb +1 -0
  110. data/lib/shopify_api/resources/usage_charge.rb +1 -0
  111. data/lib/shopify_api/resources/user.rb +1 -0
  112. data/lib/shopify_api/resources/variant.rb +35 -0
  113. data/lib/shopify_api/resources/webhook.rb +1 -0
  114. data/lib/shopify_api/session.rb +43 -14
  115. data/lib/shopify_api/version.rb +2 -1
  116. data/lib/verify_docs.rb +8 -0
  117. data/service.yml +1 -1
  118. data/shopify_api.gemspec +13 -6
  119. data/test/access_token_test.rb +6 -5
  120. data/test/active_resource/json_errors_test.rb +6 -6
  121. data/test/api_access_test.rb +153 -0
  122. data/test/api_version_test.rb +3 -3
  123. data/test/application_charge_test.rb +30 -27
  124. data/test/application_credit_test.rb +10 -9
  125. data/test/article_test.rb +34 -35
  126. data/test/asset_test.rb +14 -6
  127. data/test/assigned_fulfillment_order_test.rb +5 -4
  128. data/test/base_test.rb +64 -49
  129. data/test/blog_test.rb +4 -3
  130. data/test/carrier_service_test.rb +7 -6
  131. data/test/cart_test.rb +2 -1
  132. data/test/collect_test.rb +4 -3
  133. data/test/collection_listing_test.rb +21 -16
  134. data/test/collection_publication_test.rb +8 -8
  135. data/test/collection_test.rb +20 -19
  136. data/test/countable_test.rb +3 -2
  137. data/test/currency_test.rb +5 -5
  138. data/test/custom_collection_test.rb +4 -3
  139. data/test/customer_saved_search_test.rb +18 -8
  140. data/test/customer_test.rb +22 -14
  141. data/test/detailed_log_subscriber_test.rb +15 -11
  142. data/test/discount_code_batch_test.rb +41 -0
  143. data/test/discount_code_test.rb +21 -15
  144. data/test/draft_order_test.rb +68 -52
  145. data/test/fixtures/assigned_fulfillment_orders.json +2 -0
  146. data/test/fixtures/discount_code_batch.json +14 -0
  147. data/test/fixtures/discount_code_batch_discount_codes.json +21 -0
  148. data/test/fixtures/fulfillment_order.json +1 -0
  149. data/test/fixtures/fulfillment_orders.json +2 -0
  150. data/test/fulfillment_event_test.rb +31 -26
  151. data/test/fulfillment_order_test.rb +215 -147
  152. data/test/fulfillment_order_test_helper.rb +1 -0
  153. data/test/fulfillment_request_test.rb +10 -8
  154. data/test/fulfillment_service_test.rb +13 -12
  155. data/test/fulfillment_test.rb +81 -66
  156. data/test/fulfillment_v2_test.rb +16 -12
  157. data/test/gift_card_test.rb +6 -4
  158. data/test/graphql_test.rb +55 -23
  159. data/test/image_test.rb +19 -17
  160. data/test/inventory_level_test.rb +24 -15
  161. data/test/lib/webmock_extensions/last_request.rb +1 -1
  162. data/test/limits_test.rb +2 -1
  163. data/test/location_test.rb +2 -1
  164. data/test/marketing_event_test.rb +20 -20
  165. data/test/message_enricher_test.rb +6 -6
  166. data/test/meta_test.rb +7 -9
  167. data/test/metafield_test.rb +30 -20
  168. data/test/order_risk_test.rb +17 -16
  169. data/test/order_test.rb +43 -28
  170. data/test/pagination_test.rb +89 -56
  171. data/test/policy_test.rb +6 -5
  172. data/test/price_rule_test.rb +20 -15
  173. data/test/product_listing_test.rb +20 -20
  174. data/test/product_publication_test.rb +8 -8
  175. data/test/product_test.rb +71 -20
  176. data/test/publication_test.rb +3 -3
  177. data/test/recurring_application_charge_test.rb +104 -42
  178. data/test/redirect_test.rb +4 -3
  179. data/test/refund_test.rb +22 -17
  180. data/test/report_test.rb +12 -10
  181. data/test/resource_feedback_test.rb +14 -13
  182. data/test/script_tag_test.rb +10 -9
  183. data/test/session_test.rb +234 -43
  184. data/test/shipping_zone_test.rb +4 -3
  185. data/test/shop_test.rb +47 -33
  186. data/test/smart_collection_test.rb +5 -29
  187. data/test/storefront_access_token_test.rb +13 -15
  188. data/test/tax_service_test.rb +7 -4
  189. data/test/tender_transaction_test.rb +3 -3
  190. data/test/test_helper.rb +14 -12
  191. data/test/transaction_test.rb +4 -3
  192. data/test/usage_charge_test.rb +12 -8
  193. data/test/user_test.rb +4 -3
  194. data/test/variant_test.rb +50 -23
  195. data/test/webhook_test.rb +10 -7
  196. metadata +30 -15
  197. data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +0 -1027
  198. data/.travis.yml +0 -23
  199. data/bin/shopify +0 -3
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
  require 'fulfillment_order_test_helper'
3
4
 
@@ -8,10 +9,12 @@ class FulFillmentOrderTest < Test::Unit::TestCase
8
9
  super
9
10
  @url_prefix = url_prefix_for_activated_session_for('2020-01')
10
11
 
11
- fake 'fulfillment_orders',
12
+ fake(
13
+ 'fulfillment_orders',
12
14
  url: "#{@url_prefix}/fulfillment_orders/519788021.json",
13
15
  method: :get,
14
16
  body: load_fixture('fulfillment_order')
17
+ )
15
18
  end
16
19
 
17
20
  context "FulfillmentOrder" do
@@ -20,7 +23,7 @@ class FulFillmentOrderTest < Test::Unit::TestCase
20
23
  url_prefix_for_activated_session_for('2019-10')
21
24
  fulfillment_order = load_fixture('fulfillment_order')
22
25
 
23
- exception = assert_raises NotImplementedError do
26
+ exception = assert_raises(NotImplementedError) do
24
27
  ShopifyAPI::FulfillmentOrder.new(ActiveSupport::JSON.decode(fulfillment_order))
25
28
  end
26
29
  assert_equal(
@@ -34,12 +37,13 @@ class FulFillmentOrderTest < Test::Unit::TestCase
34
37
  should "raise NotImplementedError when api_version is older than 2020-01" do
35
38
  @url_prefix = url_prefix_for_activated_session_for('2019-10')
36
39
 
37
- fake 'fulfillment_orders',
40
+ fake(
41
+ 'fulfillment_orders',
38
42
  url: "#{@url_prefix}/fulfillment_orders/519788021.json",
39
43
  method: :get,
40
44
  body: load_fixture('fulfillment_order')
41
-
42
- exception = assert_raises NotImplementedError do
45
+ )
46
+ exception = assert_raises(NotImplementedError) do
43
47
  ShopifyAPI::FulfillmentOrder.find(519788021)
44
48
  end
45
49
  assert_equal(
@@ -47,7 +51,7 @@ class FulFillmentOrderTest < Test::Unit::TestCase
47
51
  exception.message
48
52
  )
49
53
 
50
- assert_raises NotImplementedError do
54
+ assert_raises(NotImplementedError) do
51
55
  ShopifyAPI::FulfillmentOrder.all(params: { order_id: 450789469 })
52
56
  end
53
57
  end
@@ -56,32 +60,33 @@ class FulFillmentOrderTest < Test::Unit::TestCase
56
60
  context "#find" do
57
61
  should "be able to find fulfillment order" do
58
62
  fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
59
- assert fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
60
- assert_equal 519788021, fulfillment_order.id
61
- assert_equal 450789469, fulfillment_order.order_id
63
+ assert(fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder))
64
+ assert_equal(519788021, fulfillment_order.id)
65
+ assert_equal(450789469, fulfillment_order.order_id)
62
66
  end
63
67
  end
64
68
 
65
69
  context "#all" do
66
70
  should "be able to list fulfillment orders for an order" do
67
- fake 'orders',
71
+ fake(
72
+ 'orders',
68
73
  url: "#{@url_prefix}/orders/450789469/fulfillment_orders.json",
69
74
  method: :get,
70
75
  body: load_fixture('fulfillment_orders')
71
-
76
+ )
72
77
  fulfillment_orders = ShopifyAPI::FulfillmentOrder.all(
73
78
  params: { order_id: 450789469 }
74
79
  )
75
80
 
76
- assert_equal [519788021, 519788022], fulfillment_orders.map(&:id).sort
81
+ assert_equal([519788021, 519788022], fulfillment_orders.map(&:id).sort)
77
82
  fulfillment_orders.each do |fulfillment_order|
78
- assert fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
79
- assert_equal 450789469, fulfillment_order.order_id
83
+ assert(fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder))
84
+ assert_equal(450789469, fulfillment_order.order_id)
80
85
  end
81
86
  end
82
87
 
83
88
  should "require order_id" do
84
- assert_raises ShopifyAPI::ValidationException do
89
+ assert_raises(ShopifyAPI::ValidationException) do
85
90
  ShopifyAPI::FulfillmentOrder.all
86
91
  end
87
92
  end
@@ -90,37 +95,39 @@ class FulFillmentOrderTest < Test::Unit::TestCase
90
95
  context "#fulfillments" do
91
96
  should "be able to list fulfillments for a fulfillment order" do
92
97
  fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
93
- fake 'fulfillment_orders',
98
+ fake(
99
+ 'fulfillment_orders',
94
100
  url: "#{@url_prefix}/fulfillment_orders/#{fulfillment_order.id}/fulfillments.json",
95
101
  method: :get,
96
102
  body: load_fixture('fulfillments')
97
-
103
+ )
98
104
  fulfillments = fulfillment_order.fulfillments
99
105
 
100
- assert_equal 1, fulfillments.count
106
+ assert_equal(1, fulfillments.count)
101
107
  fulfillment = fulfillments.first
102
- assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
103
- assert_equal 450789469, fulfillment.order_id
108
+ assert(fulfillment.is_a?(ShopifyAPI::Fulfillment))
109
+ assert_equal(450789469, fulfillment.order_id)
104
110
  end
105
111
  end
106
112
 
107
113
  context "#locations_for_move" do
108
114
  should "be able to list locations for a fulfillment order" do
109
115
  fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
110
- fake 'fulfillment_orders',
116
+ fake(
117
+ 'fulfillment_orders',
111
118
  url: "#{@url_prefix}/fulfillment_orders/#{fulfillment_order.id}/locations_for_move.json",
112
119
  method: :get,
113
120
  body: load_fixture('fulfillment_order_locations_for_move')
114
-
121
+ )
115
122
  locations_for_move = fulfillment_order.locations_for_move
116
123
 
117
- assert_equal 2, locations_for_move.count
124
+ assert_equal(2, locations_for_move.count)
118
125
  location_for_move = locations_for_move.first
119
- assert location_for_move.is_a?(ShopifyAPI::FulfillmentOrderLocationsForMove)
126
+ assert(location_for_move.is_a?(ShopifyAPI::FulfillmentOrderLocationsForMove))
120
127
 
121
128
  location = location_for_move.location
122
- assert location.is_a?(ShopifyAPI::Location)
123
- assert_equal 1059367776,location.id
129
+ assert(location.is_a?(ShopifyAPI::Location))
130
+ assert_equal(1059367776, location.id)
124
131
  end
125
132
  end
126
133
 
@@ -140,37 +147,38 @@ class FulFillmentOrderTest < Test::Unit::TestCase
140
147
  moved_fulfillment_order: fake_moved_fulfillment_order,
141
148
  remaining_fulfillment_order: nil,
142
149
  }
143
- fake 'fulfillment_orders',
150
+ fake(
151
+ 'fulfillment_orders',
144
152
  url: "#{@url_prefix}/fulfillment_orders/519788021/move.json",
145
- :method => :post,
146
- :request_body => ActiveSupport::JSON.encode(request_body),
147
- :body => ActiveSupport::JSON.encode(body)
148
-
153
+ method: :post,
154
+ request_body: ActiveSupport::JSON.encode(request_body),
155
+ body: ActiveSupport::JSON.encode(body)
156
+ )
149
157
  response_fulfillment_orders = fulfillment_order.move(new_location_id: new_location_id)
150
158
 
151
- assert_equal 'closed', fulfillment_order.status
159
+ assert_equal('closed', fulfillment_order.status)
152
160
 
153
- assert_equal 3, response_fulfillment_orders.count
161
+ assert_equal(3, response_fulfillment_orders.count)
154
162
  original_fulfillment_order = response_fulfillment_orders['original_fulfillment_order']
155
163
  refute_nil original_fulfillment_order
156
- assert original_fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
157
- assert_equal 'closed', original_fulfillment_order.status
164
+ assert(original_fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder))
165
+ assert_equal('closed', original_fulfillment_order.status)
158
166
 
159
167
  moved_fulfillment_order = response_fulfillment_orders['moved_fulfillment_order']
160
168
  refute_nil moved_fulfillment_order
161
- assert moved_fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
162
- assert_equal 'open', moved_fulfillment_order.status
163
- assert_equal new_location_id, moved_fulfillment_order.assigned_location_id
169
+ assert(moved_fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder))
170
+ assert_equal('open', moved_fulfillment_order.status)
171
+ assert_equal(new_location_id, moved_fulfillment_order.assigned_location_id)
164
172
 
165
173
  remaining_fulfillment_order = response_fulfillment_orders['remaining_fulfillment_order']
166
- assert_nil remaining_fulfillment_order
174
+ assert_nil(remaining_fulfillment_order)
167
175
  end
168
176
  end
169
177
 
170
178
  context "#cancel" do
171
179
  should "cancel a fulfillment order" do
172
180
  fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
173
- assert_equal 'open', fulfillment_order.status
181
+ assert_equal('open', fulfillment_order.status)
174
182
 
175
183
  cancelled = ActiveSupport::JSON.decode(load_fixture('fulfillment_order'))
176
184
  cancelled['status'] = 'cancelled'
@@ -178,19 +186,20 @@ class FulFillmentOrderTest < Test::Unit::TestCase
178
186
  fulfillment_order: cancelled,
179
187
  replacement_fulfillment_order: fulfillment_order,
180
188
  }
181
- fake 'fulfillment_orders',
189
+ fake(
190
+ 'fulfillment_orders',
182
191
  url: "#{@url_prefix}/fulfillment_orders/519788021/cancel.json",
183
- :method => :post,
184
- :body => ActiveSupport::JSON.encode(body)
185
-
192
+ method: :post,
193
+ body: ActiveSupport::JSON.encode(body)
194
+ )
186
195
  response_fulfillment_orders = fulfillment_order.cancel
187
196
 
188
- assert_equal 'cancelled', fulfillment_order.status
189
- assert_equal 2, response_fulfillment_orders.count
197
+ assert_equal('cancelled', fulfillment_order.status)
198
+ assert_equal(2, response_fulfillment_orders.count)
190
199
  fulfillment_order = response_fulfillment_orders['fulfillment_order']
191
- assert_equal 'cancelled', fulfillment_order.status
200
+ assert_equal('cancelled', fulfillment_order.status)
192
201
  replacement_fulfillment_order = response_fulfillment_orders['replacement_fulfillment_order']
193
- assert_equal 'open', replacement_fulfillment_order.status
202
+ assert_equal('open', replacement_fulfillment_order.status)
194
203
  end
195
204
  end
196
205
 
@@ -203,17 +212,69 @@ class FulFillmentOrderTest < Test::Unit::TestCase
203
212
  closed['status'] = 'incomplete'
204
213
  request_body = {
205
214
  fulfillment_order: {
206
- message: "Test close message."
207
- }
215
+ message: "Test close message.",
216
+ },
208
217
  }
209
- fake 'fulfillment_orders',
218
+ fake(
219
+ 'fulfillment_orders',
210
220
  url: "#{@url_prefix}/fulfillment_orders/519788021/close.json",
211
- :method => :post,
212
- :request_body => ActiveSupport::JSON.encode(request_body),
213
- :body => ActiveSupport::JSON.encode(closed)
221
+ method: :post,
222
+ request_body: ActiveSupport::JSON.encode(request_body),
223
+ body: ActiveSupport::JSON.encode(closed)
224
+ )
225
+ assert(fulfillment_order.close(message: "Test close message."))
226
+ assert_equal('incomplete', fulfillment_order.status)
227
+ end
228
+ end
229
+
230
+ context "#open" do
231
+ should "be able to open fulfillment order" do
232
+ fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
233
+ fulfillment_order.status = 'scheduled'
234
+
235
+ opened = ActiveSupport::JSON.decode(load_fixture('fulfillment_order'))
236
+ opened['status'] = 'open'
237
+ body = {
238
+ fulfillment_order: opened,
239
+ }
240
+
241
+ fake(
242
+ 'fulfillment_orders',
243
+ url: "#{@url_prefix}/fulfillment_orders/519788021/open.json",
244
+ method: :post,
245
+ body: ActiveSupport::JSON.encode(body)
246
+ )
247
+ assert(fulfillment_order.open)
248
+ assert_equal('open', fulfillment_order.status)
249
+ end
250
+ end
251
+
252
+ context "#reschedule" do
253
+ should "be able to rescheduled fulfillment order" do
254
+ fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
255
+ fulfillment_order.status = 'scheduled'
256
+ new_fulfill_at = "2021-11-29"
257
+
258
+ rescheduled = ActiveSupport::JSON.decode(load_fixture('fulfillment_order'))
259
+ rescheduled['status'] = 'scheduled'
260
+ rescheduled['fulfill_at'] = new_fulfill_at
261
+ body = {
262
+ fulfillment_order: rescheduled,
263
+ }
214
264
 
215
- assert fulfillment_order.close(message: "Test close message.")
216
- assert_equal 'incomplete', fulfillment_order.status
265
+ request_body = { fulfillment_order: { new_fulfill_at: new_fulfill_at } }
266
+
267
+ fake(
268
+ 'fulfillment_orders',
269
+ url: "#{@url_prefix}/fulfillment_orders/519788021/reschedule.json",
270
+ method: :post,
271
+ request_body: ActiveSupport::JSON.encode(request_body),
272
+ body: ActiveSupport::JSON.encode(body)
273
+ )
274
+
275
+ assert(fulfillment_order.reschedule(new_fulfill_at: new_fulfill_at))
276
+ assert_equal('scheduled', fulfillment_order.status)
277
+ assert_equal(new_fulfill_at, fulfillment_order.fulfill_at)
217
278
  end
218
279
  end
219
280
 
@@ -232,45 +293,46 @@ class FulFillmentOrderTest < Test::Unit::TestCase
232
293
  body = {
233
294
  original_fulfillment_order: fake_original_fulfillment_order,
234
295
  submitted_fulfillment_order: fake_submitted_fulfillment_order,
235
- unsubmitted_fulfillment_order: fake_unsubmitted_fulfillment_order
296
+ unsubmitted_fulfillment_order: fake_unsubmitted_fulfillment_order,
236
297
  }
237
298
  request_body = {
238
299
  fulfillment_request: {
239
300
  fulfillment_order_line_items: [
240
- { id: 1, quantity: 1 }
301
+ { id: 1, quantity: 1 },
241
302
  ],
242
- message: 'Fulfill this FO, please.'
243
- }
303
+ message: 'Fulfill this FO, please.',
304
+ },
244
305
  }
245
- fake 'fulfillment_orders',
306
+ fake(
307
+ 'fulfillment_orders',
246
308
  url: "#{@url_prefix}/fulfillment_orders/519788021/fulfillment_request.json",
247
- :method => :post,
248
- :request_body => ActiveSupport::JSON.encode(request_body),
249
- :body => ActiveSupport::JSON.encode(body)
250
-
309
+ method: :post,
310
+ request_body: ActiveSupport::JSON.encode(request_body),
311
+ body: ActiveSupport::JSON.encode(body)
312
+ )
251
313
  fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
252
314
  params = {
253
315
  fulfillment_order_line_items: [{ id: 1, quantity: 1 }],
254
- message: "Fulfill this FO, please."
316
+ message: "Fulfill this FO, please.",
255
317
  }
256
318
  response_fulfillment_orders = fulfillment_order.request_fulfillment(params)
257
319
 
258
- assert_equal 'closed', fulfillment_order.status
259
- assert_equal 3, response_fulfillment_orders.size
320
+ assert_equal('closed', fulfillment_order.status)
321
+ assert_equal(3, response_fulfillment_orders.size)
260
322
 
261
323
  original_fulfillment_order = response_fulfillment_orders['original_fulfillment_order']
262
- assert_equal 519788021, original_fulfillment_order.id
263
- assert_equal 'closed', original_fulfillment_order.status
324
+ assert_equal(519788021, original_fulfillment_order.id)
325
+ assert_equal('closed', original_fulfillment_order.status)
264
326
 
265
327
  submitted_fulfillment_order = response_fulfillment_orders['submitted_fulfillment_order']
266
- assert_equal 2, submitted_fulfillment_order.id
267
- assert_equal 'open', submitted_fulfillment_order.status
268
- assert_equal 'submitted', submitted_fulfillment_order.request_status
328
+ assert_equal(2, submitted_fulfillment_order.id)
329
+ assert_equal('open', submitted_fulfillment_order.status)
330
+ assert_equal('submitted', submitted_fulfillment_order.request_status)
269
331
 
270
332
  unsubmitted_fulfillment_order = response_fulfillment_orders['unsubmitted_fulfillment_order']
271
- assert_equal 3, unsubmitted_fulfillment_order.id
272
- assert_equal 'open', unsubmitted_fulfillment_order.status
273
- assert_equal 'unsubmitted', unsubmitted_fulfillment_order.request_status
333
+ assert_equal(3, unsubmitted_fulfillment_order.id)
334
+ assert_equal('open', unsubmitted_fulfillment_order.status)
335
+ assert_equal('unsubmitted', unsubmitted_fulfillment_order.request_status)
274
336
  end
275
337
 
276
338
  should "make a fulfillment request for a fulfillment order excluding unsubmitted" do
@@ -288,37 +350,38 @@ class FulFillmentOrderTest < Test::Unit::TestCase
288
350
  request_body = {
289
351
  fulfillment_request: {
290
352
  fulfillment_order_line_items: [
291
- { id: 1, quantity: 1 }
353
+ { id: 1, quantity: 1 },
292
354
  ],
293
- message: 'Fulfill this FO, please.'
294
- }
355
+ message: 'Fulfill this FO, please.',
356
+ },
295
357
  }
296
- fake 'fulfillment_orders',
358
+ fake(
359
+ 'fulfillment_orders',
297
360
  url: "#{@url_prefix}/fulfillment_orders/519788021/fulfillment_request.json",
298
- :method => :post,
299
- :request_body => ActiveSupport::JSON.encode(request_body),
300
- :body => ActiveSupport::JSON.encode(body)
301
-
361
+ method: :post,
362
+ request_body: ActiveSupport::JSON.encode(request_body),
363
+ body: ActiveSupport::JSON.encode(body)
364
+ )
302
365
  fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
303
366
  params = {
304
367
  fulfillment_order_line_items: [{ id: 1, quantity: 1 }],
305
- message: "Fulfill this FO, please."
368
+ message: "Fulfill this FO, please.",
306
369
  }
307
370
  response_fulfillment_orders = fulfillment_order.request_fulfillment(params)
308
371
 
309
- assert_equal 'closed', fulfillment_order.status
310
- assert_equal 3, response_fulfillment_orders.size
372
+ assert_equal('closed', fulfillment_order.status)
373
+ assert_equal(3, response_fulfillment_orders.size)
311
374
 
312
375
  original_fulfillment_order = response_fulfillment_orders['original_fulfillment_order']
313
- assert_equal 519788021, original_fulfillment_order.id
314
- assert_equal 'closed', original_fulfillment_order.status
376
+ assert_equal(519788021, original_fulfillment_order.id)
377
+ assert_equal('closed', original_fulfillment_order.status)
315
378
 
316
379
  submitted_fulfillment_order = response_fulfillment_orders['submitted_fulfillment_order']
317
- assert_equal 2, submitted_fulfillment_order.id
318
- assert_equal 'open', submitted_fulfillment_order.status
319
- assert_equal 'submitted', submitted_fulfillment_order.request_status
380
+ assert_equal(2, submitted_fulfillment_order.id)
381
+ assert_equal('open', submitted_fulfillment_order.status)
382
+ assert_equal('submitted', submitted_fulfillment_order.request_status)
320
383
 
321
- assert_nil response_fulfillment_orders['unsubmitted_fulfillment_order']
384
+ assert_nil(response_fulfillment_orders['unsubmitted_fulfillment_order'])
322
385
  end
323
386
  end
324
387
 
@@ -329,23 +392,24 @@ class FulFillmentOrderTest < Test::Unit::TestCase
329
392
  message = "LGTM. Accept this FO fulfillment request"
330
393
  request_body = {
331
394
  'fulfillment_request' => {
332
- 'message' => message
333
- }
395
+ 'message' => message,
396
+ },
334
397
  }
335
398
  fake_response = {
336
- fulfillment_order: fulfillment_order.attributes.merge(status: 'in_progress', request_status: 'accepted')
399
+ fulfillment_order: fulfillment_order.attributes.merge(status: 'in_progress', request_status: 'accepted'),
337
400
  }
338
- fake 'fulfillment_orders',
401
+ fake(
402
+ 'fulfillment_orders',
339
403
  url: "#{@url_prefix}/fulfillment_orders/519788021/fulfillment_request/accept.json",
340
- :method => :post,
341
- :request_body => ActiveSupport::JSON.encode(request_body),
342
- :body => ActiveSupport::JSON.encode(fake_response)
343
-
404
+ method: :post,
405
+ request_body: ActiveSupport::JSON.encode(request_body),
406
+ body: ActiveSupport::JSON.encode(fake_response)
407
+ )
344
408
  accepted = fulfillment_order.accept_fulfillment_request(message: message)
345
409
 
346
- assert_equal true, accepted
347
- assert_equal 'in_progress', fulfillment_order.status
348
- assert_equal 'accepted', fulfillment_order.request_status
410
+ assert_equal(true, accepted)
411
+ assert_equal('in_progress', fulfillment_order.status)
412
+ assert_equal('accepted', fulfillment_order.request_status)
349
413
  end
350
414
  end
351
415
 
@@ -356,23 +420,24 @@ class FulFillmentOrderTest < Test::Unit::TestCase
356
420
  message = "LBTM. Reject this FO fulfillment request"
357
421
  request_body = {
358
422
  'fulfillment_request' => {
359
- 'message' => message
360
- }
423
+ 'message' => message,
424
+ },
361
425
  }
362
426
  fake_response = {
363
- fulfillment_order: fulfillment_order.attributes.merge(status: 'open', request_status: 'rejected')
427
+ fulfillment_order: fulfillment_order.attributes.merge(status: 'open', request_status: 'rejected'),
364
428
  }
365
- fake 'fulfillment_orders',
429
+ fake(
430
+ 'fulfillment_orders',
366
431
  url: "#{@url_prefix}/fulfillment_orders/519788021/fulfillment_request/reject.json",
367
- :method => :post,
368
- :request_body => ActiveSupport::JSON.encode(request_body),
369
- :body => ActiveSupport::JSON.encode(fake_response)
370
-
432
+ method: :post,
433
+ request_body: ActiveSupport::JSON.encode(request_body),
434
+ body: ActiveSupport::JSON.encode(fake_response)
435
+ )
371
436
  rejected = fulfillment_order.reject_fulfillment_request(message: message)
372
437
 
373
- assert_equal true, rejected
374
- assert_equal 'open', fulfillment_order.status
375
- assert_equal 'rejected', fulfillment_order.request_status
438
+ assert_equal(true, rejected)
439
+ assert_equal('open', fulfillment_order.status)
440
+ assert_equal('rejected', fulfillment_order.request_status)
376
441
  end
377
442
  end
378
443
 
@@ -383,23 +448,24 @@ class FulFillmentOrderTest < Test::Unit::TestCase
383
448
  message = "Cancelling this please."
384
449
  request_body = {
385
450
  'cancellation_request' => {
386
- 'message' => message
387
- }
451
+ 'message' => message,
452
+ },
388
453
  }
389
454
  cancelling = ActiveSupport::JSON.decode(load_fixture('fulfillment_order'))
390
455
  cancelling['status'] = 'in_progress'
391
456
  cancelling['request_status'] = 'cancellation_requested'
392
- fake 'fulfillment_orders',
457
+ fake(
458
+ 'fulfillment_orders',
393
459
  url: "#{@url_prefix}/fulfillment_orders/519788021/cancellation_request.json",
394
- :method => :post,
395
- :request_body => ActiveSupport::JSON.encode(request_body),
396
- :body => ActiveSupport::JSON.encode({ fulfillment_order: cancelling })
397
-
460
+ method: :post,
461
+ request_body: ActiveSupport::JSON.encode(request_body),
462
+ body: ActiveSupport::JSON.encode({ fulfillment_order: cancelling })
463
+ )
398
464
  cancelled = fulfillment_order.request_cancellation(message: "Cancelling this please.")
399
465
 
400
- assert_equal true, cancelled
401
- assert_equal 'in_progress', fulfillment_order.status
402
- assert_equal 'cancellation_requested', fulfillment_order.request_status
466
+ assert_equal(true, cancelled)
467
+ assert_equal('in_progress', fulfillment_order.status)
468
+ assert_equal('cancellation_requested', fulfillment_order.request_status)
403
469
  end
404
470
  end
405
471
 
@@ -410,24 +476,25 @@ class FulFillmentOrderTest < Test::Unit::TestCase
410
476
  message = 'Already in-progress. Reject this FO cancellation request'
411
477
  request_body = {
412
478
  'cancellation_request' => {
413
- 'message' => message
414
- }
479
+ 'message' => message,
480
+ },
415
481
  }
416
482
  fake_response = {
417
483
  fulfillment_order: fulfillment_order.attributes.merge(status: 'cancelled',
418
- request_status: 'cancellation_accepted')
484
+ request_status: 'cancellation_accepted'),
419
485
  }
420
- fake 'fulfillment_orders',
486
+ fake(
487
+ 'fulfillment_orders',
421
488
  url: "#{@url_prefix}/fulfillment_orders/519788021/cancellation_request/accept.json",
422
- :method => :post,
423
- :request_body => ActiveSupport::JSON.encode(request_body),
424
- :body => ActiveSupport::JSON.encode(fake_response)
425
-
489
+ method: :post,
490
+ request_body: ActiveSupport::JSON.encode(request_body),
491
+ body: ActiveSupport::JSON.encode(fake_response)
492
+ )
426
493
  accepted = fulfillment_order.accept_cancellation_request(message: message)
427
494
 
428
- assert_equal true, accepted
429
- assert_equal 'cancelled', fulfillment_order.status
430
- assert_equal 'cancellation_accepted', fulfillment_order.request_status
495
+ assert_equal(true, accepted)
496
+ assert_equal('cancelled', fulfillment_order.status)
497
+ assert_equal('cancellation_accepted', fulfillment_order.request_status)
431
498
  end
432
499
  end
433
500
 
@@ -438,24 +505,25 @@ class FulFillmentOrderTest < Test::Unit::TestCase
438
505
  message = "Already in-progress. Reject this FO cancellation request"
439
506
  request_body = {
440
507
  'cancellation_request' => {
441
- 'message' => message
442
- }
508
+ 'message' => message,
509
+ },
443
510
  }
444
511
  fake_response = {
445
512
  fulfillment_order: fulfillment_order.attributes.merge(status: 'in_progress',
446
- request_status: 'cancellation_rejected')
513
+ request_status: 'cancellation_rejected'),
447
514
  }
448
- fake 'fulfillment_orders',
515
+ fake(
516
+ 'fulfillment_orders',
449
517
  url: "#{@url_prefix}/fulfillment_orders/519788021/cancellation_request/reject.json",
450
- :method => :post,
451
- :request_body => request_body,
452
- :body => ActiveSupport::JSON.encode(fake_response)
453
-
518
+ method: :post,
519
+ request_body: request_body,
520
+ body: ActiveSupport::JSON.encode(fake_response)
521
+ )
454
522
  rejected = fulfillment_order.reject_cancellation_request(message: message)
455
523
 
456
- assert_equal true, rejected
457
- assert_equal 'in_progress', fulfillment_order.status
458
- assert_equal 'cancellation_rejected', fulfillment_order.request_status
524
+ assert_equal(true, rejected)
525
+ assert_equal('in_progress', fulfillment_order.status)
526
+ assert_equal('cancellation_rejected', fulfillment_order.request_status)
459
527
  end
460
528
  end
461
529
  end