shopify_api 4.2.0 → 4.2.1

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: a469a08bffed1215a271c451c89c0c2df287dce8
4
- data.tar.gz: d3e501f6992c3eaf5318b9b15a31b30a4972b221
3
+ metadata.gz: 3dde0dd1ec00e7646f6b4f75e6a6246798524e18
4
+ data.tar.gz: 10564e66476aa650ad5966f1be14e420ab3fec51
5
5
  SHA512:
6
- metadata.gz: be1d93b8ddf0cb35df0f89c968b3b3fbacf392fe4a50be88458f1afac5ab03531955da21ffaf3cc9b14edf9323ab05c5a635b35b7e922520a6457084f0eaa194
7
- data.tar.gz: c9d4da93918d73615f59df1eb5174b992b2ac4ae5f58e29022ed11c0335b9fb98b83331bed09dd81e87483c6ac650371400d3467bf37b69bc6b3f9312ffd1708
6
+ metadata.gz: ee2a33489d65026ea0cd8e14a0f25e16aad685465a7ec8e933c92e0269e31d43bd0c244f2f71fd86666699637563c7ab95b7cd0ad3215b19b2e3f418d2e4aa08
7
+ data.tar.gz: 4782ff90ba01c1a4949460a9aa02743903e1a1d66d9b644a3ab103eebefa01331be2a611e0ba655aafc8236becd4552cea42d6cc7b4a78c3794ce69cb95f2f56
@@ -29,8 +29,3 @@ matrix:
29
29
  - rvm: 1.9.2
30
30
  gemfile: Gemfile_ar32
31
31
  env: OLD_RAKE=1
32
-
33
-
34
- notifications:
35
- flowdock:
36
- secure: "RCgSxzMScnqK6bOwkv9sWSdieLBeJla8NcDtM/QmuFW8soTgV6qCTAPAGd4lpjg4vGTaM3DsdHU5GMDbgdWN5dE2Rf09ayFqiZg8OloPMQ63KIwLJyVcw3cVJO5i7smjIpsSjPjBkvAXHIOFcKdsnuYGS4YD8hjl+QrZ3ghi440="
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ == Version 4.2.1
2
+
3
+ * Support for Users and Discounts (Shopify Plus only)
4
+ * Adds Customer#account_activation_url method
5
+ * Adds ability to open a fulfillment.
6
+
1
7
  == Version 4.2.0
2
8
 
3
9
  * Threadsafety is now compatible with the latest ActiveResource master
data/README.md CHANGED
@@ -30,6 +30,8 @@ ShopifyAPI uses ActiveResource to communicate with the REST web service. ActiveR
30
30
 
31
31
  1. First create a new application in either the partners admin or your store admin. For a private App you'll need the API_KEY and the PASSWORD otherwise you'll need the API_KEY and SHARED_SECRET.
32
32
 
