shopify_api 9.0.4 → 9.5

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 (201) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/ISSUE_TEMPLATE.md +36 -0
  4. data/.github/workflows/build.yml +44 -0
  5. data/.gitignore +2 -1
  6. data/.rubocop.yml +23 -3
  7. data/.rubocop_todo.yml +75 -0
  8. data/CHANGELOG.md +41 -0
  9. data/CONTRIBUTING.md +1 -1
  10. data/Gemfile +5 -0
  11. data/Gemfile.lock +153 -0
  12. data/Gemfile_ar51 +1 -1
  13. data/README.md +42 -32
  14. data/RELEASING +10 -6
  15. data/Rakefile +16 -5
  16. data/SECURITY.md +59 -0
  17. data/dev.yml +11 -0
  18. data/docs/_config.yml +1 -0
  19. data/docs/_includes/footer.html +28 -0
  20. data/docs/_includes/head.html +28 -0
  21. data/docs/_layouts/index.html +57 -0
  22. data/docs/graphql.md +47 -2
  23. data/docs/index.md +639 -0
  24. data/lib/active_resource/connection_ext.rb +1 -0
  25. data/lib/active_resource/detailed_log_subscriber.rb +10 -7
  26. data/lib/active_resource/json_errors.rb +8 -2
  27. data/lib/shopify_api/api_access.rb +57 -0
  28. data/lib/shopify_api/api_version.rb +6 -5
  29. data/lib/shopify_api/connection.rb +1 -0
  30. data/lib/shopify_api/countable.rb +3 -2
  31. data/lib/shopify_api/disable_prefix_check.rb +2 -2
  32. data/lib/shopify_api/events.rb +2 -1
  33. data/lib/shopify_api/graphql.rb +28 -8
  34. data/lib/shopify_api/hmac_params.rb +23 -0
  35. data/lib/shopify_api/limits.rb +3 -2
  36. data/lib/shopify_api/message_enricher.rb +11 -9
  37. data/lib/shopify_api/meta.rb +0 -1
  38. data/lib/shopify_api/metafields.rb +5 -4
  39. data/lib/shopify_api/pagination_link_headers.rb +5 -4
  40. data/lib/shopify_api/resources/access_scope.rb +1 -1
  41. data/lib/shopify_api/resources/access_token.rb +1 -0
  42. data/lib/shopify_api/resources/address.rb +1 -0
  43. data/lib/shopify_api/resources/announcement.rb +2 -1
  44. data/lib/shopify_api/resources/application_charge.rb +1 -0
  45. data/lib/shopify_api/resources/application_credit.rb +1 -0
  46. data/lib/shopify_api/resources/article.rb +3 -2
  47. data/lib/shopify_api/resources/asset.rb +6 -5
  48. data/lib/shopify_api/resources/assigned_fulfillment_order.rb +1 -1
  49. data/lib/shopify_api/resources/base.rb +12 -8
  50. data/lib/shopify_api/resources/billing_address.rb +1 -0
  51. data/lib/shopify_api/resources/blog.rb +2 -1
  52. data/lib/shopify_api/resources/carrier_service.rb +1 -0
  53. data/lib/shopify_api/resources/cart.rb +2 -1
  54. data/lib/shopify_api/resources/collect.rb +1 -0
  55. data/lib/shopify_api/resources/collection_listing.rb +1 -0
  56. data/lib/shopify_api/resources/comment.rb +20 -5
  57. data/lib/shopify_api/resources/country.rb +1 -0
  58. data/lib/shopify_api/resources/custom_collection.rb +4 -3
  59. data/lib/shopify_api/resources/customer.rb +2 -1
  60. data/lib/shopify_api/resources/customer_group.rb +1 -0
  61. data/lib/shopify_api/resources/customer_invite.rb +1 -0
  62. data/lib/shopify_api/resources/customer_saved_search.rb +2 -1
  63. data/lib/shopify_api/resources/discount_code.rb +1 -0
  64. data/lib/shopify_api/resources/discount_code_batch.rb +4 -2
  65. data/lib/shopify_api/resources/draft_order.rb +1 -0
  66. data/lib/shopify_api/resources/draft_order_invoice.rb +1 -0
  67. data/lib/shopify_api/resources/event.rb +1 -0
  68. data/lib/shopify_api/resources/fulfillment.rb +12 -3
  69. data/lib/shopify_api/resources/fulfillment_event.rb +1 -0
  70. data/lib/shopify_api/resources/fulfillment_order.rb +30 -16
  71. data/lib/shopify_api/resources/fulfillment_order_locations_for_move.rb +1 -0
  72. data/lib/shopify_api/resources/fulfillment_request.rb +1 -0
  73. data/lib/shopify_api/resources/fulfillment_service.rb +1 -0
  74. data/lib/shopify_api/resources/fulfillment_v2.rb +3 -2
  75. data/lib/shopify_api/resources/gift_card.rb +1 -0
  76. data/lib/shopify_api/resources/image.rb +2 -1
  77. data/lib/shopify_api/resources/inventory_level.rb +3 -4
  78. data/lib/shopify_api/resources/line_item.rb +4 -3
  79. data/lib/shopify_api/resources/location.rb +1 -1
  80. data/lib/shopify_api/resources/marketing_event.rb +1 -0
  81. data/lib/shopify_api/resources/metafield.rb +1 -0
  82. data/lib/shopify_api/resources/note_attribute.rb +1 -0
  83. data/lib/shopify_api/resources/option.rb +1 -0
  84. data/lib/shopify_api/resources/order.rb +2 -1
  85. data/lib/shopify_api/resources/order_risk.rb +1 -0
  86. data/lib/shopify_api/resources/page.rb +1 -0
  87. data/lib/shopify_api/resources/payment_details.rb +1 -0
  88. data/lib/shopify_api/resources/policy.rb +1 -0
  89. data/lib/shopify_api/resources/price_rule.rb +1 -1
  90. data/lib/shopify_api/resources/product.rb +27 -3
  91. data/lib/shopify_api/resources/product_listing.rb +1 -0
  92. data/lib/shopify_api/resources/province.rb +1 -0
  93. data/lib/shopify_api/resources/receipt.rb +1 -0
  94. data/lib/shopify_api/resources/recurring_application_charge.rb +4 -1
  95. data/lib/shopify_api/resources/redirect.rb +1 -0
  96. data/lib/shopify_api/resources/refund.rb +2 -1
  97. data/lib/shopify_api/resources/report.rb +1 -0
  98. data/lib/shopify_api/resources/resource_feedback.rb +1 -1
  99. data/lib/shopify_api/resources/rule.rb +1 -0
  100. data/lib/shopify_api/resources/script_tag.rb +1 -0
  101. data/lib/shopify_api/resources/shipping_address.rb +1 -0
  102. data/lib/shopify_api/resources/shipping_line.rb +1 -0
  103. data/lib/shopify_api/resources/shipping_zone.rb +1 -0
  104. data/lib/shopify_api/resources/shop.rb +2 -1
  105. data/lib/shopify_api/resources/smart_collection.rb +4 -8
  106. data/lib/shopify_api/resources/storefront_access_token.rb +1 -0
  107. data/lib/shopify_api/resources/tax_line.rb +1 -0
  108. data/lib/shopify_api/resources/tax_service.rb +1 -0
  109. data/lib/shopify_api/resources/theme.rb +1 -0
  110. data/lib/shopify_api/resources/transaction.rb +1 -0
  111. data/lib/shopify_api/resources/usage_charge.rb +1 -0
  112. data/lib/shopify_api/resources/user.rb +1 -0
  113. data/lib/shopify_api/resources/variant.rb +35 -0
  114. data/lib/shopify_api/resources/webhook.rb +1 -0
  115. data/lib/shopify_api/resources.rb +1 -0
  116. data/lib/shopify_api/session.rb +51 -20
  117. data/lib/shopify_api/version.rb +2 -1
  118. data/lib/shopify_api.rb +9 -1
  119. data/lib/verify_docs.rb +8 -0
  120. data/service.yml +2 -5
  121. data/shopify_api.gemspec +13 -7
  122. data/test/access_token_test.rb +6 -5
  123. data/test/active_resource/json_errors_test.rb +6 -6
  124. data/test/api_access_test.rb +153 -0
  125. data/test/api_version_test.rb +3 -3
  126. data/test/application_charge_test.rb +30 -27
  127. data/test/application_credit_test.rb +10 -9
  128. data/test/article_test.rb +34 -35
  129. data/test/asset_test.rb +14 -6
  130. data/test/assigned_fulfillment_order_test.rb +5 -4
  131. data/test/base_test.rb +64 -49
  132. data/test/blog_test.rb +4 -3
  133. data/test/carrier_service_test.rb +7 -6
  134. data/test/cart_test.rb +2 -1
  135. data/test/collect_test.rb +4 -3
  136. data/test/collection_listing_test.rb +21 -16
  137. data/test/collection_publication_test.rb +8 -8
  138. data/test/collection_test.rb +20 -19
  139. data/test/countable_test.rb +3 -2
  140. data/test/currency_test.rb +5 -5
  141. data/test/custom_collection_test.rb +4 -3
  142. data/test/customer_saved_search_test.rb +18 -8
  143. data/test/customer_test.rb +22 -14
  144. data/test/detailed_log_subscriber_test.rb +16 -12
  145. data/test/discount_code_batch_test.rb +11 -10
  146. data/test/discount_code_test.rb +21 -15
  147. data/test/draft_order_test.rb +68 -52
  148. data/test/fixtures/assigned_fulfillment_orders.json +2 -0
  149. data/test/fixtures/fulfillment_order.json +1 -0
  150. data/test/fixtures/fulfillment_orders.json +2 -0
  151. data/test/fulfillment_event_test.rb +31 -26
  152. data/test/fulfillment_order_test.rb +217 -149
  153. data/test/fulfillment_order_test_helper.rb +1 -0
  154. data/test/fulfillment_request_test.rb +10 -8
  155. data/test/fulfillment_service_test.rb +13 -12
  156. data/test/fulfillment_test.rb +81 -66
  157. data/test/fulfillment_v2_test.rb +16 -12
  158. data/test/gift_card_test.rb +6 -4
  159. data/test/graphql_test.rb +55 -23
  160. data/test/hmac_params_test.rb +25 -0
  161. data/test/image_test.rb +19 -17
  162. data/test/inventory_level_test.rb +24 -15
  163. data/test/lib/webmock_extensions/last_request.rb +1 -1
  164. data/test/limits_test.rb +2 -1
  165. data/test/location_test.rb +2 -1
  166. data/test/marketing_event_test.rb +20 -20
  167. data/test/message_enricher_test.rb +6 -6
  168. data/test/meta_test.rb +9 -11
  169. data/test/metafield_test.rb +30 -20
  170. data/test/order_risk_test.rb +17 -16
  171. data/test/order_test.rb +43 -28
  172. data/test/pagination_test.rb +89 -56
  173. data/test/policy_test.rb +6 -5
  174. data/test/price_rule_test.rb +20 -15
  175. data/test/product_listing_test.rb +20 -20
  176. data/test/product_publication_test.rb +8 -8
  177. data/test/product_test.rb +71 -20
  178. data/test/publication_test.rb +3 -3
  179. data/test/recurring_application_charge_test.rb +104 -42
  180. data/test/redirect_test.rb +4 -3
  181. data/test/refund_test.rb +22 -17
  182. data/test/report_test.rb +12 -10
  183. data/test/resource_feedback_test.rb +14 -13
  184. data/test/script_tag_test.rb +10 -9
  185. data/test/session_test.rb +319 -45
  186. data/test/shipping_zone_test.rb +4 -3
  187. data/test/shop_test.rb +47 -33
  188. data/test/smart_collection_test.rb +5 -29
  189. data/test/storefront_access_token_test.rb +13 -15
  190. data/test/tax_service_test.rb +7 -4
  191. data/test/tender_transaction_test.rb +3 -3
  192. data/test/test_helper.rb +14 -12
  193. data/test/transaction_test.rb +4 -3
  194. data/test/usage_charge_test.rb +12 -8
  195. data/test/user_test.rb +4 -3
  196. data/test/variant_test.rb +50 -23
  197. data/test/webhook_test.rb +10 -7
  198. metadata +44 -17
  199. data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +0 -1027
  200. data/.travis.yml +0 -23
  201. data/bin/shopify +0 -3
