shopify_api 4.8.0 → 4.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bcb1fe2d6a1c1b42c80381495c978e6b2fb0e911
4
- data.tar.gz: 5c9f07855c85365f9784c06a53f11e0c6b706805
3
+ metadata.gz: fff80db1065be0d32a1762d81992769fc9cde8b6
4
+ data.tar.gz: 2a00b35496dcffdb72d0788c5b4bd18b90bee947
5
5
  SHA512:
6
- metadata.gz: 7526001ec0f3edea9b9d43f7ec213e066d9c8fe305d0dceae1dec74122fee38f32cc3faf3a3f70f2a486d8983c2381e4a7df0e805e86832e3228092933e0e06a
7
- data.tar.gz: 2ac04850be172a6a06ef670a16720324c2e8d572cfc9d4d140f9b0372c0a2509c6794a55fe68d6ebc36fda463d9d026def2f188384eb9f01d2b0ef8ee305142c
6
+ metadata.gz: 4d53f0ae3e229f88800e277b83c4434228b1118f39627794b62868b37a4236deb626c295ee01557e10867b7070dd227a0fc1d1429201ecff203aabb2cb80ae24
7
+ data.tar.gz: 259547ebef03ae4f739ea2e7489ce0f01b8d03726037d8648c69321d8f640847872ee7b8ca27ed6c0c27ff7e4f529a04fdf35947a7b7a927a06aa05d9be5fa37
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ == Version 4.9.0
2
+
3
+ * Added `ShopifyAPI::PriceRule`
4
+ * Added `ShopifyAPI::DiscountCode`
5
+
1
6
  == Version 4.8.0
2
7
 
3
8
  * Added `add_engagements` to `ShopifyAPI::MarketingEvent`
data/README.md CHANGED
@@ -59,7 +59,7 @@ ShopifyAPI uses ActiveResource to communicate with the REST web service. ActiveR
59
59
  2. For a private App you just need to set the base site url as follows:
60
60
 
61
61
  ```ruby
62
- shop_url = "https://#{API_KEY}:#{PASSWORD}@SHOP_NAME.myshopify.com/admin"
62
+ shop_url = "https://#{API_KEY}:#{PASSWORD}@#{SHOP_NAME}.myshopify.com/admin"
63
63
  ShopifyAPI::Base.site = shop_url
64
64
  ```
65
65
 
@@ -246,7 +246,7 @@ rake install
246
246
 
247
247
  ## Additional Resources
248
248
 
249
- API Docs: http://docs.shopify.com/api
249
+ API Docs: https://help.shopify.com/api/reference
250
250
 
251
251
  Ask questions on the forums: http://ecommerce.shopify.com/c/shopify-apis-and-technology
252
252
 
@@ -0,0 +1,9 @@
1
+ module ShopifyAPI
2
+ class DiscountCode < Base
3
+ init_prefix :price_rule
4
+
5
+ def price_rule_id
6
+ @prefix_options[:price_rule_id]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module ShopifyAPI
2
+ class PriceRule < Base
3
+
4
+ def discount_codes
5
+ DiscountCode.find(:all, params: { price_rule_id: id })
6
+ end
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module ShopifyAPI
2
- VERSION = "4.8.0"
2
+ VERSION = "4.9.0"
3
3
  end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ class DiscountCodeTest < Test::Unit::TestCase
