th_shopify_api 1.2.6.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. data/.document +5 -0
  2. data/.gitignore +5 -0
  3. data/CHANGELOG +57 -0
  4. data/LICENSE +20 -0
  5. data/README.rdoc +60 -0
  6. data/RELEASING +16 -0
  7. data/Rakefile +41 -0
  8. data/bin/shopify +4 -0
  9. data/lib/active_resource/connection_ext.rb +16 -0
  10. data/lib/shopify_api.rb +18 -0
  11. data/lib/shopify_api/countable.rb +7 -0
  12. data/lib/shopify_api/events.rb +7 -0
  13. data/lib/shopify_api/limits.rb +76 -0
  14. data/lib/shopify_api/metafields.rb +18 -0
  15. data/lib/shopify_api/resources.rb +40 -0
  16. data/lib/shopify_api/resources/address.rb +4 -0
  17. data/lib/shopify_api/resources/application_charge.rb +9 -0
  18. data/lib/shopify_api/resources/article.rb +12 -0
  19. data/lib/shopify_api/resources/asset.rb +95 -0
  20. data/lib/shopify_api/resources/base.rb +5 -0
  21. data/lib/shopify_api/resources/billing_address.rb +4 -0
  22. data/lib/shopify_api/resources/blog.rb +10 -0
  23. data/lib/shopify_api/resources/cli.rb +161 -0
  24. data/lib/shopify_api/resources/collect.rb +5 -0
  25. data/lib/shopify_api/resources/comment.rb +13 -0
  26. data/lib/shopify_api/resources/countable.rb +7 -0
  27. data/lib/shopify_api/resources/country.rb +4 -0
  28. data/lib/shopify_api/resources/custom_collection.rb +19 -0
  29. data/lib/shopify_api/resources/customer.rb +4 -0
  30. data/lib/shopify_api/resources/customer_group.rb +4 -0
  31. data/lib/shopify_api/resources/event.rb +10 -0
  32. data/lib/shopify_api/resources/fulfillment.rb +5 -0
  33. data/lib/shopify_api/resources/image.rb +16 -0
  34. data/lib/shopify_api/resources/line_item.rb +4 -0
  35. data/lib/shopify_api/resources/metafield.rb +15 -0
  36. data/lib/shopify_api/resources/note_attribute.rb +4 -0
  37. data/lib/shopify_api/resources/option.rb +4 -0
  38. data/lib/shopify_api/resources/order.rb +25 -0
  39. data/lib/shopify_api/resources/page.rb +6 -0
  40. data/lib/shopify_api/resources/payment_details.rb +4 -0
  41. data/lib/shopify_api/resources/product.rb +33 -0
  42. data/lib/shopify_api/resources/product_search_engine.rb +4 -0
  43. data/lib/shopify_api/resources/province.rb +5 -0
  44. data/lib/shopify_api/resources/receipt.rb +4 -0
  45. data/lib/shopify_api/resources/recurring_application_charge.rb +23 -0
  46. data/lib/shopify_api/resources/redirect.rb +4 -0
  47. data/lib/shopify_api/resources/rule.rb +4 -0
  48. data/lib/shopify_api/resources/script_tag.rb +4 -0
  49. data/lib/shopify_api/resources/shipping_address.rb +4 -0
  50. data/lib/shopify_api/resources/shipping_line.rb +4 -0
  51. data/lib/shopify_api/resources/shop.rb +23 -0
  52. data/lib/shopify_api/resources/smart_collection.rb +10 -0
  53. data/lib/shopify_api/resources/tax_line.rb +4 -0
  54. data/lib/shopify_api/resources/theme.rb +4 -0
  55. data/lib/shopify_api/resources/transaction.rb +5 -0
  56. data/lib/shopify_api/resources/variant.rb +11 -0
  57. data/lib/shopify_api/resources/webhook.rb +4 -0
  58. data/lib/shopify_api/session.rb +166 -0
  59. data/shopify_api.gemspec +35 -0
  60. data/test/cli_test.rb +109 -0
  61. data/test/limits_test.rb +37 -0
  62. data/test/order_test.rb +48 -0
  63. data/test/shopify_api_test.rb +55 -0
  64. data/test/test_helper.rb +29 -0
  65. metadata +153 -0
