shopify_api 9.2.0 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) 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 +0 -1
  5. data/.rubocop.yml +23 -3
  6. data/.rubocop_todo.yml +75 -0
  7. data/CHANGELOG.md +15 -0
  8. data/Gemfile +1 -0
  9. data/Gemfile.lock +151 -0
  10. data/Gemfile_ar51 +1 -1
  11. data/README.md +40 -30
  12. data/RELEASING +10 -6
  13. data/Rakefile +10 -6
  14. data/docs/graphql.md +1 -1
  15. data/docs/index.md +1 -1
  16. data/lib/active_resource/connection_ext.rb +1 -0
  17. data/lib/active_resource/detailed_log_subscriber.rb +6 -7
  18. data/lib/active_resource/json_errors.rb +8 -2
  19. data/lib/shopify_api.rb +8 -1
  20. data/lib/shopify_api/api_access.rb +57 -0
  21. data/lib/shopify_api/api_version.rb +6 -5
  22. data/lib/shopify_api/connection.rb +1 -0
  23. data/lib/shopify_api/countable.rb +3 -2
  24. data/lib/shopify_api/disable_prefix_check.rb +2 -2
  25. data/lib/shopify_api/events.rb +2 -1
  26. data/lib/shopify_api/graphql.rb +8 -6
  27. data/lib/shopify_api/limits.rb +3 -2
  28. data/lib/shopify_api/message_enricher.rb +11 -9
  29. data/lib/shopify_api/meta.rb +0 -1
  30. data/lib/shopify_api/metafields.rb +5 -4
  31. data/lib/shopify_api/pagination_link_headers.rb +4 -3
  32. data/lib/shopify_api/resources.rb +1 -0
  33. data/lib/shopify_api/resources/access_scope.rb +1 -1
  34. data/lib/shopify_api/resources/access_token.rb +1 -0
  35. data/lib/shopify_api/resources/address.rb +1 -0
  36. data/lib/shopify_api/resources/announcement.rb +2 -1
  37. data/lib/shopify_api/resources/application_charge.rb +1 -0
  38. data/lib/shopify_api/resources/application_credit.rb +1 -0
  39. data/lib/shopify_api/resources/article.rb +3 -2
  40. data/lib/shopify_api/resources/asset.rb +6 -5
  41. data/lib/shopify_api/resources/assigned_fulfillment_order.rb +1 -1
  42. data/lib/shopify_api/resources/base.rb +11 -6
  43. data/lib/shopify_api/resources/billing_address.rb +1 -0
  44. data/lib/shopify_api/resources/blog.rb +2 -1
  45. data/lib/shopify_api/resources/carrier_service.rb +1 -0
  46. data/lib/shopify_api/resources/cart.rb +2 -1
  47. data/lib/shopify_api/resources/collect.rb +1 -0
  48. data/lib/shopify_api/resources/collection_listing.rb +1 -0
  49. data/lib/shopify_api/resources/comment.rb +20 -5
  50. data/lib/shopify_api/resources/country.rb +1 -0
  51. data/lib/shopify_api/resources/custom_collection.rb +4 -3
  52. data/lib/shopify_api/resources/customer.rb +2 -1
  53. data/lib/shopify_api/resources/customer_group.rb +1 -0
  54. data/lib/shopify_api/resources/customer_invite.rb +1 -0
  55. data/lib/shopify_api/resources/customer_saved_search.rb +2 -1
  56. data/lib/shopify_api/resources/discount_code.rb +1 -0
  57. data/lib/shopify_api/resources/discount_code_batch.rb +4 -2
  58. data/lib/shopify_api/resources/draft_order.rb +1 -0
  59. data/lib/shopify_api/resources/draft_order_invoice.rb +1 -0
  60. data/lib/shopify_api/resources/event.rb +1 -0
  61. data/lib/shopify_api/resources/fulfillment.rb +12 -3
  62. data/lib/shopify_api/resources/fulfillment_event.rb +1 -0
  63. data/lib/shopify_api/resources/fulfillment_order.rb +30 -16
  64. data/lib/shopify_api/resources/fulfillment_order_locations_for_move.rb +1 -0
  65. data/lib/shopify_api/resources/fulfillment_request.rb +1 -0
  66. data/lib/shopify_api/resources/fulfillment_service.rb +1 -0
  67. data/lib/shopify_api/resources/fulfillment_v2.rb +3 -2
  68. data/lib/shopify_api/resources/gift_card.rb +1 -0
  69. data/lib/shopify_api/resources/image.rb +2 -1
  70. data/lib/shopify_api/resources/inventory_level.rb +2 -3
  71. data/lib/shopify_api/resources/line_item.rb +4 -3
  72. data/lib/shopify_api/resources/location.rb +1 -1
  73. data/lib/shopify_api/resources/marketing_event.rb +1 -0
  74. data/lib/shopify_api/resources/metafield.rb +1 -0
  75. data/lib/shopify_api/resources/note_attribute.rb +1 -0
  76. data/lib/shopify_api/resources/option.rb +1 -0
  77. data/lib/shopify_api/resources/order.rb +2 -1
  78. data/lib/shopify_api/resources/order_risk.rb +1 -0
  79. data/lib/shopify_api/resources/page.rb +1 -0
  80. data/lib/shopify_api/resources/payment_details.rb +1 -0
  81. data/lib/shopify_api/resources/policy.rb +1 -0
  82. data/lib/shopify_api/resources/price_rule.rb +1 -1
  83. data/lib/shopify_api/resources/product.rb +14 -11
  84. data/lib/shopify_api/resources/product_listing.rb +1 -0
  85. data/lib/shopify_api/resources/province.rb +1 -0
  86. data/lib/shopify_api/resources/receipt.rb +1 -0
  87. data/lib/shopify_api/resources/recurring_application_charge.rb +4 -1
  88. data/lib/shopify_api/resources/redirect.rb +1 -0
  89. data/lib/shopify_api/resources/refund.rb +2 -1
  90. data/lib/shopify_api/resources/report.rb +1 -0
  91. data/lib/shopify_api/resources/resource_feedback.rb +1 -1
  92. data/lib/shopify_api/resources/rule.rb +1 -0
  93. data/lib/shopify_api/resources/script_tag.rb +1 -0
  94. data/lib/shopify_api/resources/shipping_address.rb +1 -0
  95. data/lib/shopify_api/resources/shipping_line.rb +1 -0
  96. data/lib/shopify_api/resources/shipping_zone.rb +1 -0
  97. data/lib/shopify_api/resources/shop.rb +2 -1
  98. data/lib/shopify_api/resources/smart_collection.rb +2 -2
  99. data/lib/shopify_api/resources/storefront_access_token.rb +1 -0
  100. data/lib/shopify_api/resources/tax_line.rb +1 -0
  101. data/lib/shopify_api/resources/tax_service.rb +1 -0
  102. data/lib/shopify_api/resources/theme.rb +1 -0
  103. data/lib/shopify_api/resources/transaction.rb +1 -0
  104. data/lib/shopify_api/resources/usage_charge.rb +1 -0
  105. data/lib/shopify_api/resources/user.rb +1 -0
  106. data/lib/shopify_api/resources/variant.rb +16 -18
  107. data/lib/shopify_api/resources/webhook.rb +1 -0
  108. data/lib/shopify_api/session.rb +20 -12
  109. data/lib/shopify_api/version.rb +2 -1
  110. data/lib/verify_docs.rb +1 -0
  111. data/service.yml +1 -1
  112. data/shopify_api.gemspec +10 -4
  113. data/test/access_token_test.rb +6 -5
  114. data/test/active_resource/json_errors_test.rb +6 -6
  115. data/test/api_access_test.rb +153 -0
  116. data/test/api_version_test.rb +3 -3
  117. data/test/application_charge_test.rb +30 -27
  118. data/test/application_credit_test.rb +10 -9
  119. data/test/article_test.rb +34 -35
  120. data/test/asset_test.rb +14 -6
  121. data/test/assigned_fulfillment_order_test.rb +5 -4
  122. data/test/base_test.rb +55 -56
  123. data/test/blog_test.rb +4 -3
  124. data/test/carrier_service_test.rb +7 -6
  125. data/test/cart_test.rb +2 -1
  126. data/test/collect_test.rb +4 -3
  127. data/test/collection_listing_test.rb +21 -16
  128. data/test/collection_publication_test.rb +8 -8
  129. data/test/collection_test.rb +20 -19
  130. data/test/countable_test.rb +3 -2
  131. data/test/currency_test.rb +5 -5
  132. data/test/custom_collection_test.rb +4 -3
  133. data/test/customer_saved_search_test.rb +18 -8
  134. data/test/customer_test.rb +22 -14
  135. data/test/detailed_log_subscriber_test.rb +15 -11
  136. data/test/discount_code_batch_test.rb +11 -10
  137. data/test/discount_code_test.rb +21 -15
  138. data/test/draft_order_test.rb +68 -52
  139. data/test/fixtures/assigned_fulfillment_orders.json +2 -0
  140. data/test/fixtures/fulfillment_order.json +1 -0
  141. data/test/fixtures/fulfillment_orders.json +2 -0
  142. data/test/fulfillment_event_test.rb +31 -26
  143. data/test/fulfillment_order_test.rb +215 -147
  144. data/test/fulfillment_order_test_helper.rb +1 -0
  145. data/test/fulfillment_request_test.rb +10 -8
  146. data/test/fulfillment_service_test.rb +13 -12
  147. data/test/fulfillment_test.rb +81 -66
  148. data/test/fulfillment_v2_test.rb +16 -12
  149. data/test/gift_card_test.rb +6 -4
  150. data/test/graphql_test.rb +27 -27
  151. data/test/image_test.rb +19 -17
  152. data/test/inventory_level_test.rb +24 -15
  153. data/test/lib/webmock_extensions/last_request.rb +1 -1
  154. data/test/limits_test.rb +2 -1
  155. data/test/location_test.rb +2 -1
  156. data/test/marketing_event_test.rb +20 -20
  157. data/test/message_enricher_test.rb +6 -6
  158. data/test/meta_test.rb +7 -9
  159. data/test/metafield_test.rb +30 -20
  160. data/test/order_risk_test.rb +17 -16
  161. data/test/order_test.rb +43 -28
  162. data/test/pagination_test.rb +89 -56
  163. data/test/policy_test.rb +6 -5
  164. data/test/price_rule_test.rb +20 -15
  165. data/test/product_listing_test.rb +20 -20
  166. data/test/product_publication_test.rb +8 -8
  167. data/test/product_test.rb +44 -32
  168. data/test/publication_test.rb +3 -3
  169. data/test/recurring_application_charge_test.rb +104 -42
  170. data/test/redirect_test.rb +4 -3
  171. data/test/refund_test.rb +22 -17
  172. data/test/report_test.rb +12 -10
  173. data/test/resource_feedback_test.rb +14 -13
  174. data/test/script_tag_test.rb +10 -9
  175. data/test/session_test.rb +74 -46
  176. data/test/shipping_zone_test.rb +4 -3
  177. data/test/shop_test.rb +47 -33
  178. data/test/smart_collection_test.rb +5 -4
  179. data/test/storefront_access_token_test.rb +13 -15
  180. data/test/tax_service_test.rb +7 -4
  181. data/test/tender_transaction_test.rb +3 -3
  182. data/test/test_helper.rb +13 -11
  183. data/test/transaction_test.rb +4 -3
  184. data/test/usage_charge_test.rb +12 -8
  185. data/test/user_test.rb +4 -3
  186. data/test/variant_test.rb +23 -54
  187. data/test/webhook_test.rb +10 -7
  188. metadata +14 -9
  189. data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +0 -1027
  190. data/.travis.yml +0 -28
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class FulfillmentOrderLocationsForMove < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class FulfillmentRequest < Base
3
4
  init_prefix :order
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class FulfillmentService < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class FulfillmentV2 < Base
3
4
  self.element_name = 'fulfillment'
