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
  module FulfillmentOrderTestHelper
2
3
  def url_prefix_for_activated_session_for(version)
3
4
  available_version = ShopifyAPI::Session.new(domain: 'shop2.myshopify.com', token: 'token2', api_version: version)
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class FulFillmentRequestTest < Test::Unit::TestCase
4
5
  def setup
5
6
  super
6
- fake "orders/450789469/fulfillment_requests/695890229", method: :get, body: load_fixture('fulfillment_request')
7
+ fake("orders/450789469/fulfillment_requests/695890229", method: :get, body: load_fixture('fulfillment_request'))
7
8
  end
8
9
 
9
10
  context "#mark_as_failed" do
@@ -13,21 +14,22 @@ class FulFillmentRequestTest < Test::Unit::TestCase
13
14
  cancelled = ActiveSupport::JSON.decode(load_fixture('fulfillment_request'))
14
15
  cancelled['failure_message'] = 'failure reason'
15
16
  cancelled['message'] = nil
16
- fake "orders/450789469/fulfillment_requests/695890229/mark_as_failed",
17
+ fake(
18
+ "orders/450789469/fulfillment_requests/695890229/mark_as_failed",
17
19
  method: :put,
18
20
  body: ActiveSupport::JSON.encode(cancelled)
19
-
20
- assert fulfillment_request.failure_message.blank?
21
- assert fulfillment_request.mark_as_failed
22
- assert_equal 'failure reason', fulfillment_request.failure_message
21
+ )
22
+ assert(fulfillment_request.failure_message.blank?)
23
+ assert(fulfillment_request.mark_as_failed)
24
+ assert_equal('failure reason', fulfillment_request.failure_message)
23
25
  end
24
26
  end
25
27
 
26
28
  context "#find" do
27
29
  should "be able to find fulfillment request" do
28
30
  fulfillment_request = ShopifyAPI::FulfillmentRequest.find(695890229, params: { order_id: 450789469 })
29
- assert_equal 695890229, fulfillment_request.id
30
- assert_equal 450789469, fulfillment_request.order_id
31
+ assert_equal(695890229, fulfillment_request.id)
32
+ assert_equal(450789469, fulfillment_request.order_id)
31
33
  end
32
34
  end
33
35
  end
@@ -1,17 +1,18 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class FulFillmentServiceTest < Test::Unit::TestCase
4
- test 'new should create fulfillment service' do
5
- fake "fulfillment_services", :method => :post, :body => load_fixture('fulfillment_service')
6
- fulfillment_service = ShopifyAPI::FulfillmentService.new(:name => "SomeService")
7
- fulfillment_service.save
8
- assert_equal "SomeService" , fulfillment_service.name
9
- end
5
+ test 'new should create fulfillment service' do
6
+ fake("fulfillment_services", method: :post, body: load_fixture('fulfillment_service'))
7
+ fulfillment_service = ShopifyAPI::FulfillmentService.new(name: "SomeService")
8
+ fulfillment_service.save
9
+ assert_equal("SomeService", fulfillment_service.name)
10
+ end
10
11
 
11
- test 'find should return the fulfillment service' do
12
- fake "fulfillment_services/123456", :method => :get, :body => load_fixture('fulfillment_service')
13
- fulfillment_service = ShopifyAPI::FulfillmentService.find(123456)
14
- assert_equal 123456 , fulfillment_service.id
15
- assert_equal "SomeService", fulfillment_service.name
16
- end
12
+ test 'find should return the fulfillment service' do
13
+ fake("fulfillment_services/123456", method: :get, body: load_fixture('fulfillment_service'))
14
+ fulfillment_service = ShopifyAPI::FulfillmentService.find(123456)
15
+ assert_equal(123456, fulfillment_service.id)
16
+ assert_equal("SomeService", fulfillment_service.name)
17
+ end
17
18
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
  require 'fulfillment_order_test_helper'
3
4
 
@@ -6,57 +7,65 @@ class FulFillmentTest < Test::Unit::TestCase
6
7
 
7
8
  def setup
8
9
  super
9
- fake "orders/450789469/fulfillments/255858046", :method => :get, :body => load_fixture('fulfillment')
10
+ fake("orders/450789469/fulfillments/255858046", method: :get, body: load_fixture('fulfillment'))
10
11
  end