@@ -1,22 +1,31 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class InventoryLevelTest < Test::Unit::TestCase
4
5
  def setup
5
6
  super
6
- @inventory_level_response = ActiveSupport::JSON.decode load_fixture('inventory_level')
7
+ @inventory_level_response = ActiveSupport::JSON.decode(load_fixture('inventory_level'))
7
8
  @inventory_level = ShopifyAPI::InventoryLevel.new(@inventory_level_response['inventory_level'])
8
9
  end
9
10
 
10
11
  test ".find with inventory_item_ids and location_ids returns expected inventory levels" do
11
12
  params = { inventory_item_ids: [808950810, 39072856], location_ids: [905684977, 487838322] }
12
- fake "inventory_levels.json?#{params.to_param}", extension: false, method: :get,
13
- status: 200, body: load_fixture('inventory_levels')
13
+ fake(
14
+ "inventory_levels.json?#{params.to_param}",
15
+ extension: false,
16
+ method: :get,
17
+ status: 200,
18
+ body: load_fixture('inventory_levels')
19
+ )
14
20
  inventory_levels = ShopifyAPI::InventoryLevel.find(:all, params: params)
15
21
 
16
- assert inventory_levels.all? { |item|
17
- params[:location_ids].include?(item.location_id) &&
18
- params[:inventory_item_ids].include?(item.inventory_item_id)
19
- }, message: 'Response contained inventory_items or locations not requested.'
22
+ assert(
23
+ inventory_levels.all? do |item|
24
+ params[:location_ids].include?(item.location_id) &&
25
+ params[:inventory_item_ids].include?(item.inventory_item_id)
26
+ end,
27
+ message: 'Response contained inventory_items or locations not requested.'
28
+ )
20
29
  end