@@ -11,8 +12,8 @@ module ShopifyAPI
11
12
  body = {
12
13
  fulfillment: {
13
14
  tracking_info: tracking_info,
14
- notify_customer: notify_customer
15
- }
15
+ notify_customer: notify_customer,
16
+ },
16
17
  }
17
18
  load_attributes_from_response(post(:update_tracking, {}, body.to_json))
18
19
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class GiftCard < Base
3
4
  def disable
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Image < Base
3
4
  init_prefix :product
@@ -5,7 +6,7 @@ module ShopifyAPI
5
6
  # generate a method for each possible image variant
6
7
  [:pico, :icon, :thumb, :small, :compact, :medium, :large, :grande, :original].each do |m|
7
8
  reg_exp_match = "/\\1_#{m}.\\2"
8
- define_method(m) { src.gsub(/\/(.*)\.(\w{2,4})/, reg_exp_match) }
9
+ define_method(m) { src.gsub(%r/\/(.*)\.(\w{2,4})/, reg_exp_match) }
9
10
  end
10
11
 
11
12
  def attach_image(data, filename = nil)
@@ -2,7 +2,6 @@
2
2
 
3
3
  module ShopifyAPI
4
4
  class InventoryLevel < Base
5
-
6
5
  # The default path structure in ActiveResource for delete would result in:
7
6
  # /admin/api/<version>/inventory_levels/#{ inventory_level.id }.json?#{ params }, but since
8
7
  # InventoryLevels are a second class resource made up of a Where and a What
@@ -33,7 +32,7 @@ module ShopifyAPI
33
32
  body = {
34
33
  location_id: location_id,
35
34
  inventory_item_id: inventory_item_id,
36
- available: new_available
35
+ available: new_available,
37
36
  }
38
37
  body[:disconnect_if_necessary] = disconnect_if_necessary unless disconnect_if_necessary.nil?
39
38
  load_attributes_from_response(
@@ -45,7 +44,7 @@ module ShopifyAPI
45
44
  body = {
46
45
  location_id: location_id,
47
46
  inventory_item_id: inventory_item_id,
48
- available_adjustment: available_adjustment
47
+ available_adjustment: available_adjustment,
49
48
  }
50
49
  load_attributes_from_response(
51
50
  self.class.post(:adjust, {}, body.to_json)
@@ -1,12 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class LineItem < Base
3
4
  class Property < Base
4
5
  def initialize(*args)
5
- attributes = args[0] || {}
6
- persisted = args[1] || false
6
+ self.attributes = args[0] || {}
7
+ self.persisted = args[1] || false
7
8
  super
8
9
  rescue NameError
9
- attributes = attributes.to_hash
10
+ self.attributes = attributes.to_hash
10
11
  self
11
12
  end
12
13
  end
@@ -1,6 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Location < Base
3
-
4
4
  def inventory_levels
5
5
  ShopifyAPI::InventoryLevel.find(:all, from: "#{self.class.prefix}locations/#{id}/inventory_levels.json")
6
6
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class MarketingEvent < Base
3
4
  include Countable
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Metafield < Base
3
4
  include DisablePrefixCheck
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class NoteAttribute < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Option < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Order < Base
3
4
  include Events
@@ -16,7 +17,7 @@ module ShopifyAPI
16
17
  end
17
18
 
18
19
  def transactions
19
- Transaction.find(:all, :params => { :order_id => id })
20
+ Transaction.find(:all, params: { order_id: id })
20
21
  end
21
22
 
22
23
  def capture(amount = "", currency: nil)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class OrderRisk < Base
3
4
  init_prefix :order
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Page < Base
3
4
  include Events
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class PaymentDetails < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Policy < Base
3
4
  def self.all
@@ -1,6 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class PriceRule < Base
3
-
4
4
  def discount_codes
5
5
  DiscountCode.find(:all, params: { price_rule_id: id })
6
6
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Product < Base
3
4
  include Events
@@ -5,32 +6,33 @@ module ShopifyAPI
5
6
 
6
7
  early_july_pagination_release!
7
8
 
9
+ def initialize(*)
10
+ super
11
+ self.attributes.except!('total_inventory') unless allow_inventory_params?
12
+ end
13
+
8
14
  # compute the price range
9
15
  def price_range
10
16
  prices = variants.collect(&:price).collect(&:to_f)
11
- format = "%0.2f"
17
+ format = "%0.2f"
12
18
  if prices.min != prices.max
13
19
  "#{format % prices.min} - #{format % prices.max}"
14
20
  else
15
21
  format % prices.min
16
22
  end
17
23
  end
18
-
24
+
19
25
  def total_inventory=(new_value)
20
26
  raise_deprecated_inventory_call('total_inventory') unless allow_inventory_params?
21
27
  super
22
28
  end
23
29
 
24
- def serializable_hash(options = {})
25
- allow_inventory_params? ? super(options) : super(options).except('total_inventory')
26
- end
27
-
28
30
  def collections
29
- CustomCollection.find(:all, :params => {:product_id => self.id})
31
+ CustomCollection.find(:all, params: { product_id: self.id })
30
32
  end
31
33
 
32
34
  def smart_collections
33
- SmartCollection.find(:all, :params => {:product_id => self.id})
35
+ SmartCollection.find(:all, params: { product_id: self.id })
34
36
  end
35
37
 
36
38
  def add_to_collection(collection)
@@ -40,13 +42,14 @@ module ShopifyAPI
40
42
  def remove_from_collection(collection)
41
43
  collection.remove_product(self)
42
44
  end
43
-
45
+
44
46
  private
45
47
 
46
48
  def raise_deprecated_inventory_call(parameter)
47
- raise(ShopifyAPI::ValidationException,
49
+ raise(
50
+ ShopifyAPI::ValidationException,
48
51
  "'#{parameter}' is deprecated - see https://help.shopify.com/en/api/guides/inventory-migration-guide",
49
- )
52
+ )
50
53
  end
51
54
 
52
55
  def allow_inventory_params?
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class ProductListing < Base
3
4
  self.primary_key = :product_id
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Province < Base
3
4
  init_prefix :country
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Receipt < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class RecurringApplicationCharge < Base
3
4
  undef_method :test
@@ -25,7 +26,9 @@ module ShopifyAPI
25
26
  end
26
27
 
27
28
  def customize(customize_recurring_app_charge_params = {})
28
- load_attributes_from_response(put(:customize, recurring_application_charge: customize_recurring_app_charge_params ))
29
+ load_attributes_from_response(
30
+ put(:customize, recurring_application_charge: customize_recurring_app_charge_params)
31
+ )
29
32
  end
30
33
  end
31
34
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Redirect < Base
3
4
  end
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Refund < Base
3
4
  init_prefix :order
4
5
 
5
6
  def self.calculate(*args)
6
- options = { :refund => args[0] }
7
+ options = { refund: args[0] }
7
8
  params = {}
8
9
  params = args[1][:params] if args[1] && args[1][:params]
9
10
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Report < Base
3
4
  end
@@ -13,7 +13,7 @@ module ShopifyAPI
13
13
 
14
14
  def save
15
15
  return super unless persisted?
16
- raise ExistingFeedbackSaved.new(EXISTING_FEEDBACK_SAVED_ERROR_MESSAGE)
16
+ raise ExistingFeedbackSaved, EXISTING_FEEDBACK_SAVED_ERROR_MESSAGE
17
17
  end
18
18
  end
19
19
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Rule < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class ScriptTag < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class ShippingAddress < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class ShippingLine < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class ShippingZone < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  # Shop object. Use Shop.current to receive
3
4
  # the shop.
@@ -9,7 +10,7 @@ module ShopifyAPI
9
10
  end
10
11
 
11
12
  def metafields(**options)
12
- Metafield.find :all, params: options
13
+ Metafield.find(:all, params: options)
13
14
  end
14
15
 
15
16
  def add_metafield(metafield)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class SmartCollection < Base
3
4
  include Events
@@ -7,9 +8,8 @@ module ShopifyAPI
7
8
  Product.find(:all, params: { collection_id: id })
8
9
  end
9
10
 
10
- def order(options={})
11
+ def order(options = {})
11
12
  load_attributes_from_response(put(:order, options, only_id))
12
13
  end
13
-
14
14
  end
15
15
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class StorefrontAccessToken < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class TaxLine < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class TaxService < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Theme < Base
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Transaction < Base
3
4
  init_prefix :order
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class UsageCharge < Base
3
4
  init_prefix :recurring_application_charge
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class User < Base
3
4
  end
@@ -1,45 +1,43 @@
1
+ # frozen_string_literal: true
1
2
  module ShopifyAPI
2
3
  class Variant < Base
3
4
  include Metafields
4
5
  include DisablePrefixCheck
5
6
 
6
7
  conditional_prefix :product
7
-
8
+
9
+ def initialize(*)
10
+ super
11
+ attributes.except!('old_inventory_quantity')
12
+ end
13
+
8
14
  def inventory_quantity_adjustment=(new_value)
9
- raise_deprecated_inventory_call('inventory_quantity_adjustment') unless allow_inventory_params?
15
+ raise_deprecated_inventory_call('inventory_quantity_adjustment')
10
16
  super
11
17
  end
12
18
 
13
19
  def inventory_quantity=(new_value)
14
- raise_deprecated_inventory_call('inventory_quantity') unless allow_inventory_params?
20
+ raise_deprecated_inventory_call('inventory_quantity')
15
21
  super
16
22
  end
17
23
 
18
24
  def old_inventory_quantity=(new_value)
19
- raise_deprecated_inventory_call('old_inventory_quantity') unless allow_inventory_params?
25
+ raise_deprecated_inventory_call('old_inventory_quantity')
20
26
  super
21
27
  end
22
28
 
23
- def serializable_hash(options = {})
24
- if allow_inventory_params?
25
- super(options)
26
- else
27
- super(options).tap do |resource|
28
- (resource['variant'] || resource).except!('inventory_quantity', 'old_inventory_quantity')
29
- end
30
- end
29
+ def save
30
+ attributes.except!('inventory_quantity')
31
+ super
31
32
  end
32
33
 
33
34
  private
34
35
 
35
36
  def raise_deprecated_inventory_call(parameter)
36
- raise(ShopifyAPI::ValidationException,
37
+ raise(
38
+ ShopifyAPI::ValidationException,
37
39
  "'#{parameter}' is deprecated - see https://help.shopify.com/en/api/guides/inventory-migration-guide",
38
- )
39
- end
40
-
41
- def allow_inventory_params?
42
- Base.api_version < ApiVersion.find_version('2019-10')
40
+ )
43
41
  end
44
42
  end
45
43
  end