11
12
 
12
13
  context "Fulfillment" do
13
14
  context "#complete" do
14
15
  should "be able to complete fulfillment" do
15
- fulfillment = ShopifyAPI::Fulfillment.find(255858046, :params => {:order_id => 450789469})
16
+ fulfillment = ShopifyAPI::Fulfillment.find(255858046, params: { order_id: 450789469 })
16
17
 
17
18
  success = ActiveSupport::JSON.decode(load_fixture('fulfillment'))
18
19
  success['fulfillment']['status'] = 'success'
19
- fake "orders/450789469/fulfillments/255858046/complete", :method => :post, :body => ActiveSupport::JSON.encode(success)
20
+ fake(
21
+ "orders/450789469/fulfillments/255858046/complete", method: :post, body: ActiveSupport::JSON.encode(success)
22
+ )
20
23
 
21
- assert_equal 'pending', fulfillment.status
22
- assert fulfillment.complete
23
- assert_equal 'success', fulfillment.status
24
+ assert_equal('pending', fulfillment.status)
25
+ assert(fulfillment.complete)
26
+ assert_equal('success', fulfillment.status)
24
27
  end
25
28
  end
26
29
 
27
30
  context "#cancel" do
28
31
  should "be able to cancel fulfillment" do
29
- fulfillment = ShopifyAPI::Fulfillment.find(255858046, :params => {:order_id => 450789469})
32
+ fulfillment = ShopifyAPI::Fulfillment.find(255858046, params: { order_id: 450789469 })
30
33
 
31
34
  cancelled = ActiveSupport::JSON.decode(load_fixture('fulfillment'))
32
35
  cancelled['fulfillment']['status'] = 'cancelled'
33
- fake "orders/450789469/fulfillments/255858046/cancel", :method => :post, :body => ActiveSupport::JSON.encode(cancelled)
36
+ fake(
37
+ "orders/450789469/fulfillments/255858046/cancel", method: :post, body: ActiveSupport::JSON.encode(cancelled)
38
+ )
34
39
 
35
- assert_equal 'pending', fulfillment.status
36
- assert fulfillment.cancel
37
- assert_equal 'cancelled', fulfillment.status
40
+ assert_equal('pending', fulfillment.status)
41
+ assert(fulfillment.cancel)
42
+ assert_equal('cancelled', fulfillment.status)
38
43
  end
39
44
  end
40
45
 
41
46
  context "#open" do
42
47
  should "be able to open a fulfillment" do
43
- fulfillment = ShopifyAPI::Fulfillment.find(255858046, :params => {:order_id => 450789469})
48
+ fulfillment = ShopifyAPI::Fulfillment.find(255858046, params: { order_id: 450789469 })
44
49
 
45
50
  open_fulfillment = ActiveSupport::JSON.decode(load_fixture('fulfillment'))
46
51
  open_fulfillment['fulfillment']['status'] = 'open'
47
- fake "orders/450789469/fulfillments/255858046/open", :method => :post, :body => ActiveSupport::JSON.encode(open_fulfillment)
52
+ fake(
53
+ "orders/450789469/fulfillments/255858046/open",
54
+ method: :post,
55
+ body: ActiveSupport::JSON.encode(open_fulfillment)
56
+ )
48
57
 
49
- assert_equal 'pending', fulfillment.status
50
- assert fulfillment.open
51
- assert_equal 'open', fulfillment.status
58
+ assert_equal('pending', fulfillment.status)
59
+ assert(fulfillment.open)
60
+ assert_equal('open', fulfillment.status)
52
61
  end
53
62
  end
54
63
 
55
64
  context "#find" do
56
65
  should "be able to find fulfillment" do
57
- fulfillment = ShopifyAPI::Fulfillment.find(255858046, :params => {:order_id => 450789469})
58
- assert_equal 255858046, fulfillment.id
59
- assert_equal 450789469, fulfillment.order_id
66
+ fulfillment = ShopifyAPI::Fulfillment.find(255858046, params: { order_id: 450789469 })
67
+ assert_equal(255858046, fulfillment.id)
68
+ assert_equal(450789469, fulfillment.order_id)
60
69
  end
61
70
  end
62
71
 