21
30
 
22
31
  test '#adjust with adjustment value returns inventory_level with available increased by adjustment value' do
@@ -24,9 +33,9 @@ class InventoryLevelTest < Test::Unit::TestCase
24
33
  updated_available = @inventory_level.available + adjustment
25
34
  @inventory_level_response[:available] = updated_available
26
35
 
27
- fake 'inventory_levels/adjust', method: :post, body: ActiveSupport::JSON.encode(@inventory_level_response)
36
+ fake('inventory_levels/adjust', method: :post, body: ActiveSupport::JSON.encode(@inventory_level_response))
28
37
  @inventory_level.adjust(adjustment)
29
- assert_equal updated_available, @inventory_level.available
38
+ assert_equal(updated_available, @inventory_level.available)
30
39
  end
31
40
 
32
41
  test '#connect saves an inventory_level associated with inventory_item and location_id' do
@@ -34,16 +43,16 @@ class InventoryLevelTest < Test::Unit::TestCase
34
43
  response = params.clone
35
44
  response[:available] = 0
36
45
 
37
- fake 'inventory_levels/connect', method: :post, body: ActiveSupport::JSON.encode(response)
46
+ fake('inventory_levels/connect', method: :post, body: ActiveSupport::JSON.encode(response))
38
47
  inventory_level = ShopifyAPI::InventoryLevel.new(params)
