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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE.md +36 -0
- data/.github/workflows/build.yml +41 -0
- data/.gitignore +0 -1
- data/.rubocop.yml +23 -3
- data/.rubocop_todo.yml +75 -0
- data/CHANGELOG.md +15 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +151 -0
- data/Gemfile_ar51 +1 -1
- data/README.md +40 -30
- data/RELEASING +10 -6
- data/Rakefile +10 -6
- data/docs/graphql.md +1 -1
- data/docs/index.md +1 -1
- data/lib/active_resource/connection_ext.rb +1 -0
- data/lib/active_resource/detailed_log_subscriber.rb +6 -7
- data/lib/active_resource/json_errors.rb +8 -2
- data/lib/shopify_api.rb +8 -1
- data/lib/shopify_api/api_access.rb +57 -0
- data/lib/shopify_api/api_version.rb +6 -5
- data/lib/shopify_api/connection.rb +1 -0
- data/lib/shopify_api/countable.rb +3 -2
- data/lib/shopify_api/disable_prefix_check.rb +2 -2
- data/lib/shopify_api/events.rb +2 -1
- data/lib/shopify_api/graphql.rb +8 -6
- data/lib/shopify_api/limits.rb +3 -2
- data/lib/shopify_api/message_enricher.rb +11 -9
- data/lib/shopify_api/meta.rb +0 -1
- data/lib/shopify_api/metafields.rb +5 -4
- data/lib/shopify_api/pagination_link_headers.rb +4 -3
- data/lib/shopify_api/resources.rb +1 -0
- data/lib/shopify_api/resources/access_scope.rb +1 -1
- data/lib/shopify_api/resources/access_token.rb +1 -0
- data/lib/shopify_api/resources/address.rb +1 -0
- data/lib/shopify_api/resources/announcement.rb +2 -1
- data/lib/shopify_api/resources/application_charge.rb +1 -0
- data/lib/shopify_api/resources/application_credit.rb +1 -0
- data/lib/shopify_api/resources/article.rb +3 -2
- data/lib/shopify_api/resources/asset.rb +6 -5
- data/lib/shopify_api/resources/assigned_fulfillment_order.rb +1 -1
- data/lib/shopify_api/resources/base.rb +11 -6
- data/lib/shopify_api/resources/billing_address.rb +1 -0
- data/lib/shopify_api/resources/blog.rb +2 -1
- data/lib/shopify_api/resources/carrier_service.rb +1 -0
- data/lib/shopify_api/resources/cart.rb +2 -1
- data/lib/shopify_api/resources/collect.rb +1 -0
- data/lib/shopify_api/resources/collection_listing.rb +1 -0
- data/lib/shopify_api/resources/comment.rb +20 -5
- data/lib/shopify_api/resources/country.rb +1 -0
- data/lib/shopify_api/resources/custom_collection.rb +4 -3
- data/lib/shopify_api/resources/customer.rb +2 -1
- data/lib/shopify_api/resources/customer_group.rb +1 -0
- data/lib/shopify_api/resources/customer_invite.rb +1 -0
- data/lib/shopify_api/resources/customer_saved_search.rb +2 -1
- data/lib/shopify_api/resources/discount_code.rb +1 -0
- data/lib/shopify_api/resources/discount_code_batch.rb +4 -2
- data/lib/shopify_api/resources/draft_order.rb +1 -0
- data/lib/shopify_api/resources/draft_order_invoice.rb +1 -0
- data/lib/shopify_api/resources/event.rb +1 -0
- data/lib/shopify_api/resources/fulfillment.rb +12 -3
- data/lib/shopify_api/resources/fulfillment_event.rb +1 -0
- data/lib/shopify_api/resources/fulfillment_order.rb +30 -16
- data/lib/shopify_api/resources/fulfillment_order_locations_for_move.rb +1 -0
- data/lib/shopify_api/resources/fulfillment_request.rb +1 -0
- data/lib/shopify_api/resources/fulfillment_service.rb +1 -0
- data/lib/shopify_api/resources/fulfillment_v2.rb +3 -2
- data/lib/shopify_api/resources/gift_card.rb +1 -0
- data/lib/shopify_api/resources/image.rb +2 -1
- data/lib/shopify_api/resources/inventory_level.rb +2 -3
- data/lib/shopify_api/resources/line_item.rb +4 -3
- data/lib/shopify_api/resources/location.rb +1 -1
- data/lib/shopify_api/resources/marketing_event.rb +1 -0
- data/lib/shopify_api/resources/metafield.rb +1 -0
- data/lib/shopify_api/resources/note_attribute.rb +1 -0
- data/lib/shopify_api/resources/option.rb +1 -0
- data/lib/shopify_api/resources/order.rb +2 -1
- data/lib/shopify_api/resources/order_risk.rb +1 -0
- data/lib/shopify_api/resources/page.rb +1 -0
- data/lib/shopify_api/resources/payment_details.rb +1 -0
- data/lib/shopify_api/resources/policy.rb +1 -0
- data/lib/shopify_api/resources/price_rule.rb +1 -1
- data/lib/shopify_api/resources/product.rb +14 -11
- data/lib/shopify_api/resources/product_listing.rb +1 -0
- data/lib/shopify_api/resources/province.rb +1 -0
- data/lib/shopify_api/resources/receipt.rb +1 -0
- data/lib/shopify_api/resources/recurring_application_charge.rb +4 -1
- data/lib/shopify_api/resources/redirect.rb +1 -0
- data/lib/shopify_api/resources/refund.rb +2 -1
- data/lib/shopify_api/resources/report.rb +1 -0
- data/lib/shopify_api/resources/resource_feedback.rb +1 -1
- data/lib/shopify_api/resources/rule.rb +1 -0
- data/lib/shopify_api/resources/script_tag.rb +1 -0
- data/lib/shopify_api/resources/shipping_address.rb +1 -0
- data/lib/shopify_api/resources/shipping_line.rb +1 -0
- data/lib/shopify_api/resources/shipping_zone.rb +1 -0
- data/lib/shopify_api/resources/shop.rb +2 -1
- data/lib/shopify_api/resources/smart_collection.rb +2 -2
- data/lib/shopify_api/resources/storefront_access_token.rb +1 -0
- data/lib/shopify_api/resources/tax_line.rb +1 -0
- data/lib/shopify_api/resources/tax_service.rb +1 -0
- data/lib/shopify_api/resources/theme.rb +1 -0
- data/lib/shopify_api/resources/transaction.rb +1 -0
- data/lib/shopify_api/resources/usage_charge.rb +1 -0
- data/lib/shopify_api/resources/user.rb +1 -0
- data/lib/shopify_api/resources/variant.rb +16 -18
- data/lib/shopify_api/resources/webhook.rb +1 -0
- data/lib/shopify_api/session.rb +20 -12
- data/lib/shopify_api/version.rb +2 -1
- data/lib/verify_docs.rb +1 -0
- data/service.yml +1 -1
- data/shopify_api.gemspec +10 -4
- data/test/access_token_test.rb +6 -5
- data/test/active_resource/json_errors_test.rb +6 -6
- data/test/api_access_test.rb +153 -0
- data/test/api_version_test.rb +3 -3
- data/test/application_charge_test.rb +30 -27
- data/test/application_credit_test.rb +10 -9
- data/test/article_test.rb +34 -35
- data/test/asset_test.rb +14 -6
- data/test/assigned_fulfillment_order_test.rb +5 -4
- data/test/base_test.rb +55 -56
- data/test/blog_test.rb +4 -3
- data/test/carrier_service_test.rb +7 -6
- data/test/cart_test.rb +2 -1
- data/test/collect_test.rb +4 -3
- data/test/collection_listing_test.rb +21 -16
- data/test/collection_publication_test.rb +8 -8
- data/test/collection_test.rb +20 -19
- data/test/countable_test.rb +3 -2
- data/test/currency_test.rb +5 -5
- data/test/custom_collection_test.rb +4 -3
- data/test/customer_saved_search_test.rb +18 -8
- data/test/customer_test.rb +22 -14
- data/test/detailed_log_subscriber_test.rb +15 -11
- data/test/discount_code_batch_test.rb +11 -10
- data/test/discount_code_test.rb +21 -15
- data/test/draft_order_test.rb +68 -52
- data/test/fixtures/assigned_fulfillment_orders.json +2 -0
- data/test/fixtures/fulfillment_order.json +1 -0
- data/test/fixtures/fulfillment_orders.json +2 -0
- data/test/fulfillment_event_test.rb +31 -26
- data/test/fulfillment_order_test.rb +215 -147
- data/test/fulfillment_order_test_helper.rb +1 -0
- data/test/fulfillment_request_test.rb +10 -8
- data/test/fulfillment_service_test.rb +13 -12
- data/test/fulfillment_test.rb +81 -66
- data/test/fulfillment_v2_test.rb +16 -12
- data/test/gift_card_test.rb +6 -4
- data/test/graphql_test.rb +27 -27
- data/test/image_test.rb +19 -17
- data/test/inventory_level_test.rb +24 -15
- data/test/lib/webmock_extensions/last_request.rb +1 -1
- data/test/limits_test.rb +2 -1
- data/test/location_test.rb +2 -1
- data/test/marketing_event_test.rb +20 -20
- data/test/message_enricher_test.rb +6 -6
- data/test/meta_test.rb +7 -9
- data/test/metafield_test.rb +30 -20
- data/test/order_risk_test.rb +17 -16
- data/test/order_test.rb +43 -28
- data/test/pagination_test.rb +89 -56
- data/test/policy_test.rb +6 -5
- data/test/price_rule_test.rb +20 -15
- data/test/product_listing_test.rb +20 -20
- data/test/product_publication_test.rb +8 -8
- data/test/product_test.rb +44 -32
- data/test/publication_test.rb +3 -3
- data/test/recurring_application_charge_test.rb +104 -42
- data/test/redirect_test.rb +4 -3
- data/test/refund_test.rb +22 -17
- data/test/report_test.rb +12 -10
- data/test/resource_feedback_test.rb +14 -13
- data/test/script_tag_test.rb +10 -9
- data/test/session_test.rb +74 -46
- data/test/shipping_zone_test.rb +4 -3
- data/test/shop_test.rb +47 -33
- data/test/smart_collection_test.rb +5 -4
- data/test/storefront_access_token_test.rb +13 -15
- data/test/tax_service_test.rb +7 -4
- data/test/tender_transaction_test.rb +3 -3
- data/test/test_helper.rb +13 -11
- data/test/transaction_test.rb +4 -3
- data/test/usage_charge_test.rb +12 -8
- data/test/user_test.rb +4 -3
- data/test/variant_test.rb +23 -54
- data/test/webhook_test.rb +10 -7
- metadata +14 -9
- data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +0 -1027
- data/.travis.yml +0 -28
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
|
|
9
|
-
order = ShopifyAPI::Order.create(
|
|
10
|
-
|
|
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 = [
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
36
|
+
fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
|
|
22
37
|
order = ShopifyAPI::Order.find(450789469)
|
|
23
|
-
assert_equal
|
|
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
|
|
42
|
+
fake('orders/450789469', method: :get, status: 200, body: load_fixture('order_with_properties'))
|
|
28
43
|
order = ShopifyAPI::Order.find(450789469)
|
|
29
|
-
assert_equal
|
|
44
|
+
assert_equal(450789469, order.id)
|
|
30
45
|
end
|
|
31
46
|
|
|
32
47
|
test "get all should get all orders" do
|
|
33
|
-
fake
|
|
48
|
+
fake('orders', method: :get, status: 200, body: load_fixture('orders'))
|
|
34
49
|
order = ShopifyAPI::Order.all
|
|
35
|
-
assert_equal
|
|
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
|
|
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
|
|
57
|
+
fake('orders/450789469', method: :put, status: 200, body: load_fixture('order'))
|
|
43
58
|
order.save
|
|
44
|
-
assert_equal
|
|
59
|
+
assert_equal("Test note", order.note)
|
|
45
60
|
end
|
|
46
61
|
|
|
47
62
|
test "delete should delete an order" do
|
|
48
|
-
fake
|
|
49
|
-
fake
|
|
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
|
|
66
|
+
assert(order.destroy)
|
|
52
67
|
end
|
|
53
68
|
|
|
54
69
|
test "cancel an order with params" do
|
|
55
|
-
fake
|
|
56
|
-
fake
|
|
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
|
|
78
|
+
fake('orders/450789469', body: load_fixture('order'))
|
|
64
79
|
order = ShopifyAPI::Order.find(450789469)
|
|
65
80
|
|
|
66
|
-
fake
|
|
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
|
|
116
|
+
assert_equal([519788021, 519788022], fulfillment_orders.map(&:id).sort)
|
|
102
117
|
fulfillment_orders.each do |fulfillment_order|
|
|
103
|
-
assert
|
|
104
|
-
assert_equal
|
|
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
|
|
136
|
+
assert_raises(NotImplementedError) do
|
|
122
137
|
order.fulfillment_orders
|
|
123
138
|
end
|
|
124
139
|
end
|
data/test/pagination_test.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
class PaginationTest < Test::Unit::TestCase
|
|
@@ -9,14 +10,16 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
9
10
|
@next_page_info = "eyJkaXJlY3Rpb24iOiJuZXh0IiwibGFzdF9pZCI6NDQwMDg5NDIzLCJsYXN0X3ZhbHVlIjoiNDQwMDg5NDIzIn0%3D"
|
|
10
11
|
@previous_page_info = "eyJsYXN0X2lkIjoxMDg4MjgzMDksImxhc3RfdmFsdWUiOiIxMDg4MjgzMDkiLCJkaXJlY3Rpb24iOiJuZXh0In0%3D"
|
|
11
12
|
|
|
12
|
-
@next_link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/
|
|
13
|
-
|
|
13
|
+
@next_link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
14
|
+
"orders.json?page_info=#{@next_page_info}>; rel=\"next\""
|
|
15
|
+
@previous_link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
16
|
+
"orders.json?page_info=#{@previous_page_info}>; rel=\"previous\""
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
test "navigates using next and previous link headers with no original params" do
|
|
17
|
-
link_header ="#{@previous_link_header}, #{@next_link_header}"
|
|
20
|
+
link_header = "#{@previous_link_header}, #{@next_link_header}"
|
|
18
21
|
|
|
19
|
-
fake
|
|
22
|
+
fake('orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'), link: link_header)
|
|
20
23
|
orders = ShopifyAPI::Order.all
|
|
21
24
|
|
|
22
25
|
fake(
|
|
@@ -27,7 +30,7 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
27
30
|
body: load_fixture('orders')
|
|
28
31
|
)
|
|
29
32
|
next_page = orders.fetch_next_page
|
|
30
|
-
assert_equal
|
|
33
|
+
assert_equal(450789469, next_page.first.id)
|
|
31
34
|
|
|
32
35
|
fake(
|
|
33
36
|
'orders',
|
|
@@ -38,12 +41,13 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
38
41
|
)
|
|
39
42
|
|
|
40
43
|
previous_page = orders.fetch_previous_page
|
|
41
|
-
assert_equal
|
|
44
|
+
assert_equal(1122334455, previous_page.first.id)
|
|
42
45
|
end
|
|
43
46
|
|
|
44
47
|
test "uses all passed in querystring parameters" do
|
|
45
48
|
params = "page_info=#{@next_page_info}&limit=50&fields=#{CGI.escape('id,created_at')}"
|
|
46
|
-
@next_link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/
|
|
49
|
+
@next_link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
50
|
+
"orders.json?#{params}>; rel=\"next\""
|
|
47
51
|
fake(
|
|
48
52
|
'orders',
|
|
49
53
|
method: :get,
|
|
@@ -60,100 +64,127 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
60
64
|
method: :get,
|
|
61
65
|
status: 200,
|
|
62
66
|
api_version: @version,
|
|
63
|
-
url: "https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/
|
|
67
|
+
url: "https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
68
|
+
"orders.json?fields=id%2Ccreated_at&limit=50&page_info=#{@next_page_info}",
|
|
64
69
|
body: load_fixture('orders')
|
|
65
70
|
)
|
|
66
71
|
next_page = orders.fetch_next_page
|
|
67
|
-
assert_equal
|
|
72
|
+
assert_equal(450789469, next_page.first.id)
|
|
68
73
|
end
|
|
69
74
|
|
|
70
75
|
test "returns empty next page if just the previous page is present" do
|
|
71
|
-
fake
|
|
76
|
+
fake(
|
|
77
|
+
'orders', method: :get, status: 200, api_version: @version,
|
|
78
|
+
body: load_fixture('orders'), link: @previous_link_header
|
|
79
|
+
)
|
|
72
80
|
orders = ShopifyAPI::Order.all
|
|
73
81
|
|
|
74
82
|
next_page = orders.fetch_next_page
|
|
75
|
-
assert_empty
|
|
83
|
+
assert_empty(next_page)
|
|
76
84
|
end
|
|
77
85
|
|
|
78
86
|
test "returns an empty previous page if just the next page is present" do
|
|
79
|
-
fake
|
|
87
|
+
fake(
|
|
88
|
+
'orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'), link: @next_link_header
|
|
89
|
+
)
|
|
80
90
|
orders = ShopifyAPI::Order.all
|
|
81
91
|
|
|
82
92
|
next_page = orders.fetch_previous_page
|
|
83
|
-
assert_empty
|
|
93
|
+
assert_empty(next_page)
|
|
84
94
|
end
|
|
85
95
|
|
|
86
96
|
test "#next_page? returns true if next page is present" do
|
|
87
|
-
fake
|
|
97
|
+
fake(
|
|
98
|
+
'orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'), link: @next_link_header
|
|
99
|
+
)
|
|
88
100
|
orders = ShopifyAPI::Order.all
|
|
89
101
|
|
|
90
|
-
assert
|
|
102
|
+
assert(orders.next_page?)
|
|
91
103
|
end
|
|
92
104
|
|
|
93
105
|
test "#next_page? returns false if next page is not present" do
|
|
94
|
-
fake
|
|
106
|
+
fake(
|
|
107
|
+
'orders', method: :get, status: 200, api_version: @version,
|
|
108
|
+
body: load_fixture('orders'), link: @previous_link_header
|
|
109
|
+
)
|
|
95
110
|
orders = ShopifyAPI::Order.all
|
|
96
111
|
|
|
97
|
-
refute
|
|
112
|
+
refute(orders.next_page?)
|
|
98
113
|
end
|
|
99
114
|
|
|
100
115
|
test "#next_page_info returns next_page_info if next page is present" do
|
|
101
|
-
fake
|
|
116
|
+
fake(
|
|
117
|
+
'orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'), link: @next_link_header
|
|
118
|
+
)
|
|
102
119
|
orders = ShopifyAPI::Order.all
|
|
103
120
|
|
|
104
|
-
assert_equal
|
|
121
|
+
assert_equal(@next_page_info, orders.next_page_info)
|
|
105
122
|
end
|
|
106
123
|
|
|
107
124
|
test "#next_page_info returns nil if next page is not present" do
|
|
108
|
-
fake
|
|
125
|
+
fake(
|
|
126
|
+
'orders', method: :get, status: 200, api_version: @version,
|
|
127
|
+
body: load_fixture('orders'), link: @previous_link_header
|
|
128
|
+
)
|
|
109
129
|
orders = ShopifyAPI::Order.all
|
|
110
130
|
|
|
111
|
-
assert_nil
|
|
131
|
+
assert_nil(orders.next_page_info)
|
|
112
132
|
end
|
|
113
133
|
|
|
114
134
|
test "#previous_page? returns true if previous page is present" do
|
|
115
|
-
fake
|
|
135
|
+
fake(
|
|
136
|
+
'orders', method: :get, status: 200, api_version: @version,
|
|
137
|
+
body: load_fixture('orders'), link: @previous_link_header
|
|
138
|
+
)
|
|
116
139
|
orders = ShopifyAPI::Order.all
|
|
117
140
|
|
|
118
|
-
assert
|
|
141
|
+
assert(orders.previous_page?)
|
|
119
142
|
end
|
|
120
143
|
|
|
121
144
|
test "#previous_page? returns false if next page is not present" do
|
|
122
|
-
fake
|
|
145
|
+
fake(
|
|
146
|
+
'orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'), link: @next_link_header
|
|
147
|
+
)
|
|
123
148
|
orders = ShopifyAPI::Order.all
|
|
124
149
|
|
|
125
|
-
refute
|
|
150
|
+
refute(orders.previous_page?)
|
|
126
151
|
end
|
|
127
152
|
|
|
128
153
|
test "#previous_page_info returns previous_page_info if next page is present" do
|
|
129
|
-
fake
|
|
154
|
+
fake(
|
|
155
|
+
'orders', method: :get, status: 200, api_version: @version,
|
|
156
|
+
body: load_fixture('orders'), link: @previous_link_header
|
|
157
|
+
)
|
|
130
158
|
orders = ShopifyAPI::Order.all
|
|
131
159
|
|
|
132
|
-
assert_equal
|
|
160
|
+
assert_equal(@previous_page_info, orders.previous_page_info)
|
|
133
161
|
end
|
|
134
162
|
|
|
135
163
|
test "#previous_page_info returns nil if next page is not present" do
|
|
136
|
-
fake
|
|
164
|
+
fake(
|
|
165
|
+
'orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'), link: @next_link_header
|
|
166
|
+
)
|
|
137
167
|
orders = ShopifyAPI::Order.all
|
|
138
168
|
|
|
139
|
-
assert_nil
|
|
169
|
+
assert_nil(orders.previous_page_info)
|
|
140
170
|
end
|
|
141
171
|
|
|
142
172
|
test "pagination handles no link headers" do
|
|
143
|
-
fake
|
|
173
|
+
fake('orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'))
|
|
144
174
|
orders = ShopifyAPI::Order.all
|
|
145
175
|
|
|
146
|
-
refute
|
|
147
|
-
refute
|
|
148
|
-
assert_empty
|
|
149
|
-
assert_empty
|
|
176
|
+
refute(orders.next_page?)
|
|
177
|
+
refute(orders.previous_page?)
|
|
178
|
+
assert_empty(orders.fetch_next_page)
|
|
179
|
+
assert_empty(orders.fetch_previous_page)
|
|
150
180
|
end
|
|
151
181
|
|
|
152
182
|
test "raises on invalid pagination links" do
|
|
153
|
-
link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/
|
|
154
|
-
|
|
183
|
+
link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
184
|
+
"orders.json?page_info=#{@next_page_info}>;"
|
|
185
|
+
fake('orders', method: :get, status: 200, api_version: @version, body: load_fixture('orders'), link: link_header)
|
|
155
186
|
|
|
156
|
-
assert_raises
|
|
187
|
+
assert_raises(ShopifyAPI::InvalidPaginationLinksError) do
|
|
157
188
|
ShopifyAPI::Order.all
|
|
158
189
|
end
|
|
159
190
|
end
|
|
@@ -162,10 +193,10 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
162
193
|
version = ShopifyAPI::ApiVersion.find_version('2019-04')
|
|
163
194
|
ShopifyAPI::Base.api_version = version.to_s
|
|
164
195
|
|
|
165
|
-
fake
|
|
196
|
+
fake('orders', method: :get, status: 200, api_version: version, body: load_fixture('orders'))
|
|
166
197
|
orders = ShopifyAPI::Order.all
|
|
167
198
|
|
|
168
|
-
assert_raises
|
|
199
|
+
assert_raises(NotImplementedError) do
|
|
169
200
|
orders.fetch_next_page
|
|
170
201
|
end
|
|
171
202
|
end
|
|
@@ -174,10 +205,10 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
174
205
|
version = ShopifyAPI::ApiVersion.find_version('2019-07')
|
|
175
206
|
ShopifyAPI::Base.api_version = version.to_s
|
|
176
207
|
|
|
177
|
-
fake
|
|
208
|
+
fake('orders', method: :get, status: 200, api_version: version, body: load_fixture('orders'))
|
|
178
209
|
orders = ShopifyAPI::Order.all
|
|
179
210
|
|
|
180
|
-
assert_raises
|
|
211
|
+
assert_raises(NotImplementedError) do
|
|
181
212
|
orders.fetch_next_page
|
|
182
213
|
end
|
|
183
214
|
end
|
|
@@ -186,21 +217,22 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
186
217
|
version = ShopifyAPI::ApiVersion.find_version('2019-07')
|
|
187
218
|
ShopifyAPI::Base.api_version = version.to_s
|
|
188
219
|
|
|
189
|
-
fake
|
|
220
|
+
fake('events', method: :get, status: 200, api_version: version, body: load_fixture('events'))
|
|
190
221
|
events = ShopifyAPI::Event.all
|
|
191
222
|
|
|
192
|
-
assert_empty
|
|
193
|
-
assert_empty
|
|
223
|
+
assert_empty(events.fetch_next_page)
|
|
224
|
+
assert_empty(events.fetch_previous_page)
|
|
194
225
|
end
|
|
195
226
|
|
|
196
227
|
test "does not raise on the unstable version" do
|
|
197
228
|
version = ShopifyAPI::ApiVersion.find_version('unstable')
|
|
198
229
|
ShopifyAPI::Base.api_version = version.to_s
|
|
199
|
-
@next_link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/unstable/
|
|
230
|
+
@next_link_header = "<https://this-is-my-test-shop.myshopify.com/admin/api/unstable/" \
|
|
231
|
+
"orders.json?page_info=#{@next_page_info}>; rel=\"next\""
|
|
200
232
|
|
|
201
|
-
link_header ="#{@previous_link_header}, #{@next_link_header}"
|
|
233
|
+
link_header = "#{@previous_link_header}, #{@next_link_header}"
|
|
202
234
|
|
|
203
|
-
fake
|
|
235
|
+
fake('orders', method: :get, status: 200, api_version: version, body: load_fixture('orders'), link: link_header)
|
|
204
236
|
orders = ShopifyAPI::Order.all
|
|
205
237
|
|
|
206
238
|
fake(
|
|
@@ -212,7 +244,7 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
212
244
|
)
|
|
213
245
|
assert_nothing_raised do
|
|
214
246
|
next_page = orders.fetch_next_page
|
|
215
|
-
assert_equal
|
|
247
|
+
assert_equal(450789469, next_page.first.id)
|
|
216
248
|
end
|
|
217
249
|
end
|
|
218
250
|
|
|
@@ -225,9 +257,10 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
225
257
|
api_version: @version,
|
|
226
258
|
url: "https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/orders.json?limit=5",
|
|
227
259
|
body: load_fixture('orders'),
|
|
228
|
-
link: "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/
|
|
260
|
+
link: "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
261
|
+
"orders.json?#{first_request_params}>; rel=\"next\""
|
|
229
262
|
)
|
|
230
|
-
|
|
263
|
+
ShopifyAPI::Order.where(limit: 5)
|
|
231
264
|
|
|
232
265
|
second_request_params = "page_info=#{@next_page_info}&limit=5"
|
|
233
266
|
fake(
|
|
@@ -237,21 +270,21 @@ class PaginationTest < Test::Unit::TestCase
|
|
|
237
270
|
api_version: @version,
|
|
238
271
|
url: "https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/orders.json?limit=10",
|
|
239
272
|
body: load_fixture('orders'),
|
|
240
|
-
link: "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/
|
|
273
|
+
link: "<https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
274
|
+
"orders.json?#{second_request_params}>; rel=\"next\""
|
|
241
275
|
)
|
|
242
|
-
|
|
243
|
-
orders2 = ShopifyAPI::Order.where(limit: 10)
|
|
276
|
+
orders = ShopifyAPI::Order.where(limit: 10)
|
|
244
277
|
|
|
245
278
|
fake(
|
|
246
279
|
'orders',
|
|
247
280
|
method: :get,
|
|
248
281
|
status: 200,
|
|
249
282
|
api_version: @version,
|
|
250
|
-
url: "https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/
|
|
283
|
+
url: "https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/" \
|
|
284
|
+
"orders.json?limit=5&page_info=#{@next_page_info}",
|
|
251
285
|
body: load_fixture('orders')
|
|
252
286
|
)
|
|
253
287
|
next_page = orders.fetch_next_page
|
|
254
|
-
assert_equal
|
|
288
|
+
assert_equal(450789469, next_page.first.id)
|
|
255
289
|
end
|
|
256
|
-
|
|
257
290
|
end
|
data/test/policy_test.rb
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
class PolicyTest < Test::Unit::TestCase
|
|
4
5
|
def setup
|
|
5
6
|
super
|
|
6
|
-
fake
|
|
7
|
+
fake('shop')
|
|
7
8
|
end
|
|
8
9
|
|
|
9
10
|
def test_getting_the_list_of_policies
|
|
10
|
-
fake
|
|
11
|
+
fake('policies')
|
|
11
12
|
|
|
12
13
|
policies = ShopifyAPI::Policy.all
|
|
13
|
-
assert_equal
|
|
14
|
+
assert_equal(1, policies.length)
|
|
14
15
|
|
|
15
16
|
policy = policies.first
|
|
16
|
-
assert_equal
|
|
17
|
-
assert_equal
|
|
17
|
+
assert_equal('Privacy Policy', policy.title)
|
|
18
|
+
assert_equal('Your privacy is important to us', policy.body)
|
|
18
19
|
end
|
|
19
20
|
end
|