@@ -68,28 +77,29 @@ class FulFillmentTest < Test::Unit::TestCase
68
77
  tracking_info: {
69
78
  number: "XSDFHYR23475",
70
79
  url: "https://tracking.example.com/XSDFHYR23475",
71
- company: "TFTC - the fulfillment/tracking company"
80
+ company: "TFTC - the fulfillment/tracking company",
72
81
  },
73
82
  line_items_by_fulfillment_order: [
74
83
  {
75
84
  fulfillment_order_id: 3,
76
- fulfillment_order_line_items: [{ id: 2, quantity: 1 }]
77
- }
78
- ]
85
+ fulfillment_order_line_items: [{ id: 2, quantity: 1 }],
86
+ },
87
+ ],
79
88
  }
80
89
  request_body = { fulfillment: create_fulfillment_attributes }
81
90
  response_body = { fulfillment: create_fulfillment_attributes.merge(id: 346743624) }
82
91
  url_prefix = url_prefix_for_activated_session_for('2020-01')
83
- fake 'fulfillments',
92
+ fake(
93
+ 'fulfillments',
84
94
  url: "#{url_prefix}/fulfillments.json",
85
- :method => :post,
95
+ method: :post,
86
96
  request_body: ActiveSupport::JSON.encode(request_body),
87
97
  body: ActiveSupport::JSON.encode(response_body)
88
-
98
+ )
89
99
  fulfillment = ShopifyAPI::Fulfillment.create(create_fulfillment_attributes)
90
- assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
91
- assert fulfillment.persisted?
92
- assert_equal 346743624, fulfillment.id
100
+ assert(fulfillment.is_a?(ShopifyAPI::Fulfillment))
101
+ assert(fulfillment.persisted?)
102
+ assert_equal(346743624, fulfillment.id)
93
103
  end
94
104
 
95
105
  should "raise NotImplementedError when api_version is older than 2020-01" do
@@ -99,25 +109,26 @@ class FulFillmentTest < Test::Unit::TestCase
99
109
  tracking_info: {
100
110
  number: "XSDFHYR23475",
101
111
  url: "https://tracking.example.com/XSDFHYR23475",
102
- company: "TFTC - the fulfillment/tracking company"
112
+ company: "TFTC - the fulfillment/tracking company",
103
113
  },
104
114
  line_items_by_fulfillment_order: [
105
115
  {
106
116
  fulfillment_order_id: 3,
107
- fulfillment_order_line_items: [{ id: 2, quantity: 1 }]
108
- }
109
- ]
117
+ fulfillment_order_line_items: [{ id: 2, quantity: 1 }],
118
+ },
119
+ ],
110
120
  }
111
121
  request_body = { fulfillment: create_fulfillment_attributes }
112
122
  response_body = { fulfillment: create_fulfillment_attributes.merge(id: 346743624) }
113
123
  url_prefix = url_prefix_for_activated_session_for('2019-10')
114
- fake 'fulfillments',
124
+ fake(
125
+ 'fulfillments',
115
126
  url: "#{url_prefix}/fulfillments.json",
116
- :method => :post,
127
+ method: :post,
117
128
  request_body: ActiveSupport::JSON.encode(request_body),
118
129
  body: ActiveSupport::JSON.encode(response_body)
119
-
120
- assert_raises NotImplementedError do
130
+ )
131
+ assert_raises(NotImplementedError) do
121
132
  ShopifyAPI::Fulfillment.create(create_fulfillment_attributes)
122
133
  end
123
134
  end
@@ -131,29 +142,30 @@ class FulFillmentTest < Test::Unit::TestCase
131
142
  tracking_info: {
132
143
  number: "XSDFHYR23475",
133
144
  url: "https://tracking.example.com/XSDFHYR23475",
134
- company: "TFTC - the fulfillment/tracking company"
145
+ company: "TFTC - the fulfillment/tracking company",
135
146
  },
136
147
  line_items_by_fulfillment_order: [
137
148
  {
138
149
  fulfillment_order_id: 3,
139
- fulfillment_order_line_items: [{ id: 2, quantity: 1 }]
140
- }
141
- ]
150
+ fulfillment_order_line_items: [{ id: 2, quantity: 1 }],
151
+ },
152
+ ],
142
153
  }
143
154
  request_body = { fulfillment: create_fulfillment_attributes }
