shopify-mock 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ require 'fakeweb'
2
2
 
3
3
  require 'shopify-mock/errors'
4
4
  require 'shopify-mock/urls'
5
- require 'shopify-mock/fixtures'
5
+ require 'shopify-mock/fixture'
6
6
  require 'shopify-mock/response'
7
7
 
8
8
  # Mock is an extension for the ShopifyAPI
@@ -3,8 +3,8 @@ module ShopifyAPI
3
3
 
4
4
  # provides easy access to fixtures
5
5
  class Fixture
6
- @path = nil
7
- @cache = {}
6
+ @@path = nil
7
+ @@cache = {}
8
8
 
9
9
  # creates a new instance of ShopifyAPI::Mock::Fixture
10
10
  # @param [String] file_name The location of the file to load into the fixture
@@ -18,7 +18,7 @@ module ShopifyAPI
18
18
  # gets the content of the fixture
19
19
  # @return [String] the contents of the file, or @data if it was overwritten
20
20
  # @example Create a fixture and read its contents
21
- # fixture = ShopifyAPI::Fixture("./orders.xml")
21
+ # fixture = ShopifyAPI::Fixture.new "./orders.xml"
22
22
  # data = fixture.data # => the contents of "./orders.xml"
23
23
  # @api public
24
24
  def data
@@ -28,7 +28,7 @@ module ShopifyAPI
28
28
  # gets the name of the fixture
29
29
  # @return [Symbol] the the file name without the extension
30
30
  # @example Load a fixture and get its name
31
- # fixture = ShopifyAPI::Fixture("./orders.xml")
31
+ # fixture = ShopifyAPI::Fixture.new "./orders.xml"
32
32
  # name = fixture.name # => :orders
33
33
  # @api public
34
34
  def name
@@ -39,7 +39,7 @@ module ShopifyAPI
39
39
  # @param [String] value The new value to use, or set to nil to reset to default
40
40
  # @return The new contents of the fixture
41
41
  # @example Override a the contents of a fixture
42
- # fixture = ShopifyAPI::Fixture("./orders.xml")
42
+ # fixture = ShopifyAPI::Fixture.new "./orders.xml"
43
43
  # data = fixture.data # => the contents of "./orders.xml"
44
44
  # fixture.data = "hello world"
45
45
  # data = fixture.data # => "hello world"
@@ -54,7 +54,7 @@ module ShopifyAPI
54
54
  # gets the extension of the fixture
55
55
  # @return [Symbol] The extension
56
56
  # @example Create a new fixture and get its extension
57
- # fixture = ShopifyAPI::Fixture("./orders.xml")
57
+ # fixture = ShopifyAPI::Fixture.new "./orders.xml"
58
58
  # ext = fixture.ext # => :xml
59
59
  # @api public
60
60
  def ext
@@ -77,7 +77,7 @@ module ShopifyAPI
77
77
  # map files to fixtures
78
78
  files.map do |file_name|
79
79
  fixture_name = File.basename(file_name)
80
- @cache[fixture_name] ||= Fixture.new(file_name)
80
+ @@cache[fixture_name] ||= Fixture.new(file_name)
81
81
  end
82
82
  end
83
83
 
@@ -94,7 +94,7 @@ module ShopifyAPI
94
94
  fixture_name = "#{name.to_s}.#{ext.to_s}"
95
95
  file_name = File.join(self.path, ext.to_s, fixture_name)
96
96
  return nil unless File.exists? file_name
97
- @cache[fixture_name] ||= Fixture.new(file_name)
97
+ @@cache[fixture_name] ||= Fixture.new(file_name)
98
98
  end
99
99
 
100
100
  # gets the current path to the fixtures
@@ -103,7 +103,7 @@ module ShopifyAPI
103
103
  # fixture_path = ShopifyAPI::Mock::Fixture.path
104
104
  # @api public
105
105
  def path
106
- @path ||= File.expand_path("../fixtures/", __FILE__)
106
+ @@path ||= File.expand_path("../fixtures/", __FILE__)
107
107
  end
108
108
 
109
109
  # sets the current fixtures path
@@ -113,9 +113,9 @@ module ShopifyAPI
113
113
  # ShopifyAPI::Mock::Fixture.path = File.join(Rails.root, "spec", "fixtures", "shopify")
114
114
  # @api public
115
115
  def path=(value)
116
- return @path if @path == value
117
- @path = value
118
- @cache = {}
116
+ return @@path if @@path == value
117
+ @@path = value
118
+ @@cache = {}
119
119
  end
120
120
  end
121
121
 