39
48
  inventory_level.connect
40
- assert_equal 0, inventory_level.available, message: 'expected newly connected location to have 0 inventory'
49
+ assert_equal(0, inventory_level.available, message: 'expected newly connected location to have 0 inventory')
41
50
  end
42
51
 
43
52
  test '#destroy removes inventory_level and returns nil' do
44
53
  params = { inventory_item_id: @inventory_level.inventory_item_id, location_id: @inventory_level.location_id }
45
- fake "inventory_levels.json?#{params.to_param}", extension: false, method: :delete, status: 204, body: nil
46
- assert_nil @inventory_level.destroy
54
+ fake("inventory_levels.json?#{params.to_param}", extension: false, method: :delete, status: 204, body: nil)
55
+ assert_nil(@inventory_level.destroy)
47
56
  end
48
57
 
49
58
  test '#set with available value returns inventory_level with available as the available value' do
@@ -51,9 +60,9 @@ class InventoryLevelTest < Test::Unit::TestCase
51
60
  response = @inventory_level_response.clone
52
61
  response['inventory_level']['available'] = available
53
62
 
54
- fake 'inventory_levels/set', method: :post, body: ActiveSupport::JSON.encode(response)
63
+ fake('inventory_levels/set', method: :post, body: ActiveSupport::JSON.encode(response))
55
64
  @inventory_level.set(available)
56
65
 
57
- assert_equal available, @inventory_level.available
66
+ assert_equal(available, @inventory_level.available)
58
67
  end
59
68
  end
@@ -11,6 +11,6 @@ module LastRequest
11
11
  end
12
12
 
13
13
  WebMock.extend(LastRequest)
14
- WebMock.after_request do |request_signature, response|
14
+ WebMock.after_request do |request_signature, _response|
15
15
  WebMock.last_request = request_signature
16
16
  end
data/test/limits_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class LimitsTest < Test::Unit::TestCase
@@ -30,7 +31,7 @@ class LimitsTest < Test::Unit::TestCase
30
31
  should "raise error when header doesn't exist" do
31
32
  @header_hash = {}
32
33
  ShopifyAPI::Base.connection.expects(:response).at_least(1).returns(@header_hash)
33
- assert_raises ShopifyAPI::Limits::LimitUnavailable do
34
+ assert_raises(ShopifyAPI::Limits::LimitUnavailable) do
34
35
  ShopifyAPI.credit_left
35
36
  end
36
37
  end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class LocationTest < Test::Unit::TestCase
4
5
  test '#inventory_levels returns all inventory_levels associated with this location' do
5
6
  location = ShopifyAPI::Location.new(id: 487838322)
6
7
  expected_body = JSON.parse(load_fixture('inventory_levels'))
7
- expected_body['inventory_levels'].delete_if {|level| level['location_id'] != location.id }
8
+ expected_body['inventory_levels'].delete_if { |level| level['location_id'] != location.id }
8
9
  fake "locations/#{location.id}/inventory_levels", method: :get, status: 200, body: JSON(expected_body).to_s
9
10
  inventory_levels = location.inventory_levels
10
11
 
@@ -1,56 +1,56 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class MarketingEventTest < Test::Unit::TestCase
4
-
5
5
  def test_get_marketing_events
6
- fake "marketing_events", :method => :get, :body => load_fixture('marketing_events')
6
+ fake("marketing_events", method: :get, body: load_fixture('marketing_events'))
7
7
  marketing_events = ShopifyAPI::MarketingEvent.all
8
- assert_equal 2, marketing_events.size
8
+ assert_equal(2, marketing_events.size)
9
9
  end
10
10
 
11
11
  def test_get_marketing_event
12
- fake "marketing_events/1", :method => :get, :body => load_fixture('marketing_event')
12
+ fake("marketing_events/1", method: :get, body: load_fixture('marketing_event'))
13
13
  marketing_event = ShopifyAPI::MarketingEvent.find(1)
14
- assert_equal 1, marketing_event.id
14
+ assert_equal(1, marketing_event.id)
15
15
  end
16
16
 
17
17
  def test_create_marketing_event
18
- fake "marketing_events", :method => :post, :body => load_fixture('marketing_event')
18
+ fake("marketing_events", method: :post, body: load_fixture('marketing_event'))
19
19
  marketing_event = ShopifyAPI::MarketingEvent.new
20
20
  marketing_event.currency_code = 'GBP'
21
21
  marketing_event.event_target = 'facebook'
22
22
  marketing_event.event_type = 'post'
23
23
  marketing_event.save
24
24
 
25
- assert_equal 'facebook', marketing_event.event_target
26
- assert_equal 1, marketing_event.id
25
+ assert_equal('facebook', marketing_event.event_target)
26
+ assert_equal(1, marketing_event.id)
27
27
  end
28
28
 
29
29
  def test_delete_marketing_event