144
155
  response_body = { fulfillment: create_fulfillment_attributes.merge(id: 346743624) }
145
156
  url_prefix = url_prefix_for_activated_session_for('2020-01')
146
- fake 'fulfillments',
157
+ fake(
158
+ 'fulfillments',
147
159
  url: "#{url_prefix}/fulfillments.json",
148
- :method => :post,
160
+ method: :post,
149
161
  request_body: ActiveSupport::JSON.encode(request_body),
150
162
  body: ActiveSupport::JSON.encode(response_body)
151
-
163
+ )
152
164
  fulfillment = ShopifyAPI::Fulfillment.new(create_fulfillment_attributes)
153
- assert fulfillment.save
154
- assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
155
- assert fulfillment.persisted?
156
- assert_equal 346743624, fulfillment.id
165
+ assert(fulfillment.save)
166
+ assert(fulfillment.is_a?(ShopifyAPI::Fulfillment))
167
+ assert(fulfillment.persisted?)
168
+ assert_equal(346743624, fulfillment.id)
157
169
  end
158
170
 
159
171
  should "save a fulfillment without line_items_by_fulfillment_order" do
@@ -164,22 +176,24 @@ class FulFillmentTest < Test::Unit::TestCase
164
176
  tracking_info: {
165
177
  number: "XSDFHYR23475",
166
178
  url: "https://tracking.example.com/XSDFHYR23475",
167
- company: "TFTC - the fulfillment/tracking company"
168
- }
179
+ company: "TFTC - the fulfillment/tracking company",
180
+ },
169
181
  }
170
182
  request_body = { fulfillment: create_fulfillment_attributes }
171
183
  response_body = { fulfillment: create_fulfillment_attributes.merge(id: 346743624) }
172
- fake "orders/#{order_id}/fulfillments", :method => :post,
184
+ fake(
185
+ "orders/#{order_id}/fulfillments",
186
+ method: :post,
173
187
  request_body: ActiveSupport::JSON.encode(request_body),
174
188
  body: ActiveSupport::JSON.encode(response_body)
175
-
189
+ )
176
190
  fulfillment = ShopifyAPI::Fulfillment.new(create_fulfillment_attributes)
177
191
  fulfillment.prefix_options[:order_id] = order_id
178
192
 
179
- assert fulfillment.save
180
- assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
181
- assert fulfillment.persisted?
182
- assert_equal 346743624, fulfillment.id
193
+ assert(fulfillment.save)
194
+ assert(fulfillment.is_a?(ShopifyAPI::Fulfillment))
195
+ assert(fulfillment.persisted?)
196
+ assert_equal(346743624, fulfillment.id)
183
197
  end
184
198
  end
185
199
 
@@ -200,24 +214,25 @@ class FulFillmentTest < Test::Unit::TestCase
200
214
  request_body = {
201
215
  fulfillment: {
202
216
  tracking_info: tracking_info,
203
- notify_customer: true
204
- }
217
+ notify_customer: true,
218
+ },
205
219
  }
206
220
  url_prefix = url_prefix_for_activated_session_for('2020-01')
207
- fake 'fulfillments',
221
+ fake(
222
+ 'fulfillments',
208
223
  url: "#{url_prefix}/fulfillments/#{fake_fulfillment['id']}/update_tracking.json",
209
224
  method: :post,
210
225
  request_body: ActiveSupport::JSON.encode(request_body),
211
226
  body: ActiveSupport::JSON.encode(fulfillment: fake_fulfillment)
212
-
227
+ )
213
228
  fulfillment = ShopifyAPI::Fulfillment.new(id: fake_fulfillment['id'])
214
- assert fulfillment.update_tracking(tracking_info: tracking_info, notify_customer: true)
229
+ assert(fulfillment.update_tracking(tracking_info: tracking_info, notify_customer: true))
215
230
 
216
- assert_equal tracking_info[:number], fulfillment.tracking_number
217
- assert_equal [tracking_info[:number]], fulfillment.tracking_numbers
218
- assert_equal tracking_info[:url], fulfillment.tracking_url
219
- assert_equal [tracking_info[:url]], fulfillment.tracking_urls
220
- assert_equal tracking_info[:company], fulfillment.tracking_company
231
+ assert_equal(tracking_info[:number], fulfillment.tracking_number)
232
+ assert_equal([tracking_info[:number]], fulfillment.tracking_numbers)
233
+ assert_equal(tracking_info[:url], fulfillment.tracking_url)
234
+ assert_equal([tracking_info[:url]], fulfillment.tracking_urls)
235
+ assert_equal(tracking_info[:company], fulfillment.tracking_company)
221
236
  end