@@ -0,0 +1,48 @@
1
+ require 'test_helper'
2
+
3
+ class OrderTest < Test::Unit::TestCase
4
+ def setup
5
+ ActiveResource::Base.site = "http://localhost"
6
+ end
7
+
8
+ context "Order" do
9
+ context "#note_attributes" do
10
+
11
+ should "be loaded correctly from order xml" do
12
+ order_xml = <<-XML
13
+ <?xml version="1.0" encoding="UTF-8"?>
14
+ <order>
15
+ <note-attributes type="array">
16
+ <note-attribute>
17
+ <name>size</name>
18
+ <value>large</value>
19
+ </note-attribute>
20
+ </note-attributes>
21
+ </order>
22
+ XML
23
+
24
+ order = ShopifyAPI::Order.new(Hash.from_xml(order_xml)["order"])
25
+
26
+ assert_equal 1, order.note_attributes.size
27
+
28
+ note_attribute = order.note_attributes.first
29
+ assert_equal "size", note_attribute.name
30
+ assert_equal "large", note_attribute.value
31
+ end
32
+
33
+ should "be able to add note attributes to an order" do
34
+ order = ShopifyAPI::Order.new
35
+ order.note_attributes = []
36
+ order.note_attributes << ShopifyAPI::NoteAttribute.new(:name => "color", :value => "blue")
37
+
38
+ order_xml = Hash.from_xml(order.to_xml)
39
+ assert note_attributes = order_xml["order"]["note_attributes"]
40
+ assert_instance_of Array, note_attributes
41
+
42
+ attribute = note_attributes.first
43
+ assert_equal "color", attribute["name"]
44
+ assert_equal "blue", attribute["value"]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class ShopifyApiTest < Test::Unit::TestCase
4
+
5
+ context "Session" do
6
+ should "not be valid without a url" do
7
+ session = ShopifyAPI::Session.new(nil, "any-token")
8
+ assert_not session.valid?
9
+ end
10
+
11
+ should "not be valid without token" do
12
+ session = ShopifyAPI::Session.new("testshop.myshopify.com")
13
+ assert_not session.valid?
14
+ end
15
+
16
+ should "be valid with any token and any url" do
17
+ session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token")
18
+ assert session.valid?
19
+ end
20
+
21
+ should "not raise error without params" do
22
+ assert_nothing_raised do
23
+ session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token")
24
+ end
25
+ end
26
+
27
+ should "raise error if params passed but signature omitted" do
28
+ assert_raises(RuntimeError) do
29
+ session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token", {'foo' => 'bar'})
30
+ end
31
+ end
32
+
33
+ should "setup api_key and secret for all sessions" do
34
+ ShopifyAPI::Session.setup(:api_key => "My test key", :secret => "My test secret")
35
+ assert_equal "My test key", ShopifyAPI::Session.api_key
36
+ assert_equal "My test secret", ShopifyAPI::Session.secret
37
+ end
38
+
39
+ should "use 'https' protocol by default for all sessions" do
40
+ assert_equal 'https', ShopifyAPI::Session.protocol
41
+ end
42
+
43
+ should "#temp reset ShopifyAPI::Base.site to original value" do
44
+ ShopifyAPI::Base.site = 'http://www.original.com'
45
+
46
+ ShopifyAPI::Session.setup(:api_key => "key", :secret => "secret")
47
+ assigned_site = nil
48
+ ShopifyAPI::Session.temp("testshop.myshopify.com", "any-token") {
49
+ assigned_site = ShopifyAPI::Base.site
50
+ }
51
+ assert_equal 'https://key:e56d5793b869753d87cf03ceb6bb5dfc@testshop.myshopify.com/admin', assigned_site.to_s
52
+ assert_equal 'http://www.original.com', ShopifyAPI::Base.site.to_s
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,29 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'mocha'
4
+
5
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ require 'shopify_api'
8
+
9
+ # setup ShopifyAPI with fake api_key and secret
10
+ ShopifyAPI::Session.setup(:api_key => "API Test key", :secret => "API Test secret")
11
+
12
+ class Test::Unit::TestCase
13
+ def self.test(string, &block)
14
+ define_method("test:#{string}", &block)
15
+ end
16
+
17
+ def self.should(string, &block)
18
+ self.test("should_#{string}", &block)
19
+ end
20
+
21
+ def self.context(string)
22
+ yield
23
+ end
24
+
25
+ # Custom Assertions
26
+ def assert_not(expression)
27
+ assert_block("Expected <#{expression}> to be false!") { not expression }
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: th_shopify_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.6.pre
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - TravisHaynes
9
+ - Shopify
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-09-10 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activeresource
17
+ requirement: &16692540 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 2.2.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *16692540
26
+ - !ruby/object:Gem::Dependency
27
+ name: thor
28
+ requirement: &16691800 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.14.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *16691800
37
+ - !ruby/object:Gem::Dependency
38
+ name: mocha
39
+ requirement: &16691100 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 0.9.8
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *16691100
48
+ description: The Shopify API gem allows Ruby developers to programmatically access
49
+ the admin section of Shopify stores. The API is implemented as XML over HTTP using
50
+ all four verbs (GET/POST/PUT/DELETE). Each resource, like Order, Product, or Collection,
51
+ has its own URL and is manipulated in isolation.
52
+ email:
53
+ - travis.j.haynes@gmail.com
54
+ - developers@jadedpixel.com
55
+ executables:
56
+ - shopify
57
+ extensions: []
58
+ extra_rdoc_files:
59
+ - LICENSE
60
+ - README.rdoc
61
+ files:
62
+ - .document
63
+ - .gitignore
64
+ - CHANGELOG
65
+ - LICENSE
66
+ - README.rdoc
67
+ - RELEASING
68
+ - Rakefile
69
+ - bin/shopify
70
+ - lib/active_resource/connection_ext.rb
71
+ - lib/shopify_api.rb
72
+ - lib/shopify_api/countable.rb
73
+ - lib/shopify_api/events.rb
74
+ - lib/shopify_api/limits.rb
75
+ - lib/shopify_api/metafields.rb
76
+ - lib/shopify_api/resources.rb
77
+ - lib/shopify_api/resources/address.rb
78
+ - lib/shopify_api/resources/application_charge.rb
79
+ - lib/shopify_api/resources/article.rb
80
+ - lib/shopify_api/resources/asset.rb
81
+ - lib/shopify_api/resources/base.rb
82
+ - lib/shopify_api/resources/billing_address.rb
83
+ - lib/shopify_api/resources/blog.rb
84
+ - lib/shopify_api/resources/cli.rb
85
+ - lib/shopify_api/resources/collect.rb
86
+ - lib/shopify_api/resources/comment.rb
87
+ - lib/shopify_api/resources/countable.rb
88
+ - lib/shopify_api/resources/country.rb
89
+ - lib/shopify_api/resources/custom_collection.rb
90
+ - lib/shopify_api/resources/customer.rb
91
+ - lib/shopify_api/resources/customer_group.rb
92
+ - lib/shopify_api/resources/event.rb
93
+ - lib/shopify_api/resources/fulfillment.rb
94
+ - lib/shopify_api/resources/image.rb
95
+ - lib/shopify_api/resources/line_item.rb
96
+ - lib/shopify_api/resources/metafield.rb
97
+ - lib/shopify_api/resources/note_attribute.rb
98
+ - lib/shopify_api/resources/option.rb
99
+ - lib/shopify_api/resources/order.rb
100
+ - lib/shopify_api/resources/page.rb
101
+ - lib/shopify_api/resources/payment_details.rb
102
+ - lib/shopify_api/resources/product.rb
103
+ - lib/shopify_api/resources/product_search_engine.rb
104
+ - lib/shopify_api/resources/province.rb
105
+ - lib/shopify_api/resources/receipt.rb
106
+ - lib/shopify_api/resources/recurring_application_charge.rb
107
+ - lib/shopify_api/resources/redirect.rb
108
+ - lib/shopify_api/resources/rule.rb
109
+ - lib/shopify_api/resources/script_tag.rb
110
+ - lib/shopify_api/resources/shipping_address.rb
111
+ - lib/shopify_api/resources/shipping_line.rb
112
+ - lib/shopify_api/resources/shop.rb
113
+ - lib/shopify_api/resources/smart_collection.rb
114
+ - lib/shopify_api/resources/tax_line.rb
115
+ - lib/shopify_api/resources/theme.rb
116
+ - lib/shopify_api/resources/transaction.rb
117
+ - lib/shopify_api/resources/variant.rb
118
+ - lib/shopify_api/resources/webhook.rb
119
+ - lib/shopify_api/session.rb
120
+ - shopify_api.gemspec
121
+ - test/cli_test.rb
122
+ - test/limits_test.rb
123
+ - test/order_test.rb
124
+ - test/shopify_api_test.rb
125
+ - test/test_helper.rb
126
+ homepage: http://www.shopify.com/partners/apps
127
+ licenses:
128
+ - MIT
129
+ post_install_message:
130
+ rdoc_options:
131
+ - --charset=UTF-8
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ! '>'
144
+ - !ruby/object:Gem::Version
145
+ version: 1.3.1
146
+ requirements: []
147
+ rubyforge_project:
148
+ rubygems_version: 1.8.8
149
+ signing_key:
150
+ specification_version: 3
151
+ summary: The Shopify API gem is a lightweight gem for accessing the Shopify admin
152
+ REST web services
153
+ test_files: []