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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE.md +36 -0
- data/.github/workflows/build.yml +41 -0
- data/.gitignore +2 -1
- data/.rubocop.yml +23 -3
- data/.rubocop_todo.yml +75 -0
- data/CHANGELOG.md +43 -0
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +5 -0
- data/Gemfile.lock +151 -0
- data/Gemfile_ar51 +1 -1
- data/README.md +47 -31
- data/RELEASING +10 -6
- data/Rakefile +16 -5
- data/SECURITY.md +59 -0
- data/docs/_config.yml +1 -0
- data/docs/_includes/footer.html +28 -0
- data/docs/_includes/head.html +28 -0
- data/docs/_layouts/index.html +57 -0
- data/docs/graphql.md +47 -2
- data/docs/index.md +639 -0
- 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 +28 -8
- 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 +5 -4
- 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 +12 -8
- 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 +34 -0
- 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 +3 -4
- 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 +27 -3
- 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 +4 -8
- 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 +35 -0
- data/lib/shopify_api/resources/webhook.rb +1 -0
- data/lib/shopify_api/session.rb +43 -14
- data/lib/shopify_api/version.rb +2 -1
- data/lib/verify_docs.rb +8 -0
- data/service.yml +1 -1
- data/shopify_api.gemspec +13 -6
- 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 +64 -49
- 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 +41 -0
- 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/discount_code_batch.json +14 -0
- data/test/fixtures/discount_code_batch_discount_codes.json +21 -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 +55 -23
- 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 +71 -20
- 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 +234 -43
- data/test/shipping_zone_test.rb +4 -3
- data/test/shop_test.rb +47 -33
- data/test/smart_collection_test.rb +5 -29
- 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 +14 -12
- 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 +50 -23
- data/test/webhook_test.rb +10 -7
- metadata +30 -15
- data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +0 -1027
- data/.travis.yml +0 -23
- data/bin/shopify +0 -3
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
|