222
237
  end
223
238
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
  require 'fulfillment_order_test_helper'
3
4
 
@@ -21,39 +22,42 @@ class FulfillmentV2Test < Test::Unit::TestCase
21
22
  @request_body = {
22
23
  fulfillment: {
23
24
  tracking_info: @tracking_info,
24
- notify_customer: true
25
- }
25
+ notify_customer: true,
26
+ },
26
27
  }
27
28
  @url_prefix = url_prefix_for_activated_session_for('2020-01')
28
- fake 'fulfillments',
29
+ fake(
30
+ 'fulfillments',
29
31
  url: "#{@url_prefix}/fulfillments/#{@fake_fulfillment['id']}/update_tracking.json",
30
32
  method: :post,
31
33
  request_body: ActiveSupport::JSON.encode(@request_body),
32
34
  body: ActiveSupport::JSON.encode(fulfillment: @fake_fulfillment)
35
+ )
33
36
  end
34
37
 
35
38
  context "FulfillmentV2" do
36
39
  context "#update_tracking" do
37
40
  should "be able to update tracking info for a fulfillment" do
38
41
  fulfillment = ShopifyAPI::FulfillmentV2.new(id: @fake_fulfillment['id'])
39
- assert fulfillment.update_tracking(tracking_info: @tracking_info, notify_customer: true)
42
+ assert(fulfillment.update_tracking(tracking_info: @tracking_info, notify_customer: true))
40
43
 
41
- assert_equal @tracking_info[:number], fulfillment.tracking_number
42
- assert_equal [@tracking_info[:number]], fulfillment.tracking_numbers
43
- assert_equal @tracking_info[:url], fulfillment.tracking_url
44
- assert_equal [@tracking_info[:url]], fulfillment.tracking_urls
45
- assert_equal @tracking_info[:company], fulfillment.tracking_company
44
+ assert_equal(@tracking_info[:number], fulfillment.tracking_number)
45
+ assert_equal([@tracking_info[:number]], fulfillment.tracking_numbers)
46
+ assert_equal(@tracking_info[:url], fulfillment.tracking_url)
47
+ assert_equal([@tracking_info[:url]], fulfillment.tracking_urls)
48
+ assert_equal(@tracking_info[:company], fulfillment.tracking_company)
46
49
  end
47
50
 
48
51
  should "raise NotImplementedError when api_version is older than 2020-01" do
49
52
  @url_prefix = url_prefix_for_activated_session_for('2019-10')
50
- fake 'fulfillments',
53
+ fake(
54
+ 'fulfillments',
51
55
  url: "#{@url_prefix}/fulfillments/#{@fake_fulfillment['id']}/update_tracking.json",
52
56
  method: :post,
53
57
  request_body: ActiveSupport::JSON.encode(@request_body),
54
58
  body: ActiveSupport::JSON.encode(fulfillment: @fake_fulfillment)
55
-
56
- assert_raises NotImplementedError do
59
+ )
60
+ assert_raises(NotImplementedError) do
57
61
  ShopifyAPI::FulfillmentV2.new(id: @fake_fulfillment['id'])
58
62
  end
59
63
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class GiftCardTest < Test::Unit::TestCase
@@ -7,16 +8,17 @@ class GiftCardTest < Test::Unit::TestCase
7
8
  end
8
9
 
9
10
  def test_disable
10
- fake 'gift_cards/1023670/disable.json', :body => load_fixture('gift_card_disabled'), :method => :post, :extension => false
11
+ fake('gift_cards/1023670/disable.json', body: load_fixture('gift_card_disabled'), method: :post, extension: false)
11
12
 
12
- refute @gift_card.disabled_at
13
+ refute(@gift_card.disabled_at)
13
14
  @gift_card.disable
14
- assert @gift_card.disabled_at
15
+ assert(@gift_card.disabled_at)
15
16
  end
16
17
 
17
18
  private
19
+
18
20
  def load_gift_card
