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