33
+ If you're not sure how to create a new application in the partner/store admin and/or if you're not sure how to generate the required credentials, you can [read the related shopify docs](https://docs.shopify.com/api/guides/api-credentials) on the same.
34
+
33
35
  2. For a private App you just need to set the base site url as follows:
34
36
 
35
37
  ```ruby
@@ -9,5 +9,16 @@ module ShopifyAPI
9
9
  def self.search(params)
10
10
  find(:all, from: :search, params: params)
11
11
  end
12
+
13
+ def account_activation_url
14
+ resource = post(:account_activation_url, {}, only_id)
15
+ data = ActiveSupport::JSON.decode(resource.body.to_s)
16
+ result = nil
17
+
18
+ if data.key?('account_activation_url')
19
+ result = data['account_activation_url']
20
+ end
21
+ result
22
+ end
12
23
  end
13
24
  end
@@ -0,0 +1,11 @@
1
+ module ShopifyAPI
2
+ class Discount < Base
3
+ def disable
4
+ load_attributes_from_response(post(:disable))
5
+ end
6
+
7
+ def enable
8
+ load_attributes_from_response(post(:enable))
9
+ end
10
+ end
11
+ end
@@ -2,7 +2,12 @@ module ShopifyAPI
2
2
  class Fulfillment < Base
3
3
  init_prefix :order
4
4
 
5
+ def order_id
6
+ @prefix_options[:order_id]
7
+ end
8
+
5
9
  def cancel; load_attributes_from_response(post(:cancel, {}, only_id)); end
6
10
  def complete; load_attributes_from_response(post(:complete, {}, only_id)); end
11
+ def open; load_attributes_from_response(post(:open, {}, only_id)); end
7
12
  end
8
13
  end
@@ -0,0 +1,13 @@
1
+ module ShopifyAPI
2
+ class Refund < Base
3
+ init_prefix :order
4
+
5
+ def self.calculate(*args)
6
+ options = { :refund => args[0] }
7
+ params = options.merge(args[1][:params]) if args[1] && args[1][:params]
8
+ self.prefix = "/admin/orders/#{params[:order_id]}/"
9
+ resource = post(:calculate, {}, options.to_json)
10
+ instantiate_record(format.decode(resource.body), {})
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,4 @@
1
+ module ShopifyAPI
2
+ class User < Base
3
+ end
4
+ end
@@ -1,3 +1,3 @@
1
1
  module ShopifyAPI
2
- VERSION = "4.2.0"
2
+ VERSION = "4.2.1"
3
3
  end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class CollectTest < Test::Unit::TestCase
4
+ test "#create should create a collect" do
5
+ fake "collects", :method => :post, :status => 201, :body => load_fixture('collect')
6
+ link = ShopifyAPI::Collect.create(:product_id => 921728736, :collection_id => 841564295)
7
+ assert_equal 841564295, link.id
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class CustomCollectionTest < Test::Unit::TestCase
4
+ test "#create should create a custom collection" do
5
+ fake "custom_collections", :method => :post, :status => 201, :body => load_fixture('custom_collection')
6
+ link = ShopifyAPI::CustomCollection.create(:title => "Macbooks", :image => { :src => "http://example.com/rails_logo.gif" })
7
+ assert_equal 1063001463, link.id
8
+ end
9
+ end
@@ -1,10 +1,20 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class CustomerTest < Test::Unit::TestCase
4
- def test_search
5
- fake "customers/search.json?query=Bob+country%3AUnited+States", extension: false, body: load_fixture('customers_search')
4
+
5
+ test "search should get a customers collection" do
6
+ fake "customers/search.json?query=Bob+country%3AUnited+States", :extension => false, :body => load_fixture('customers_search')
6
7
 
7
8
  results = ShopifyAPI::Customer.search(query: 'Bob country:United States')
8
9
  assert_equal 'Bob', results.first.first_name
9
10
  end
11
+
12
+ test "account_activation_url should create an account activation url" do
13
+ fake "customers/207119551", :body => load_fixture('customers')
14
+ fake "customers/207119551/account_activation_url", :method => :post, :body => load_fixture('customers_account_activation_url')
15
+
16
+ customer = ShopifyAPI::Customer.find(207119551)
17
+ activation_url = "http://apple.myshopify.com/account/activate/207119551/86688abf23572680740b1c062fa37111-1458248616"
18
+ assert_equal activation_url, customer.account_activation_url
19
+ end
10
20
  end
@@ -0,0 +1,52 @@
1
+ require 'test_helper'
2
+
3
+ class DiscountTest < Test::Unit::TestCase
4
+ test 'get should get a discount' do
5
+ fake 'discounts/680866', method: :get, status: 200, body: load_fixture('discount')
6
+
7
+ discount = ShopifyAPI::Discount.find(680866)
8
+ assert_equal 680866, discount.id
9
+ end
10
+
11
+ test 'get should get all discounts' do
12
+ fake 'discounts', method: :get, status: 200, body: load_fixture('discounts')
13
+
14
+ discounts = ShopifyAPI::Discount.all
15
+ assert_equal 'TENOFF', discounts.first.code
16
+ end
17
+
18
+ test 'create should create a discount' do
19
+ fake 'discounts', method: :post, status: 201, body: load_fixture('discount')
20
+
21
+ discount = ShopifyAPI::Discount.create(code: 'TENOFF', discount_type: 'percentage')
22
+ assert_equal 'TENOFF', discount.code
23
+ end
24
+
25
+ test 'should disable discount' do
26
+ fake 'discounts/680866', method: :get, status: 200, body: load_fixture('discount')
27
+ fake 'discounts/680866/disable', method: :post, status: 201, body: load_fixture('discount_disabled')
28
+
29
+ discount = ShopifyAPI::Discount.find(680866)
30
+ discount.disable
31
+
32
+ assert_equal "disabled", discount.status
33
+ end
34
+
35
+ test 'should enable discount' do
36
+ fake 'discounts/680866', method: :get, status: 200, body: load_fixture('discount')
37
+ fake 'discounts/680866/enable', method: :post, status: 201, body: load_fixture('discount')
38
+
39
+ discount = ShopifyAPI::Discount.find(680866)
40
+ discount.enable
41
+
42
+ assert_equal "enabled", discount.status
43
+ end
44
+
45
+ test 'delete should delete discount' do
46
+ fake 'discounts/680866', method: :get, status: 200, body: load_fixture('discount')
47
+ fake 'discounts/680866', method: :delete, status: 200, body: 'destroyed'
48
+
49
+ discount = ShopifyAPI::Discount.find(680866)
50
+ assert discount.destroy
51
+ end
52
+ end
@@ -0,0 +1,12 @@
1
+ {
2
+ "collect": {
3
+ "id": 841564295,
4
+ "collection_id": 841564295,
5
+ "product_id": 632910392,
6
+ "featured": false,
7
+ "created_at": null,
8
+ "updated_at": null,
9
+ "position": 1,
10
+ "sort_value": "0000000001"
11
+ }
12
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "custom_collection": {
3
+ "id": 1063001463,
4
+ "handle": "macbooks",
5
+ "title": "Macbooks",
6
+ "updated_at": "2016-03-17T16:58:37-04:00",
7
+ "body_html": null,
8
+ "published_at": "2016-03-17T16:58:37-04:00",
9
+ "sort_order": "alpha-asc",
10
+ "template_suffix": null,
11
+ "published_scope": "global",
12
+ "image": {
13
+ "created_at": "2016-03-17T16:58:37-04:00",
14
+ "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/collections\/fd43f2c8883f6e9b680e3295fd990d2c.gif?v=1458248317"
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "customer": {
3
+ "id": 207119551,
4
+ "email": "bob.norman@hostmail.com",
5
+ "accepts_marketing": false,
6
+ "created_at": "2016-03-17T17:04:13-04:00",
7
+ "updated_at": "2016-03-17T17:04:13-04:00",
8
+ "first_name": "Bob",
9
+ "last_name": "Norman",
10
+ "orders_count": 1,
11
+ "state": "disabled",
12
+ "total_spent": "41.94",
13
+ "last_order_id": 450789469,
14
+ "note": null,
15
+ "verified_email": true,
16
+ "multipass_identifier": null,
17
+ "tax_exempt": false,
18
+ "tags": "",
19
+ "last_order_name": "#1001",
20
+ "default_address": {
21
+ "id": 207119551,
22
+ "first_name": null,
23
+ "last_name": null,
24
+ "company": null,
25
+ "address1": "Chestnut Street 92",
26
+ "address2": "",
27
+ "city": "Louisville",
28
+ "province": "Kentucky",
29
+ "country": "United States",
30
+ "zip": "40202",
31
+ "phone": "555-625-1199",
32
+ "name": "",
33
+ "province_code": "KY",
34
+ "country_code": "US",
35
+ "country_name": "United States",
36
+ "default": true
37
+ },
38
+ "addresses": [
39
+ {
40
+ "id": 207119551,
41
+ "first_name": null,
42
+ "last_name": null,
43
+ "company": null,
44
+ "address1": "Chestnut Street 92",
45
+ "address2": "",
46
+ "city": "Louisville",
47
+ "province": "Kentucky",
48
+ "country": "United States",
49
+ "zip": "40202",
50
+ "phone": "555-625-1199",
51
+ "name": "",
52
+ "province_code": "KY",
53
+ "country_code": "US",
54
+ "country_name": "United States",
55
+ "default": true
56
+ }
57
+ ]
58
+ }
59
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "account_activation_url": "http:\/\/apple.myshopify.com\/account\/activate\/207119551\/86688abf23572680740b1c062fa37111-1458248616"
3
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "discount": {
3
+ "id": 680866,
4
+ "code": "TENOFF",
5
+ "value": "10.0",
6
+ "ends_at": null,
7
+ "starts_at": null,
8
+ "status": "enabled",
9
+ "minimum_order_amount": "0.00",
10
+ "usage_limit": null,
11
+ "applies_to_id": null,
12
+ "applies_once": false,
13
+ "discount_type": "percentage",
14
+ "applies_to_resource": null,
15
+ "times_used": 1
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "discount": {
3
+ "id": 680866,
4
+ "code": "TENOFF",
5
+ "value": "10.0",
6
+ "ends_at": null,
7
+ "starts_at": null,
8
+ "status": "disabled",
9
+ "minimum_order_amount": "0.00",
10
+ "usage_limit": null,
11
+ "applies_to_id": null,
12
+ "applies_once": false,
13
+ "discount_type": "percentage",
14
+ "applies_to_resource": null,
15
+ "times_used": 1
16
+ }
17
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "discounts": [
3
+ {
4
+ "id": 680866,
5
+ "code": "TENOFF",
6
+ "value": "10.0",
7
+ "ends_at": null,
8
+ "starts_at": null,
9
+ "status": "enabled",
10
+ "minimum_order_amount": "0.00",
11
+ "usage_limit": null,
12
+ "applies_to_id": null,
13
+ "applies_once": false,
14
+ "discount_type": "percentage",
15
+ "applies_to_resource": null,
16
+ "times_used": 1
17
+ },
18
+ {
19
+ "id": 949676421,
20
+ "code": "xyz",
21
+ "value": "10.00",
22
+ "ends_at": null,
23
+ "starts_at": null,
24
+ "status": "disabled",
25
+ "minimum_order_amount": "0.00",
26
+ "usage_limit": null,
27
+ "applies_to_id": null,
28
+ "applies_once": false,
29
+ "discount_type": "fixed_amount",
30
+ "applies_to_resource": null,
31
+ "times_used": 0
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "redirect": {
3
+ "id": 979034150,
4
+ "path": "\/ipod",
5
+ "target": "\/pages\/itunes"
6
+ }
7
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "refund": {
3
+ "id": 509562969,
4
+ "order_id": 450789469,
5
+ "created_at": "2016-03-22T11:15:00-04:00",
6
+ "note": "it broke during shipping",
7
+ "restock": true,
8
+ "user_id": 799407056,
9
+ "refund_line_items": [
10
+ {
11
+ "id": 104689539,
12
+ "quantity": 1,
13
+ "line_item_id": 703073504,
14
+ "line_item": {
15
+ "id": 703073504,
16
+ "variant_id": 457924702,
17
+ "title": "IPod Nano - 8gb",
18
+ "quantity": 1,
19
+ "price": "199.00",
20
+ "grams": 200,
21
+ "sku": "IPOD2008BLACK",
22
+ "variant_title": "black",
23
+ "vendor": null,
24
+ "fulfillment_service": "manual",
25
+ "product_id": 632910392,
26
+ "requires_shipping": true,
27
+ "taxable": true,
28
+ "gift_card": false,
29
+ "name": "IPod Nano - 8gb - black",
30
+ "variant_inventory_management": "shopify",
31
+ "properties": [
32
+ ],
33
+ "product_exists": true,
34
+ "fulfillable_quantity": 1,
35
+ "total_discount": "0.00",
36
+ "fulfillment_status": null,
37
+ "tax_lines": [
38
+ {
39
+ "title": "State Tax",
40
+ "price": "3.98",
41
+ "rate": 0.06
42
+ }
43
+ ]
44
+ }
45
+ },
46
+ {
47
+ "id": 709875399,
48
+ "quantity": 1,
49
+ "line_item_id": 466157049,
50
+ "line_item": {
51
+ "id": 466157049,
52
+ "variant_id": 39072856,
53
+ "title": "IPod Nano - 8gb",
54
+ "quantity": 1,
55
+ "price": "199.00",
56
+ "grams": 200,
57
+ "sku": "IPOD2008GREEN",
58
+ "variant_title": "green",
59
+ "vendor": null,
60
+ "fulfillment_service": "manual",
61
+ "product_id": 632910392,
62
+ "requires_shipping": true,
63
+ "taxable": true,
64
+ "gift_card": false,
65
+ "name": "IPod Nano - 8gb - green",
66
+ "variant_inventory_management": "shopify",
67
+ "properties": [
68
+ {
69
+ "name": "Custom Engraving Front",
70
+ "value": "Happy Birthday"
71
+ }
72
+ ],
73
+ "product_exists": true,
74
+ "fulfillable_quantity": 1,
75
+ "total_discount": "0.00",
76
+ "fulfillment_status": null,
77
+ "tax_lines": [
78
+ {
79
+ "title": "State Tax",
80
+ "price": "3.98",
81
+ "rate": 0.06
82
+ }
83
+ ]
84
+ }
85
+ }
86
+ ],
87
+ "transactions": [
88
+ {
89
+ "id": 179259969,
90
+ "order_id": 450789469,
91
+ "amount": "209.00",
92
+ "kind": "refund",
93
+ "gateway": "bogus",
94
+ "status": "success",
95
+ "message": null,
96
+ "created_at": "2005-08-05T12:59:12-04:00",
97
+ "test": false,
98
+ "authorization": "authorization-key",
99
+ "currency": "USD",
100
+ "location_id": null,
101
+ "user_id": null,
102
+ "parent_id": null,
103
+ "device_id": null,
104
+ "receipt": {},
105
+ "error_code": null,
106
+ "source_name": "web"
107
+ }
108
+ ],
109
+ "order_adjustments": [
110
+ ]
111
+ }
112
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "smart_collection": {
3
+ "id": 1063001432,
4
+ "handle": "macbooks",
5
+ "title": "Macbooks",
6
+ "updated_at": "2016-03-17T16:57:03-04:00",
7
+ "body_html": null,
8
+ "published_at": null,
9
+ "sort_order": "alpha-asc",
10
+ "template_suffix": null,
11
+ "published_scope": "global",
12
+ "disjunctive": false,
13
+ "rules": [
14
+ {
15
+ "column": "title",
16
+ "relation": "starts_with",
17
+ "condition": "mac"
18
+ }
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "user": {
3
+ "id": 799407056,
4
+ "first_name": "Steve",
5
+ "email": "steve@apple.com",
6
+ "url": "www.apple.com",
7
+ "im": null,
8
+ "screen_name": null,
9
+ "phone": null,
10
+ "last_name": "Jobs",
11
+ "account_owner": true,
12
+ "receive_announcements": 1,
13
+ "bio": null,
14
+ "permissions": [
15
+ "full"
16
+ ],
17
+ "user_type": "regular",
18
+ "phone_validated?": false,
19
+ "tfa_enabled?": false
20
+ }
21
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "users": [
3
+ {
4
+ "id": 799407056,
5
+ "first_name": "Steve",
6
+ "email": "steve@apple.com",
7
+ "url": "www.apple.com",
8
+ "im": null,
9
+ "screen_name": null,
10
+ "phone": null,
11
+ "last_name": "Jobs",
12
+ "account_owner": true,
13
+ "receive_announcements": 1,
14
+ "bio": null,
15
+ "permissions": [
16
+ "full"
17
+ ],
18
+ "user_type": "regular",
19
+ "phone_validated?": false,
20
+ "tfa_enabled?": false
21
+ },
22
+ {
23
+ "id": 930143300,
24
+ "first_name": "noaccesssteve",
25
+ "email": "noaccesssteve@jobs.com",
26
+ "url": "www.apple.com",
27
+ "im": null,
28
+ "screen_name": null,
29
+ "phone": null,
30
+ "last_name": "Jobs",
31
+ "account_owner": false,
32
+ "receive_announcements": 1,
33
+ "bio": null,
34
+ "permissions": [
35
+ "limited"
36
+ ],
37
+ "user_type": "regular",
38
+ "phone_validated?": false,
39
+ "tfa_enabled?": false
40
+ }
41
+ ]
42
+ }
@@ -33,6 +33,28 @@ class FulFillmentTest < Test::Unit::TestCase
33
33
  assert_equal 'cancelled', fulfillment.status
34
34
  end
35
35
  end
36
+
37
+ context "#open" do
38
+ should "be able to open a fulfillment" do
39
+ fulfillment = ShopifyAPI::Fulfillment.find(255858046, :params => {:order_id => 450789469})
40
+
41
+ open_fulfillment = ActiveSupport::JSON.decode(load_fixture('fulfillment'))
42
+ open_fulfillment['fulfillment']['status'] = 'open'
43
+ fake "orders/450789469/fulfillments/255858046/open", :method => :post, :body => ActiveSupport::JSON.encode(open_fulfillment)
44
+
45
+ assert_equal 'pending', fulfillment.status
46
+ assert fulfillment.open
47
+ assert_equal 'open', fulfillment.status
48
+ end
49
+ end
50
+
51
+ context "#find" do
52
+ should "be able to find fulfillment" do
53
+ fulfillment = ShopifyAPI::Fulfillment.find(255858046, :params => {:order_id => 450789469})
54
+ assert_equal 255858046, fulfillment.id
55
+ assert_equal 450789469, fulfillment.order_id
56
+ end
57
+ end
36
58
  end
37
59
 
38
60
  end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class RedirectTest < Test::Unit::TestCase
4
+ test "#create should create a redirect" do
5
+ fake "redirects", :method => :post, :status => 201, :body => load_fixture('redirect')
6
+ redirect = ShopifyAPI::Redirect.create(:path => "/ipod", :target => "/pages/itunes")
7
+ assert_equal 979034150, redirect.id
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class RefundTest < Test::Unit::TestCase
4
+
5
+ test '#create should create a refund' do
6
+ fake "orders/450789469/refunds", :method => :post, :status => 201, :body => load_fixture('refund')
7
+ refund = ShopifyAPI::Refund.create(
8
+ :order_id => 450789469,
9
+ :restock => true,
10
+ :note => "wrong size",
11
+ :shipping => { :full_refund => true },
12
+ :refund_line_items => [{ :line_item => 518995019, :quantity => 1 }]
13
+ )
14
+ assert_equal 703073504, refund.refund_line_items.first.line_item_id
15
+ end
16
+
17
+ test '#find should return a refund' do
18
+ fake "orders/450789469/refunds/509562969.json?order_id=450789469", :extension => false, :method => :get, :body => load_fixture('refund')
19
+ fake "orders/450789469/refunds/509562969", :method => :get, :body => load_fixture('refund')
20
+ refund = ShopifyAPI::Refund.find(509562969, :params => {:order_id => 450789469})
21
+ assert_equal 509562969, refund.id
22
+ end
23
+
24
+ test '#calculate a refund' do
25
+ fake "orders/450789469/refunds/calculate", :method => :post, :body => load_fixture('refund')
26
+ data = { :shipping => { :amount => 0 } }
27
+
28
+ refund = ShopifyAPI::Refund.calculate(data, :params => {:order_id => 450789469})
29
+ assert_equal 2, refund.refund_line_items.count
30
+ assert_equal 703073504, refund.refund_line_items.first.line_item_id
31
+ end
32
+ end
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class SmartCollectionTest < Test::Unit::TestCase
4
+ test "Smart Collection creation" do
5
+ fake "smart_collections", :method => :post, :status => 201, :body => load_fixture('smart_collection')
6
+ rules = { :column => "title", :relation => "starts_with", :condition => "mac" }
7
+ smart_collection = ShopifyAPI::SmartCollection.create(:title => "Macbooks", :rules => rules)
8
+ assert_equal 1063001432, smart_collection.id
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ test 'get should get a user' do
5
+ fake 'users/799407056', method: :get, status: 200, body: load_fixture('user')
6
+
7
+ user = ShopifyAPI::User.find(799407056)
8
+ assert_equal 799407056, user.id
9
+ end
10
+
11
+ test 'get should get all users' do
12
+ fake 'users', method: :get, status: 200, body: load_fixture('users')
13
+
14
+ users = ShopifyAPI::User.all
15
+ assert_equal 799407056, users.first.id
16
+ end
17
+ 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.2.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-30 00:00:00.000000000 Z
11
+ date: 2016-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource
@@ -155,6 +155,7 @@ files:
155
155
  - lib/shopify_api/resources/customer.rb
156
156
  - lib/shopify_api/resources/customer_group.rb
157
157
  - lib/shopify_api/resources/customer_saved_search.rb
158
+ - lib/shopify_api/resources/discount.rb
158
159
  - lib/shopify_api/resources/event.rb
159
160
  - lib/shopify_api/resources/fulfillment.rb
160
161
  - lib/shopify_api/resources/fulfillment_event.rb
@@ -177,6 +178,7 @@ files:
177
178
  - lib/shopify_api/resources/receipt.rb
178
179
  - lib/shopify_api/resources/recurring_application_charge.rb
179
180
  - lib/shopify_api/resources/redirect.rb
181
+ - lib/shopify_api/resources/refund.rb
180
182
  - lib/shopify_api/resources/rule.rb
181
183
  - lib/shopify_api/resources/script_tag.rb
182
184
  - lib/shopify_api/resources/shipping_address.rb
@@ -189,6 +191,7 @@ files:
189
191
  - lib/shopify_api/resources/theme.rb
190
192
  - lib/shopify_api/resources/transaction.rb
191
193
  - lib/shopify_api/resources/usage_charge.rb
194
+ - lib/shopify_api/resources/user.rb
192
195
  - lib/shopify_api/resources/variant.rb
193
196
  - lib/shopify_api/resources/webhook.rb
194
197
  - lib/shopify_api/session.rb
@@ -204,9 +207,12 @@ files:
204
207
  - test/carrier_service_test.rb
205
208
  - test/cart_test.rb
206
209
  - test/checkouts_test.rb
210
+ - test/collect_test.rb
211
+ - test/custom_collection_test.rb
207
212
  - test/customer_saved_search_test.rb
208
213
  - test/customer_test.rb
209
214
  - test/detailed_log_subscriber_test.rb
215
+ - test/discount_test.rb
210
216
  - test/fixtures/application_charge.json
211
217
  - test/fixtures/application_charges.json
212
218
  - test/fixtures/article.json
@@ -219,9 +225,16 @@ files:
219
225
  - test/fixtures/carrier_service.json
220
226
  - test/fixtures/carts.json
221
227
  - test/fixtures/checkouts.json
228
+ - test/fixtures/collect.json
229
+ - test/fixtures/custom_collection.json
222
230
  - test/fixtures/customer_saved_search.json
223
231
  - test/fixtures/customer_saved_search_customers.json
232
+ - test/fixtures/customers.json
233
+ - test/fixtures/customers_account_activation_url.json
224
234
  - test/fixtures/customers_search.json
235
+ - test/fixtures/discount.json
236
+ - test/fixtures/discount_disabled.json
237
+ - test/fixtures/discounts.json
225
238
  - test/fixtures/events.json
226
239
  - test/fixtures/fulfillment.json
227
240
  - test/fixtures/fulfillment_event.json
@@ -242,15 +255,20 @@ files:
242
255
  - test/fixtures/recurring_application_charge.json
243
256
  - test/fixtures/recurring_application_charge_adjustment.json
244
257
  - test/fixtures/recurring_application_charges.json
258
+ - test/fixtures/redirect.json
259
+ - test/fixtures/refund.json
245
260
  - test/fixtures/script_tag.json
246
261
  - test/fixtures/script_tags.json
247
262
  - test/fixtures/shipping_zones.json
248
263
  - test/fixtures/shop.json
264
+ - test/fixtures/smart_collection.json
249
265
  - test/fixtures/tags.json
250
266
  - test/fixtures/tax_service.json
251
267
  - test/fixtures/transaction.json
252
268
  - test/fixtures/usage_charge.json
253
269
  - test/fixtures/usage_charges.json
270
+ - test/fixtures/user.json
271
+ - test/fixtures/users.json
254
272
  - test/fixtures/variant.json
255
273
  - test/fixtures/variants.json
256
274
  - test/fixtures/webhook.json
@@ -268,14 +286,18 @@ files:
268
286
  - test/policy_test.rb
269
287
  - test/product_test.rb
270
288
  - test/recurring_application_charge_test.rb
289
+ - test/redirect_test.rb
290
+ - test/refund_test.rb
271
291
  - test/script_tag_test.rb
272
292
  - test/session_test.rb
273
293
  - test/shipping_zone_test.rb
274
294
  - test/shop_test.rb
295
+ - test/smart_collection_test.rb
275
296
  - test/tax_service_test.rb
276
297
  - test/test_helper.rb
277
298
  - test/transaction_test.rb
278
299
  - test/usage_charge_test.rb
300
+ - test/user_test.rb
279
301
  - test/variant_test.rb
280
302
  - test/webhook_test.rb
281
303
  homepage: http://www.shopify.com/partners/apps