19
- fake 'gift_cards/1023670', :body => load_fixture('gift_card')
21
+ fake('gift_cards/1023670', body: load_fixture('gift_card'))
20
22
  @gift_card = ShopifyAPI::GiftCard.find(1023670)
21
23
  end
22
24
  end
@@ -15,30 +15,30 @@ class GraphQLTest < Test::Unit::TestCase
15
15
  end
16
16
 
17
17
  test '#initialize_clients creates a GraphQL::Client from local schema file' do
18
- version_fixtures('unstable') do |dir|
18
+ version_fixtures('unstable') do |_dir|
19
19
  ShopifyAPI::GraphQL.initialize_clients
20
20
 
21
- assert ShopifyAPI::GraphQL.client('unstable')
21
+ assert(ShopifyAPI::GraphQL.client('unstable'))
22
22
  end
23
23
  end
24
24
 
25
25
  test '#initialize_clients handles multiple schema files' do
26
- version_fixtures('unstable', '2019-10') do |dir|
26
+ version_fixtures('unstable', '2019-10') do |_dir|
27
27
  ShopifyAPI::GraphQL.initialize_clients
28
28
 
29
- assert ShopifyAPI::GraphQL.client('unstable')
30
- assert ShopifyAPI::GraphQL.client('2019-10')
29
+ assert(ShopifyAPI::GraphQL.client('unstable'))
30
+ assert(ShopifyAPI::GraphQL.client('2019-10'))
31
31
  end
32
32
  end
33
33
 
34
34
  test '#initialize_clients ignores non JSON schema files' do
35
- version_fixtures('unstable', '2019-10') do |dir|
35
+ version_fixtures('unstable', '2019-10') do |_dir|
36
36
  FileUtils.touch(ShopifyAPI::GraphQL.schema_location.join('nope.txt'))
37
37
 
38
38
  ShopifyAPI::GraphQL.initialize_clients
39
39
 
40
- assert ShopifyAPI::GraphQL.client('unstable')
41
- assert ShopifyAPI::GraphQL.client('2019-10')
40
+ assert(ShopifyAPI::GraphQL.client('unstable'))
41
+ assert(ShopifyAPI::GraphQL.client('2019-10'))
42
42
  end
43
43
  end
44
44
 
@@ -47,7 +47,7 @@ class GraphQLTest < Test::Unit::TestCase
47
47
  ShopifyAPI::GraphQL.schema_location = dir
48
48
  FileUtils.touch(ShopifyAPI::GraphQL.schema_location.join('nope.json'))
49
49
 
50
- assert_raises ShopifyAPI::GraphQL::InvalidSchema do
50
+ assert_raises(ShopifyAPI::GraphQL::InvalidSchema) do
51
51
  ShopifyAPI::GraphQL.initialize_clients
52
52
  end
53
53
  end
@@ -60,32 +60,32 @@ class GraphQLTest < Test::Unit::TestCase
60
60
 
61
61
  ShopifyAPI::GraphQL.initialize_clients(raise_on_invalid_schema: false)
62
62
 
63
- assert ShopifyAPI::GraphQL.client('unstable')
63
+ assert(ShopifyAPI::GraphQL.client('unstable'))
64
64
  end
65
65
  end
66
66
 
67
67
  test '#client returns default schema if only one exists' do
68
- version_fixtures('unstable') do |dir|
68
+ version_fixtures('unstable') do |_dir|
69
69
  ShopifyAPI::Base.api_version = 'unstable'
70
70
 
71
71
  ShopifyAPI::GraphQL.initialize_clients
72
72
 
73
- assert_instance_of ::GraphQL::Client, ShopifyAPI::GraphQL.client
73
+ assert_instance_of(::GraphQL::Client, ShopifyAPI::GraphQL.client)
74
74
  end
75
75
  end
76
76
 
77
77
  test '#client accepts optional api_version parameter' do
78
- version_fixtures('unstable') do |dir|
78
+ version_fixtures('unstable') do |_dir|
79
79
  ShopifyAPI::Base.api_version = 'unstable'
80
80
 
81
81
  ShopifyAPI::GraphQL.initialize_clients
82
82
 
83
- assert_instance_of ::GraphQL::Client, ShopifyAPI::GraphQL.client('unstable')
83
+ assert_instance_of(::GraphQL::Client, ShopifyAPI::GraphQL.client('unstable'))
84
84
  end