30
- fake "marketing_events/1", :method => :get, :body => load_fixture('marketing_event')
31
- fake "marketing_events/1", :method => :delete, :body => "destroyed"
30
+ fake("marketing_events/1", method: :get, body: load_fixture('marketing_event'))
31
+ fake("marketing_events/1", method: :delete, body: "destroyed")
32
32
  marketing_event = ShopifyAPI::MarketingEvent.find(1)
33
- assert marketing_event.destroy
33
+ assert(marketing_event.destroy)
34
34
  end
35
35
 
36
36
  def test_update_marketing_event
37
- fake 'marketing_events/1', :method => :get, :status => 200, :body => load_fixture('marketing_event')
37
+ fake('marketing_events/1', method: :get, status: 200, body: load_fixture('marketing_event'))
38
38
  marketing_event = ShopifyAPI::MarketingEvent.find(1)
39
39
  marketing_event.currency = 'USD'
40
- fake 'marketing_events/1', :method => :put, :status => 200, :body => load_fixture('marketing_event')
41
- assert marketing_event.save
40
+ fake('marketing_events/1', method: :put, status: 200, body: load_fixture('marketing_event'))
41
+ assert(marketing_event.save)
42
42
  end
43
43
 
44
44
  def test_count_marketing_events
45
- fake "marketing_events/count", :method => :get, :body => '{"count": 2}'
45
+ fake("marketing_events/count", method: :get, body: '{"count": 2}')
46
46
  marketing_events_count = ShopifyAPI::MarketingEvent.count
47
- assert_equal 2, marketing_events_count
47
+ assert_equal(2, marketing_events_count)
48
48
  end
49
49
 
50
50
  def test_add_engagements
51
- fake "marketing_events/1", method: :get, body: load_fixture('marketing_event')
51
+ fake("marketing_events/1", method: :get, body: load_fixture('marketing_event'))
52
52
  marketing_event = ShopifyAPI::MarketingEvent.find(1)
53
- fake "marketing_events/1/engagements", method: :post, status: 201, body: load_fixture('engagement')
53
+ fake("marketing_events/1/engagements", method: :post, status: 201, body: load_fixture('engagement'))
54
54
  engagement = {
55
55
  occurred_on: "2017-04-20",
56
56
  impressions_count: nil,
@@ -60,9 +60,9 @@ class MarketingEventTest < Test::Unit::TestCase
60
60
  favorites_count: nil,
61
61
  comments_count: nil,
62
62
  ad_spend: nil,
63
- is_cumulative: true
63
+ is_cumulative: true,
64
64
  }
65
65
  marketing_event.add_engagements(engagement)
66
- assert "2017-04-20", engagement[:occurred_on]
66
+ assert("2017-04-20", engagement[:occurred_on])
67
67
  end
68
68
  end
@@ -1,35 +1,35 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class MessageEnricherTest < Test::Unit::TestCase
4
-
5
5
  def test_enriches_initial_message_when_body_contains_error
6
6
  response = enriched_response(422, 'InitialMessage', { error: 'My Error' })
7
7
 
8
- assert_equal 'InitialMessage (My Error)', response.message
8
+ assert_equal('InitialMessage (My Error)', response.message)
9
9
  end
10
10
 
11
11
  def test_enriches_initial_message_when_body_contains_errors_array
12
12
  response = enriched_response(422, 'InitialMessage', { errors: ['My Error1', 'My Error2'] })
13
13
 
14
- assert_equal 'InitialMessage (My Error1; My Error2)', response.message
14
+ assert_equal('InitialMessage (My Error1; My Error2)', response.message)
15
15
  end
16
16
 
17
17
  def test_enriches_initial_message_when_body_contains_errors_single_value
18
18
  response = enriched_response(422, 'InitialMessage', { errors: 'My Error1' })
19
19
 
20
- assert_equal 'InitialMessage (My Error1)', response.message
20
+ assert_equal('InitialMessage (My Error1)', response.message)
21
21
  end
22
22
 
23
23
  def test_returns_initial_message_when_code_is_200
24
24
  response = enriched_response(200, 'InitialMessage', { result: 'Success' })
25
25
 
26
- assert_equal 'InitialMessage', response.message
26
+ assert_equal('InitialMessage', response.message)
27
27
  end
28
28
 
29
29
  def test_returns_initial_message_when_body_cant_be_parsed
30
30
  response = enriched_response(422, 'InitialMessage', 'not a json')
31
31
 
32
- assert_equal 'InitialMessage', response.message
32
+ assert_equal('InitialMessage', response.message)
33
33
  end
34
34
 
35
35
  private
data/test/meta_test.rb CHANGED
@@ -8,42 +8,40 @@ class ApiVersionTest < Test::Unit::TestCase
8
8
  "handle": "2019-01",
9
9
  "display_name": "2019-01",
10
10
  "supported": true,
11
- "latest_supported": false
11
+ "latest_supported": false,
12
12
  },
13
13
  {
14
14
  "handle": "2019-04",
15
15
  "latest_supported": false,
16
16
  "display_name": "2019-04",
17
- "supported": true
17
+ "supported": true,
18
18
  },
19
19
  {
20
20
  "handle": "2019-07",
21
21
  "latest_supported": false,
22
22
  "display_name": "2019-07",
23
- "supported": true
23
+ "supported": true,
24
24
  },