4
+ def setup
5
+ super
6
+ fake 'price_rules/102586120/discount_codes/1002091923', body: load_fixture('discount_code')
7
+
8
+ @discount_code = ShopifyAPI::DiscountCode.find(1002091923, params: {price_rule_id: 102586120})
9
+ end
10
+
11
+ def test_get_discount_code
12
+ fake 'price_rules/102586120/discount_codes', method: :get, status: 200, body: load_fixture('discount_code')
13
+ discount_code = ShopifyAPI::DiscountCode.find 1002091923, params: { price_rule_id: 102586120 }
14
+
15
+ assert_equal 1002091923, discount_code.id
16
+ end
17
+
18
+ def test_get_all_discount_codes
19
+ fake 'price_rules/102586120/discount_codes', method: :get, status: 200, body: load_fixture('discount_codes')
20
+ discount_codes = ShopifyAPI::DiscountCode.all params: { price_rule_id: 102586120 }
21
+
22
+ assert_equal 1, discount_codes.length
23
+ assert_equal 1002091923, discount_codes.first.id
24
+ end
25
+
26
+ def test_create_discount_code
27
+ fake 'price_rules/102586120/discount_codes', method: :post, status: 201, body: load_fixture('discount_code')
28
+ discount_code = ShopifyAPI::DiscountCode.new
29
+ discount_code.prefix_options[:price_rule_id] = 102586120
30
+ discount_code.code = "SUMMERSALE10"
31
+ discount_code.save
32
+
33
+ assert_equal '{"discount_code":{"code":"SUMMERSALE10"}}', FakeWeb.last_request.body
34
+ end
35
+
36
+ def test_update_discount_code
37
+ discount_code_response = ActiveSupport::JSON.decode(load_fixture('discount_code'))
38
+ discount_code_response['discount_code']['code'] = "WINTERSALE50"
39
+ @discount_code.code = "WINTERSALE50"
40
+
41
+ fake 'price_rules/102586120/discount_codes/1002091923', method: :put, status: 200, body: ActiveSupport::JSON.encode(discount_code_response)
42
+
43
+ @discount_code.save
44
+
45
+ assert_equal discount_code_response['discount_code']['code'], @discount_code.code
46
+ end
47
+
48
+ def test_delete_discount_code
49
+ fake 'price_rules/102586120/discount_codes/1002091923', method: :delete, body: 'destroyed'
50
+
51
+ assert @discount_code.destroy
52
+ end
53
+ end
@@ -0,0 +1,10 @@
1
+ {
2
+ "discount_code": {
3
+ "id": 1002091923,
4
+ "price_rule_id": 102586120,
5
+ "code": "SUMMERSALE10",
6
+ "usage_count": 5,
7
+ "created_at": "2017-03-09T19:22:49Z",
8
+ "updated_at": "2017-03-09T19:22:49Z"
9
+ }
10
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "discount_codes": [
3
+ {
4
+ "id": 1002091923,
5
+ "price_rule_id": 102586120,
6
+ "code": "SUMMERSALE10",
7
+ "usage_count": 5,
8
+ "created_at": "2017-03-09T19:22:49Z",
9
+ "updated_at": "2017-03-09T19:22:49Z"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "price_rule": {
3
+ "id": 102586120,
4
+ "target_type": "line_item",
5
+ "target_selection": "entitled",
6
+ "allocation_method": "across",
7
+ "value_type": "fixed_amount",
8
+ "value": -10.0,
9
+ "customer_selection": "all",
10
+ "once_per_customer": false,
11
+ "usage_limit": 10,
12
+ "created_at": "2016-09-11T09:00:00-04:00",
13
+ "updated_at": "2016-09-11T09:30:00-04:00",
14
+ "starts_at": "2016-09-12T0:00:00-04:00",
15
+ "ends_at": "2016-09-12T00:00:00-04:00",
16
+ "entitled_product_ids": [22,278,293],
17
+ "entitled_variant_ids": [],
18
+ "entitled_collection_ids": [],
19
+ "entitled_country_ids": [],
20
+ "prerequisite_subtotal_range": {
21
+ "greater_than_or_equal_to": 10
22
+ },
23
+ "prerequisite_shipping_price_range": {},
24
+ "prerequisite_saved_search_ids": [34,88],
25
+ "title": "Summer Sale Event 2017"
26
+ }
27
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "price_rules": [
3
+ {
4
+ "id": 102586120,
5
+ "target_type": "line_items",
6
+ "target_selection": "entitled",
7
+ "allocation_method": "each",
8
+ "value_type": "fixed_amount",
9
+ "value": -10,
10
+ "once_per_customer": false,
11
+ "usage_limit": 10,
12
+ "created_at": "2016-09-11T09:00:00-04:00",
13
+ "updated_at": "2016-09-11T09:30:00-04:00",
14
+ "starts_at": "2016-09-12T0:00:00-04:00",
15
+ "ends_at": "2016-09-12T00:00:00-04:00",
16
+ "entitled_product_ids": [22,278,293],
17
+ "entitled_variant_ids": [],
18
+ "entitled_collection_ids": [],
19
+ "entitled_country_ids": [],
20
+ "prerequisite_subtotal_range": {
21
+ "greater_than_or_equal_to": 10
22
+ },
23
+ "prerequisite_shipping_price_range": {},
24
+ "prerequisite_saved_search_ids": [34,88],
25
+ "title": "Summer Sale Event 2017"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,65 @@
1
+ require 'test_helper'
2
+
3
+ class PriceRuleTest < Test::Unit::TestCase
4
+ def setup
5
+ super
6
+ fake 'price_rules/102586120', body: load_fixture('price_rule')
7
+
8
+ @price_rule = ShopifyAPI::PriceRule.find(102586120)
9
+ end
10
+
11
+ def test_get_price_rule
12
+ fake 'price_rules/102586120', method: :get, status: 200, body: load_fixture('price_rule')
13
+ price_rule = ShopifyAPI::PriceRule.find(102586120)
14
+
15
+ assert_equal 102586120, price_rule.id
16
+ end
17
+
18
+ def test_get_all_price_rules
19
+ fake 'price_rules', method: :get, status: 200, body: load_fixture('price_rules')
20
+ price_rules = ShopifyAPI::PriceRule.all
21
+
22
+ assert_equal 1, price_rules.length
23
+ assert_equal 102586120, price_rules.first.id
24
+ end
25
+
26
+ def test_get_all_discount_codes_for_a_price_rule
27
+ fake 'price_rules/102586120/discount_codes', method: :get, status: 200, body: load_fixture('discount_codes')
28
+ price_rule = ShopifyAPI::PriceRule.find(102586120)
29
+
30
+ assert_equal "SUMMERSALE10", price_rule.discount_codes.first.code
31
+ end
32
+
33
+ def test_create_price_rule
34
+ fake 'price_rules', method: :post, status: 201, body: load_fixture('price_rule')
35
+
36
+ price_rule = ShopifyAPI::PriceRule.create(
37
+ target_type: "line_item",
38
+ allocation_method: "across",
39
+ value_type: "fixed_amount",
40
+ value: -10.0,
41
+ customer_selection: "all",
42
+ starts_at: "2017-01-19T00:00:00Z"
43
+ )
44
+
45
+ assert_equal '{"price_rule":{"target_type":"line_item","allocation_method":"across","value_type":"fixed_amount","value":-10.0,"customer_selection":"all","starts_at":"2017-01-19T00:00:00Z"}}', FakeWeb.last_request.body
46
+ assert_equal -10, price_rule.value
47
+ end
48
+
49
+ def test_update_price_rule
50
+ price_rule_response = ActiveSupport::JSON.decode(load_fixture('price_rule'))
51
+ price_rule_response['price_rule']['value'] = -50.0
52
+ @price_rule.value = -50.0
53
+ fake 'price_rules/102586120', method: :put, status: 200, body: ActiveSupport::JSON.encode(price_rule_response)
54
+
55
+ @price_rule.save
56
+
57
+ assert_equal price_rule_response['price_rule']['value'], @price_rule.value
58
+ end
59
+
60
+ def test_delete_price_rule
61
+ fake 'price_rules/102586120', method: :delete, body: 'destroyed'
62
+
63
+ assert @price_rule.destroy
64
+ end
65
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.8.0
4
+ version: 4.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-10 00:00:00.000000000 Z
11
+ date: 2017-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource
@@ -174,6 +174,7 @@ files:
174
174
  - lib/shopify_api/resources/customer_invite_message.rb
175
175
  - lib/shopify_api/resources/customer_saved_search.rb
176
176
  - lib/shopify_api/resources/discount.rb
177
+ - lib/shopify_api/resources/discount_code.rb
177
178
  - lib/shopify_api/resources/draft_order.rb
178
179
  - lib/shopify_api/resources/draft_order_invoice.rb
179
180
  - lib/shopify_api/resources/event.rb
@@ -195,6 +196,7 @@ files:
195
196
  - lib/shopify_api/resources/page.rb
196
197
  - lib/shopify_api/resources/payment_details.rb
197
198
  - lib/shopify_api/resources/policy.rb
199
+ - lib/shopify_api/resources/price_rule.rb
198
200
  - lib/shopify_api/resources/product.rb
199
201
  - lib/shopify_api/resources/product_listing.rb
200
202
  - lib/shopify_api/resources/province.rb
@@ -242,6 +244,7 @@ files:
242
244
  - test/customer_saved_search_test.rb
243
245
  - test/customer_test.rb
244
246
  - test/detailed_log_subscriber_test.rb
247
+ - test/discount_code_test.rb
245
248
  - test/discount_test.rb
246
249
  - test/draft_order_test.rb
247
250
  - test/fixtures/access_token_delegate.json
@@ -271,6 +274,8 @@ files:
271
274
  - test/fixtures/customers_account_activation_url.json
272
275
  - test/fixtures/customers_search.json
273
276
  - test/fixtures/discount.json
277
+ - test/fixtures/discount_code.json
278
+ - test/fixtures/discount_codes.json
274
279
  - test/fixtures/discount_disabled.json
275
280
  - test/fixtures/discounts.json
276
281
  - test/fixtures/draft_order.json
@@ -297,6 +302,8 @@ files:
297
302
  - test/fixtures/order_risks.json
298
303
  - test/fixtures/orders.json
299
304
  - test/fixtures/policies.json
305
+ - test/fixtures/price_rule.json
306
+ - test/fixtures/price_rules.json
300
307
  - test/fixtures/product.json
301
308
  - test/fixtures/product_listing.json
302
309
  - test/fixtures/product_listing_product_ids.json
@@ -339,6 +346,7 @@ files:
339
346
  - test/order_risk_test.rb
340
347
  - test/order_test.rb
341
348
  - test/policy_test.rb
349
+ - test/price_rule_test.rb
342
350
  - test/product_listing_test.rb
343
351
  - test/product_test.rb
344
352
  - test/recurring_application_charge_test.rb