85
85
  end
86
86
 
87
87
  test '#client executes queries on specified API version' do
88
- version_fixtures('unstable', '2019-10') do |dir|
88
+ version_fixtures('unstable', '2019-10') do |_dir|
89
89
  ShopifyAPI::Base.api_version = 'unstable'
90
90
 
91
91
  ShopifyAPI::GraphQL.initialize_clients
@@ -93,9 +93,9 @@ class GraphQLTest < Test::Unit::TestCase
93
93
 
94
94
  client = ShopifyAPI::GraphQL.client('2019-10')
95
95
 
96
- assert_instance_of ::GraphQL::Client, client
96
+ assert_instance_of(::GraphQL::Client, client)
97
97
 
98
- query = client.parse <<~GRAPHQL
98
+ query = client.parse(<<~GRAPHQL)
99
99
  {
100
100
  product {
101
101
  name
@@ -111,36 +111,68 @@ class GraphQLTest < Test::Unit::TestCase
111
111
  end
112
112
 
113
113
  test '#client raises exception for version that does not exist' do
114
- version_fixtures('unstable') do |dir|
114
+ version_fixtures('unstable') do |_dir|
115
115
  ShopifyAPI::Base.api_version = '2019-10'
116
116
 
117
117
  ShopifyAPI::GraphQL.initialize_clients
118
118
 
119
- assert_raises ShopifyAPI::GraphQL::InvalidClient do
119
+ assert_raises(ShopifyAPI::GraphQL::InvalidClient) do
120
120
  ShopifyAPI::GraphQL.client('2019-10')
121
121
  end
122
122
  end
123
123
  end
124
124
 
125
125
  test '#client lazily initializes clients' do
126
- version_fixtures('unstable') do |dir|
126
+ version_fixtures('unstable') do |_dir|
127
127
  ShopifyAPI::Base.api_version = 'unstable'
128
128
 
129
- assert_raises ShopifyAPI::GraphQL::InvalidClient do
129
+ assert_raises(ShopifyAPI::GraphQL::InvalidClient) do
130
130
  ShopifyAPI::GraphQL.client('2019-10')
131
131
  end
132
132
  end
133
133
  end
134
134
 
135
135
  test '#client caches lookups' do
136
- version_fixtures('unstable') do |dir|
136
+ version_fixtures('unstable') do |_dir|
137
137
  ShopifyAPI::Base.api_version = 'unstable'
138
138
 
139
139
  client1 = ShopifyAPI::GraphQL.client
140
140
  client2 = ShopifyAPI::GraphQL.client('unstable')
141
141
 
142
- assert_equal client1, client2
142
+ assert_equal(client1, client2)
143
+ end
144
+ end
145
+
146
+ test '#client creates execution adapter based off configured class' do
147
+ class SuperDuperExecutionAdapter < ShopifyAPI::GraphQL::HTTPClient
148
+ end
149
+
150
+ ShopifyAPI::GraphQL.execution_adapter = SuperDuperExecutionAdapter
151
+ version_fixtures('unstable') do |_dir|
152
+ ShopifyAPI::Base.api_version = 'unstable'
153
+
154
+ ShopifyAPI::GraphQL.initialize_clients
155
+ assert_instance_of(SuperDuperExecutionAdapter, ShopifyAPI::GraphQL.client('unstable').execute)
143
156
  end
157
+
158
+ ShopifyAPI::GraphQL.execution_adapter = nil
159
+ end
160
+
161
+ test '#client creates client based off configured class' do
162
+ class SuperDuperClient < ::GraphQL::Client
163
+ end
164
+
165
+ ShopifyAPI::GraphQL.graphql_client = SuperDuperClient
166
+ version_fixtures('unstable') do |_dir|
167
+ ShopifyAPI::Base.api_version = 'unstable'
168
+
169
+ ShopifyAPI::GraphQL.initialize_clients
170
+
171
+ assert_instance_of(SuperDuperClient, ShopifyAPI::GraphQL.client('unstable'))
172
+ end
173
+
174
+ ShopifyAPI::GraphQL.clear_clients
175
+ ShopifyAPI::GraphQL.graphql_client = nil
144
176
  end
145
177
 
146
178
  private