@@ -0,0 +1,13 @@
1
+ {
2
+ "application_charge": {
3
+ "price": "100.00",
4
+ "name": "Super Duper Expensive action",
5
+ "created_at": "2011-09-06T11:46:15-04:00",
6
+ "return_url": "http://super-duper.shopifyapps.com?charge_id=1007331646",
7
+ "updated_at": "2011-09-06T11:46:15-04:00",
8
+ "confirmation_url": "http://apple.myshopify.com/admin/subscriptions/confirm_application_charge/1007331646?signature=BAhpBD6pCjw%3D--ce8f74151dcf7c56ebbf2a15f7a2694533b46fd4",
9
+ "id": 1007331646,
10
+ "test": null,
11
+ "status": "pending"
12
+ }
13
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "recurring_application_charge": {
3
+ "price": "10.00",
4
+ "name": "Super Duper Plan",
5
+ "created_at": "2011-09-06T11:50:32-04:00",
6
+ "trial_days": 0,
7
+ "return_url": "http://super-duper.shopifyapps.com?charge_id=654381199",
8
+ "activated_on": null,
9
+ "updated_at": "2011-09-06T11:50:32-04:00",
10
+ "confirmation_url": "http://apple.myshopify.com/admin/subscriptions/confirm_recurring_application_charge/654381199?signature=BAhpBI8QASc%3D--2281aa5a8b56409b646a99312fdf3066c3e03b3e",
11
+ "id": 654381199,
12
+ "cancelled_on": null,
13
+ "trial_ends_on": null,
14
+ "billing_on": null,
15
+ "test": true,
16
+ "status": "pending"
17
+ }
18
+ }
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <application-charge>
3
+ <price type="decimal">100.0</price>
4
+ <name>Super Duper Expensive action</name>
5
+ <created-at type="datetime">2011-09-06T11:52:12-04:00</created-at>
6
+ <return-url>http://super-duper.shopifyapps.com</return-url>
7
+ <updated-at type="datetime">2011-09-06T11:52:12-04:00</updated-at>
8
+ <id type="integer">1007331651</id>
9
+ <test type="boolean" nil="true"></test>
10
+ <status>pending</status>
11
+ <confirmation-url>http://apple.myshopify.com/admin/subscriptions/confirm_application_charge/1007331651?signature=BAhpBEOpCjw%3D--373db9ba20ab12e32af89ebcd7274f9c461b16b2</confirmation-url>
12
+ </application-charge>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <recurring-application-charge>
3
+ <price type="decimal">10.0</price>
4
+ <name>Super Duper Plan</name>
5
+ <created-at type="datetime">2011-09-06T11:59:27-04:00</created-at>
6
+ <trial-days type="integer">0</trial-days>
7
+ <return-url>http://super-duper.shopifyapps.com</return-url>
8
+ <activated-on type="date" nil="true"></activated-on>
9
+ <updated-at type="datetime">2011-09-06T11:59:27-04:00</updated-at>
10
+ <id type="integer">654381205</id>
11
+ <cancelled-on type="date" nil="true"></cancelled-on>
12
+ <trial-ends-on type="date" nil="true"></trial-ends-on>
13
+ <billing-on type="date" nil="true"></billing-on>
14
+ <test type="boolean">true</test>
15
+ <status>pending</status>
16
+ <confirmation-url>http://apple.myshopify.com/admin/subscriptions/confirm_recurring_application_charge/654381205?signature=BAhpBJUQASc%3D--53e16e6658a181c4448475252e1282f3b01354eb</confirmation-url>
17
+ </recurring-application-charge>
@@ -7,8 +7,8 @@ module ShopifyAPI
7
7
  # @param [String] resource The path to the resource.
8
8
  # @param [String] response The response to provide when that URL is called
9
9
  # @return [FakeWeb] The FakeWeb object for the mocked response
10
- # @example Registering a response to the path "/orders.count.xml" with the response "hello world"
11
- # ShopifyAPI::Mock::Response.register :get, "orders/count.xml", "hello world"
10
+ # @example Registering a response to the path "/orders/count.xml" with the response "hello world"
11
+ # ShopifyAPI::Mock::Response.new :get, "orders/count.xml", "hello world"
12
12
  # @api public
13
13
  def initialize(method, resource, response)