25
25
  {
26
26
  "handle": "2019-10",
27
27
  "latest_supported": false,
28
28
  "display_name": "2019-10",
29
- "supported": true
29
+ "supported": true,
30
30
  },
31
31
  {
32
32
  "handle": "2020-01",
33
33
  "latest_supported": true,
34
34
  "display_name": "2020-01 (Latest)",
35
- "supported": true
35
+ "supported": true,
36
36
  },
37
37
  {
38
38
  "handle": "unstable",
39
39
  "latest_supported": false,
40
40
  "display_name": "unstable",
41
- "supported": false
42
- }
43
- ].to_json
44
-
45
-
46
- assert_equal versions, ShopifyAPI::Meta.admin_versions.to_json
41
+ "supported": false,
42
+ },
43
+ ].as_json
47
44
 
45
+ assert_equal versions, ShopifyAPI::Meta.admin_versions.as_json
48
46
  end
49
47
  end
@@ -1,46 +1,56 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class MetafieldTest < Test::Unit::TestCase
4
5
  def test_get_metafields
5
- fake "metafields", :method => :get, :body => load_fixture('metafields')
6
- metafields = ShopifyAPI::Metafield.find(:all)
6
+ fake("metafields", method: :get, body: load_fixture('metafields'))
7
+ ShopifyAPI::Metafield.find(:all)
7
8
  end
8
9
 
9
10
  def test_get_metafield
10
- fake "metafields/721389482", :method => :get, :body => load_fixture('metafield')
11
- assert ShopifyAPI::Metafield.find(721389482)
11
+ fake("metafields/721389482", method: :get, body: load_fixture('metafield'))
12
+ assert(ShopifyAPI::Metafield.find(721389482))
12
13
  end
13
14
 
14
15
  def test_get_metafield_of_a_blog
15
- fake "blogs/1008414260/metafields/721389482", :method => :get, :body => load_fixture('metafield')
16
- metafield = ShopifyAPI::Metafield.find(721389482, :params => {:resource => "blogs", :resource_id => 1008414260})
17
- assert_equal 1008414260, metafield.prefix_options[:resource_id]
16
+ fake("blogs/1008414260/metafields/721389482", method: :get, body: load_fixture('metafield'))
17
+ metafield = ShopifyAPI::Metafield.find(721389482, params: { resource: "blogs", resource_id: 1008414260 })
18
+ assert_equal(1008414260, metafield.prefix_options[:resource_id])
18
19
  end
19
20
 
20
21
  def test_create_metafield_for_a_blog
21
- fake "blogs/1008414260", :method => :get, :body => load_fixture('blog')
22
- fake "blogs/1008414260/metafields", :method => :post, :status => 201, :body => load_fixture('metafield')
22
+ fake("blogs/1008414260", method: :get, body: load_fixture('blog'))
23
+ fake("blogs/1008414260/metafields", method: :post, status: 201, body: load_fixture('metafield'))
23
24
 
24
25
  blog = ShopifyAPI::Blog.find(1008414260)
25
- metafield = blog.add_metafield(ShopifyAPI::Metafield.new(:namespace => "summaries", :key => "First Summary", :value => "Make commerce better", :value_type => "string"))
26
-
27
- assert_equal ActiveSupport::JSON.decode('{"metafield":{"namespace":"summaries","key":"First Summary","value":"Make commerce better","value_type":"string"}}'), ActiveSupport::JSON.decode(WebMock.last_request.body)
28
- assert !metafield.new_record?
26
+ metafield = blog.add_metafield(
27
+ ShopifyAPI::Metafield.new(
28
+ namespace: "summaries", key: "First Summary", value: "Make commerce better", value_type: "string"
29
+ )
30
+ )
31
+
32
+ assert_equal(
33
+ ActiveSupport::JSON.decode(
34
+ '{"metafield":{"namespace":"summaries","key":"First Summary",' \
35
+ '"value":"Make commerce better","value_type":"string"}}'
36
+ ),
37
+ ActiveSupport::JSON.decode(WebMock.last_request.body)
38
+ )
39
+ assert(!metafield.new_record?)
29
40
  end
30
41
 
31
42
  def test_update_metafield
32
- fake "metafields/721389482", :method => :get, :body => load_fixture('metafield')
33
- fake "metafields/721389482", :method => :put, :status => 200, :body => load_fixture('metafield')
43
+ fake("metafields/721389482", method: :get, body: load_fixture('metafield'))
44
+ fake("metafields/721389482", method: :put, status: 200, body: load_fixture('metafield'))
34
45
  metafield = ShopifyAPI::Metafield.find(721389482)
35
46
  metafield.namespace = "teaser"
36
- assert metafield.save
47
+ assert(metafield.save)
37
48
  end
38
49
 
39
50
  def test_delete_metafield
40
- fake "metafields/721389482", :method => :get, :body => load_fixture('metafield')
41
- fake "metafields/721389482", :method => :delete, :body => 'destroyed'
51
+ fake("metafields/721389482", method: :get, body: load_fixture('metafield'))
52
+ fake("metafields/721389482", method: :delete, body: 'destroyed')
42
53
  metafield = ShopifyAPI::Metafield.find(721389482)
