th_shopify_api 1.2.6.pre

Sign up to get free protection for your applications and to get access to all the features.
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: []