14
14
  @@responses += FakeWeb.register_uri(
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "shopify-mock"
6
- s.version = "0.1.1"
6
+ s.version = "0.1.2"
7
7
  s.authors = ["Travis Haynes"]
8
8
  s.email = ["travis.j.haynes@gmail.com"]
9
9
  s.homepage = "https://github.com/travishaynes/shopify-mock"
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe ShopifyAPI::Mock::Fixture do
4
+
5
+ describe "#new" do
6
+ context "with invalid file name" do
7
+ it "should raise IOError" do
8
+ expect {ShopifyAPI::Mock::Fixture.new("invalid-file") }.should raise_error, IOError
9
+ end
10
+ end
11
+
12
+ context "with valid file name" do
13
+ before do
14
+ @file_name = File.expand_path("../../lib/shopify-mock/fixtures/json/orders.json", __FILE__)
15
+ @fixture = ShopifyAPI::Mock::Fixture.new(@file_name)
16
+ end
17
+ specify { @fixture.should be_a ShopifyAPI::Mock::Fixture }
18
+ end
19
+ end
20
+
21
+ describe "class methods" do
22
+ describe "#all" do
23
+ before { @all = ShopifyAPI::Mock::Fixture.all }
24
+ specify { @all.should be_kind_of Array }
25
+ specify { @all.length.should > 0 }
26
+ end
27
+
28
+ describe "#find" do
29
+ context "with a valid fixture name" do
30
+ before { @result = ShopifyAPI::Mock::Fixture.find :orders, :json }
31
+ specify { @result.should be_kind_of ShopifyAPI::Mock::Fixture }
32
+ end
33
+ context "with an invalid fixture name" do
34
+ before { @result = ShopifyAPI::Mock::Fixture.find :brown_chicken_brown_cow, :xml }
35
+ specify { @result.should be_nil }
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "instance methods" do
41
+ before(:all) do
42
+ @fixture = ShopifyAPI::Mock::Fixture.find :orders, :json
43
+ @original_data = @fixture.data
44
+ end
45
+
46
+ describe "#name" do
47
+ specify { @fixture.name.should be_a Symbol }
48
+ end
49
+
50
+ describe "#ext" do
51
+ specify { @fixture.ext.should be_a Symbol }
52
+ end
53
+
54
+ describe "#data" do
55
+ specify { @fixture.data.should_not be_empty }
56
+ end
57
+
58
+ describe "#data=" do
59
+ it "should override the original content" do
60
+ @fixture.data.should eq @original_data
61
+ @fixture.data = 'new'
62
+ @fixture.data.should eq 'new'
63
+ end
64
+ it "should reset to original content when set to nil" do
65
+ @fixture.data = nil
66
+ @fixture.data.should eq @original_data
67
+ end
68
+ end
69
+ end
70
+ end
@@ -13,17 +13,19 @@ describe :response do
13
13
  end
14
14
  end
15
15
 
16
- describe "#all" do
17
- subject { ShopifyAPI::Mock::Response.all }
18
- it { should be_kind_of Array }
19
- end
20
-
21
- describe "#clear" do
22
- it "should clear the responses" do
23
- ShopifyAPI::Mock::Response.new(:get, "/orders.json", @fixture)
24
- ShopifyAPI::Mock::Response.all.count.should > 0
25
- ShopifyAPI::Mock::Response.clear
26
- ShopifyAPI::Mock::Response.all.count.should eq 0
16
+ describe "class methods" do
17
+ describe "#all" do
18
+ subject { ShopifyAPI::Mock::Response.all }
19
+ it { should be_kind_of Array }
20
+ end
21
+
22
+ describe "#clear" do
23
+ it "should clear the responses" do
24
+ ShopifyAPI::Mock::Response.new(:get, "/orders.json", @fixture)
25
+ ShopifyAPI::Mock::Response.all.count.should > 0
26
+ ShopifyAPI::Mock::Response.clear
27
+ ShopifyAPI::Mock::Response.all.count.should eq 0
28
+ end
27
29
  end
28
30
  end
29
31
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify-mock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-08 00:00:00.000000000Z
12
+ date: 2011-09-09 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fakeweb
16
- requirement: &11793040 !ruby/object:Gem::Requirement
16
+ requirement: &23532560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.3.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *11793040
24
+ version_requirements: *23532560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &11792540 !ruby/object:Gem::Requirement
27
+ requirement: &23532060 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *11792540
35
+ version_requirements: *23532060
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &11792060 !ruby/object:Gem::Requirement
38
+ requirement: &23531580 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 0.8.7
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *11792060
46
+ version_requirements: *23531580
47
47
  description: ! 'This gem is used for testing Shopify apps without having to actually
48
48
  connect to
49
49
 
@@ -69,7 +69,8 @@ files:
69
69
  - Rakefile
70
70
  - lib/shopify-mock.rb
71
71
  - lib/shopify-mock/errors.rb
72
- - lib/shopify-mock/fixtures.rb
72
+ - lib/shopify-mock/fixture.rb
73
+ - lib/shopify-mock/fixtures/json/application_charges.json
73
74
  - lib/shopify-mock/fixtures/json/articles.json
74
75
  - lib/shopify-mock/fixtures/json/assets.json
75
76
  - lib/shopify-mock/fixtures/json/blogs.json
@@ -89,6 +90,7 @@ files:
89
90
  - lib/shopify-mock/fixtures/json/product_search_engines.json
90
91
  - lib/shopify-mock/fixtures/json/products.json
91
92
  - lib/shopify-mock/fixtures/json/provinces.json
93
+ - lib/shopify-mock/fixtures/json/recurring_application_charges.json
92
94
  - lib/shopify-mock/fixtures/json/redirects.json
93
95
  - lib/shopify-mock/fixtures/json/script_tags.json
94
96
  - lib/shopify-mock/fixtures/json/shop.json
@@ -98,6 +100,7 @@ files:
98
100
  - lib/shopify-mock/fixtures/json/transactions.json
99
101
  - lib/shopify-mock/fixtures/json/variants.json
100
102
  - lib/shopify-mock/fixtures/json/webhooks.json
103
+ - lib/shopify-mock/fixtures/xml/application_charges.xml
101
104
  - lib/shopify-mock/fixtures/xml/articles.xml
102
105
  - lib/shopify-mock/fixtures/xml/assets.xml
103
106
  - lib/shopify-mock/fixtures/xml/blogs.xml
@@ -117,6 +120,7 @@ files:
117
120
  - lib/shopify-mock/fixtures/xml/product_search_engines.xml
118
121
  - lib/shopify-mock/fixtures/xml/products.xml
119
122
  - lib/shopify-mock/fixtures/xml/provinces.xml
123
+ - lib/shopify-mock/fixtures/xml/recurring_application_charges.xml
120
124
  - lib/shopify-mock/fixtures/xml/redirects.xml
121
125
  - lib/shopify-mock/fixtures/xml/script_tags.xml
122
126
  - lib/shopify-mock/fixtures/xml/shop.xml
@@ -130,7 +134,7 @@ files:
130
134
  - lib/shopify-mock/urls.rb
131
135
  - shopify-mock.gemspec
132
136
  - spec/errors_spec.rb
133
- - spec/fixtures_spec.rb
137
+ - spec/fixture_spec.rb
134
138
  - spec/mock_spec.rb
135
139
  - spec/response_spec.rb
136
140
  - spec/spec_helper.rb
@@ -1,59 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ShopifyAPI::Mock::Fixture do
4
-
5
- describe "#new" do
6
- context "with invalid file name" do
7
- it "should raise IOError" do
8
- expect {ShopifyAPI::Mock::Fixture.new("invalid-file") }.should raise_error, IOError
9
- end
10
- end
11
-
12
- context "with valid file name" do
13
- before do
14
- @file_name = File.expand_path("../../lib/shopify-mock/fixtures/json/orders.json", __FILE__)
15
- @fixture = ShopifyAPI::Mock::Fixture.new(@file_name)
16
- end
17
- specify { @fixture.should be_a ShopifyAPI::Mock::Fixture }
18
- end
19
- end
20
-
21
- describe "#all" do
22
- before { @all = ShopifyAPI::Mock::Fixture.all }
23
- specify { @all.should be_kind_of Array }
24
- specify { @all.length.should > 0 }
25
- end
26
-
27
- describe "#find" do
28
- context "with a valid fixture name" do
29
- before { @result = ShopifyAPI::Mock::Fixture.find :orders, :json }
30
- specify { @result.should be_kind_of ShopifyAPI::Mock::Fixture }
31
- end
32
- context "with an invalid fixture name" do
33
- before { @result = ShopifyAPI::Mock::Fixture.find :brown_chicken_brown_cow, :xml }
34
- specify { @result.should be_nil }
35
- end
36
- end
37
-
38
- describe "#data" do
39
- before { @fixture = ShopifyAPI::Mock::Fixture.find :orders, :json }
40
- specify { @fixture.data.should_not be_empty }
41
- end
42
-
43
- describe "#data=" do
44
- before(:all) do
45
- @fixture = ShopifyAPI::Mock::Fixture.find :orders, :json
46
- @original_data = @fixture.data
47
- end
48
- it "should override the original content" do
49
- @fixture.data.should eq @original_data
50
- @fixture.data = 'new'
51
- @fixture.data.should eq 'new'
52
- end
53
- it "should reset to original content when set to nil" do
54
- @fixture.data = nil
55
- @fixture.data.should eq @original_data
56
- end
57
- end
58
-
59
- end