43
- assert metafield.destroy
54
+ assert(metafield.destroy)
44
55
  end
45
56
  end
46
-
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class OrderRiskTest < Test::Unit::TestCase
4
5
  def test_create_order_risk
5
- fake "orders/450789469/risks", :method => :post, :body => load_fixture('order_risk')
6
- v = ShopifyAPI::OrderRisk.new(:order_id => 450789469)
6
+ fake("orders/450789469/risks", method: :post, body: load_fixture('order_risk'))
7
+ v = ShopifyAPI::OrderRisk.new(order_id: 450789469)
7
8
  v.message = "This order was placed from a proxy IP"
8
9
  v.recommendation = "cancel"
9
10
  v.score = "1.0"
@@ -13,33 +14,33 @@ class OrderRiskTest < Test::Unit::TestCase
13
14
  v.cause_cancel = true
14
15
  v.save
15
16
 
16
- assert_equal 284138680, v.id
17
+ assert_equal(284138680, v.id)
17
18
  end
18
19
 
19
20
  def test_get_order_risks
20
- fake "orders/450789469/risks", :method => :get, :body => load_fixture('order_risks')
21
- v = ShopifyAPI::OrderRisk.find(:all, :params => {:order_id => 450789469})
22
- assert_equal 2, v.size
21
+ fake("orders/450789469/risks", method: :get, body: load_fixture('order_risks'))
22
+ v = ShopifyAPI::OrderRisk.find(:all, params: { order_id: 450789469 })
23
+ assert_equal(2, v.size)
23
24
  end
24
25
 
25
26
  def test_get_order_risk
26
- fake "orders/450789469/risks/284138680", :method => :get, :body => load_fixture('order_risk')
27
- v = ShopifyAPI::OrderRisk.find(284138680, :params => {:order_id => 450789469})
28
- assert_equal 284138680, v.id
27
+ fake("orders/450789469/risks/284138680", method: :get, body: load_fixture('order_risk'))
28
+ v = ShopifyAPI::OrderRisk.find(284138680, params: { order_id: 450789469 })
29
+ assert_equal(284138680, v.id)
29
30
  end
30
31
 
31
32
  def test_delete_order_risk
32
- fake "orders/450789469/risks/284138680", :method => :get, :body => load_fixture('order_risk')
33
- fake "orders/450789469/risks/284138680", :method => :delete, :body => "destroyed"
34
- v = ShopifyAPI::OrderRisk.find(284138680, :params => {:order_id => 450789469})
35
- assert v.destroy
33
+ fake("orders/450789469/risks/284138680", method: :get, body: load_fixture('order_risk'))
34
+ fake("orders/450789469/risks/284138680", method: :delete, body: "destroyed")
35
+ v = ShopifyAPI::OrderRisk.find(284138680, params: { order_id: 450789469 })
36
+ assert(v.destroy)
36
37
  end
37
38
 
38
39
  def test_update_order_risk
39
- fake "orders/450789469/risks/284138680", :method => :get, :body => load_fixture('order_risk')
40
- fake "orders/450789469/risks/284138680", :method => :put, :body => load_fixture('order_risk')
40
+ fake("orders/450789469/risks/284138680", method: :get, body: load_fixture('order_risk'))
41
+ fake("orders/450789469/risks/284138680", method: :put, body: load_fixture('order_risk'))
41
42
 
42
- v = ShopifyAPI::OrderRisk.find(284138680, :params => {:order_id => 450789469})
43
+ v = ShopifyAPI::OrderRisk.find(284138680, params: { order_id: 450789469 })
43
44
  v.position = 3
44
45
  v.save
45
46
  end
data/test/order_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
  require 'fulfillment_order_test_helper'
3
4
 
@@ -5,65 +6,79 @@ class OrderTest < Test::Unit::TestCase
5
6
  include FulfillmentOrderTestHelper
6
7
 
7
8
  test "create should create order" do
8
- fake 'orders', :method => :post, :status => 201, :body => load_fixture('order')
9
- order = ShopifyAPI::Order.create(line_items: [{quantity:1, variant_id:39072856}], financial_status:"authorized")
10
- assert_equal 39072856, order.line_items.first.variant_id
9
+ fake('orders', method: :post, status: 201, body: load_fixture('order'))
10
+ order = ShopifyAPI::Order.create(
11
+ line_items: [{ quantity: 1, variant_id: 39072856 }],
12
+ financial_status: "authorized"
13
+ )
14
+ assert_equal(39072856, order.line_items.first.variant_id)
11
15
  end
12
16
 
13
17
  test "create should create an order with custom properties" do
14
- props = [{ :"By default may label with \"Roasted for " => { :"Your First Name" => { :"\". If you want something specific on the label, enter it here:" => "" }}}]
15
- fake 'orders', :method => :post, :status => 201, :body => load_fixture('order_with_properties')
16
- order = ShopifyAPI::Order.create(line_items: [{quantity:1, variant_id:39072856, properties:props}], financial_status:"authorized")
17
- assert_equal 39072856, order.line_items.first.variant_id
18
+ props = [
19
+ {
20
+ "By default may label with \"Roasted for ": {
21
+ "Your First Name": {
22
+ "\". If you want something specific on the label, enter it here:": "",
23
+ },
24
+ },
25
+ },
26
+ ]
27
+ fake('orders', method: :post, status: 201, body: load_fixture('order_with_properties'))
28
+ order = ShopifyAPI::Order.create(
29
+ line_items: [{ quantity: 1, variant_id: 39072856, properties: props }],
30
+ financial_status: "authorized"
31
+ )
32
+ assert_equal(39072856, order.line_items.first.variant_id)
18
33
  end
19
34
 
20
35
  test "get should get an order" do
21
- fake 'orders/450789469', :method => :get, :status => 200, :body => load_fixture('order')
36
+ fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
22
37
  order = ShopifyAPI::Order.find(450789469)
23
- assert_equal 450789469, order.id
38
+ assert_equal(450789469, order.id)
24
39
  end
25
40
 
26
41
  test "get should get an order with custom properties" do
27
- fake 'orders/450789469', :method => :get, :status => 200, :body => load_fixture('order_with_properties')
42
+ fake('orders/450789469', method: :get, status: 200, body: load_fixture('order_with_properties'))
28
43
  order = ShopifyAPI::Order.find(450789469)
29
- assert_equal 450789469, order.id
44
+ assert_equal(450789469, order.id)
30
45
  end
31
46
 
32
47
  test "get all should get all orders" do
33
- fake 'orders', :method => :get, :status => 200, :body => load_fixture('orders')
48
+ fake('orders', method: :get, status: 200, body: load_fixture('orders'))
34
49
  order = ShopifyAPI::Order.all
35
- assert_equal 450789469, order.first.id
50
+ assert_equal(450789469, order.first.id)
36
51
  end
37
52
 
38
53
  test "add note should add a note to order" do
39
- fake 'orders/450789469', :method => :get, :status => 200, :body => load_fixture('order')
54
+ fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
40
55
  order = ShopifyAPI::Order.find(450789469)
41
56
  order.note = "Test note"
42
- fake 'orders/450789469', :method => :put, :status => 200, :body => load_fixture('order')
57
+ fake('orders/450789469', method: :put, status: 200, body: load_fixture('order'))
43
58
  order.save
44
- assert_equal "Test note", order.note
59
+ assert_equal("Test note", order.note)
45
60
  end
46
61
 
47
62
  test "delete should delete an order" do
48
- fake 'orders/450789469', :method => :get, :status => 200, :body => load_fixture('order')
49
- fake 'orders/450789469', :method => :delete, :body => 'destroyed'
63
+ fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
64
+ fake('orders/450789469', method: :delete, body: 'destroyed')
50
65
  order = ShopifyAPI::Order.find(450789469)
51
- assert order.destroy
66
+ assert(order.destroy)
52
67
  end
53
68
 
54
69
  test "cancel an order with params" do
55
- fake 'orders/450789469', :method => :get, :status => 200, :body => load_fixture('order')
56
- fake 'orders/450789469/cancel', :method => :post, :body => load_fixture('order')
70
+ fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
71
+ fake('orders/450789469/cancel', method: :post, body: load_fixture('order'))
57
72
  order = ShopifyAPI::Order.find(450789469)
58
73
  order.cancel(email: false, restock: true)
59
- assert_request_body({'email' => false, 'restock' => true}.to_json)
74
+ assert_request_body({ 'email' => false, 'restock' => true }.to_json)
60
75
  end
61
76
 
62
77
  test "capture an order with currency param" do
63
- fake 'orders/450789469', body: load_fixture('order')
78
+ fake('orders/450789469', body: load_fixture('order'))
64
79
  order = ShopifyAPI::Order.find(450789469)
65
80
 
66
- fake 'orders/450789469/transactions', method: :post, status: 201, body: load_fixture('transaction')
81
+ fake('orders/450789469/transactions', method: :post, status: 201, body: load_fixture('transaction'))
67
82
  order.capture(100.00, currency: 'CAD')
68
83
 
69
84
  assert_request_body({
@@ -98,10 +113,10 @@ class OrderTest < Test::Unit::TestCase
98
113
  )
99
114
  fulfillment_orders = order.fulfillment_orders
100
115
 
101
- assert_equal [519788021, 519788022], fulfillment_orders.map(&:id).sort
116
+ assert_equal([519788021, 519788022], fulfillment_orders.map(&:id).sort)
102
117
  fulfillment_orders.each do |fulfillment_order|
103
- assert fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
104
- assert_equal 450789469, fulfillment_order.order_id
118
+ assert(fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder))
119
+ assert_equal(450789469, fulfillment_order.order_id)
105
120
  end
106
121
  end
107
122
 
@@ -118,7 +133,7 @@ class OrderTest < Test::Unit::TestCase
118
133
  )
119
134
  order = ShopifyAPI::Order.find(450789469)
120
135
 
121
- assert_raises NotImplementedError do
136
+ assert_raises(NotImplementedError) do
122
137
  order.fulfillment_orders
123
138
  end
124
139
  end