shopify-routes 0.0.4 → 0.0.5

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.
@@ -172,7 +172,7 @@ module ShopifyAPI
172
172
  if include?(:admin)
173
173
  # route to a shop's admin path
174
174
  r.match "*shop/admin" => r.redirect { |p,r|
175
- "https://#{shop_domain[:shop]}/admin"
175
+ "https://#{shop_domain(p[:shop])}/admin"
176
176
  },
177
177
  as: "admin"
178
178
  end
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ pry -r ./lib/shopify-routes -r ./spec/support/rails_app
@@ -12,9 +12,11 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
13
  gem.name = "shopify-routes"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "0.0.4"
15
+ gem.version = "0.0.5"
16
16
 
17
- gem.add_runtime_dependency "rails", ">= 3.0.0"
18
- gem.add_runtime_dependency "shopify_api", ">= 3.0.0"
19
- gem.add_development_dependency "rspec-rails", "~> 2.9.0"
17
+ gem.add_development_dependency "rspec-rails", "~> 2.9.0"
18
+ gem.add_development_dependency "pry", "~>0.9.9.4"
19
+
20
+ gem.add_runtime_dependency "rails", ">= 3.0.0"
21
+ gem.add_runtime_dependency "shopify_api", ">= 3.0.0"
20
22
  end
@@ -6,203 +6,201 @@ describe "ShopifyAPI.routes" do
6
6
  @domain = "domain.myshopify.com"
7
7
  end
8
8
 
9
- def find_route(name)
10
- @router.routes.find {|r| r.name == name }
11
- end
9
+ describe "redirect routes" do
12
10
 
13
- def redirect_for(resource, id = nil)
14
- route = find_route(resource)
15
- params = { :shop => @domain }
16
- params[:id] = id unless id.nil?
17
- route.app.path(params, nil)
18
- end
11
+ describe "brochure" do
12
+ subject { redirect_for :brochure }
13
+ it { should eq "http://www.shopify.com?ref=referrer" }
14
+ end
19
15
 
20
- def path_for(resource, id = nil)
21
- path = "https://#{@domain}/admin/#{resource}"
22
- path += "/#{id}" unless id.nil?
23
- path
24
- end
16
+ describe "signup" do
17
+ subject { redirect_for :signup }
18
+ it { should eq "https://app.shopify.com/services/signup?ref=referrer" }
19
+ end
25
20
 
26
- describe "redirect routes" do
21
+ describe "admin" do
22
+ subject { redirect_for :admin }
23
+ it { should eq "https://#{@domain}/admin" }
24
+ end
27
25
 
28
26
  describe "applications" do
29
- subject { redirect_for "applications" }
30
- it { should eq path_for "applications" }
27
+ subject { redirect_for :applications }
28
+ it { should eq path_for :applications }
31
29
  end
32
30
 
33
31
  describe "orders" do
34
- subject { redirect_for "orders" }
35
- it { should eq path_for "orders" }
32
+ subject { redirect_for :orders }
33
+ it { should eq path_for :orders }
36
34
  end
37
35
 
38
36
  describe "order" do
39
- subject { redirect_for "order", "1" }
40
- it { should eq path_for "orders", "1" }
37
+ subject { redirect_for :order, 1 }
38
+ it { should eq path_for :orders, "1" }
41
39
  end
42
40
 
43
41
  describe "customers" do
44
- subject { redirect_for "customers" }
45
- it { should eq path_for "customers" }
42
+ subject { redirect_for :customers }
43
+ it { should eq path_for :customers }
46
44
  end
47
45
 
48
46
  describe "customer" do
49
- subject { redirect_for "customer", "1" }
50
- it { should eq path_for "customers", "1" }
47
+ subject { redirect_for :customer, "1" }
48
+ it { should eq path_for :customers, "1" }
51
49
  end
52
50
 
53
51
  describe "new_customer" do
54
- subject { redirect_for "new_customer" }
55
- it { should eq path_for "customers", "new" }
52
+ subject { redirect_for :new_customer }
53
+ it { should eq path_for :customers, "new" }
56
54
  end
57
55
 
58
56
  describe "products" do
59
- subject { redirect_for "products" }
60
- it { should eq path_for "products" }
57
+ subject { redirect_for :products }
58
+ it { should eq path_for :products }
61
59
  end
62
60
 
63
61
  describe "product" do
64
- subject { redirect_for "product", "1" }
65
- it { should eq path_for "products", "1" }
62
+ subject { redirect_for :product, 1 }
63
+ it { should eq path_for :products, 1 }
66
64
  end
67
65
 
68
66
  describe "new_product" do
69
- subject { redirect_for "new_product" }
70
- it { should eq path_for "products", "new" }
67
+ subject { redirect_for :new_product }
68
+ it { should eq path_for :products, "new" }
71
69
  end
72
70
 
73
71
  describe "custom_collections" do
74
- subject { redirect_for "custom_collections" }
75
- it { should eq path_for "custom_collections" }
72
+ subject { redirect_for :custom_collections }
73
+ it { should eq path_for :custom_collections }
76
74
  end
77
75
 
78
76
  describe "custom_collection" do
79
- subject { redirect_for "custom_collection", "1" }
80
- it { should eq path_for "custom_collections", "1" }
77
+ subject { redirect_for :custom_collection, 1 }
78
+ it { should eq path_for :custom_collections, "1" }
81
79
  end
82
80
 
83
81
  describe "new_custom_collection" do
84
- subject { redirect_for "new_custom_collection" }
85
- it { should eq path_for "custom_collections", "new" }
82
+ subject { redirect_for :new_custom_collection }
83
+ it { should eq path_for :custom_collections, "new" }
86
84
  end
87
85
 
88
86
  describe "smart_collections" do
89
- subject { redirect_for "smart_collections" }
90
- it { should eq path_for "smart_collections" }
87
+ subject { redirect_for :smart_collections }
88
+ it { should eq path_for :smart_collections }
91
89
  end
92
90
 
93
91
  describe "smart_collection" do
94
- subject { redirect_for "smart_collection", "1" }
95
- it { should eq path_for "smart_collections", "1" }
92
+ subject { redirect_for :smart_collection, 1 }
93
+ it { should eq path_for :smart_collections, "1" }
96
94
  end
97
95
 
98
96
  describe "new_smart_collection" do
99
- subject { redirect_for "new_smart_collection" }
100
- it { should eq path_for "smart_collections", "new" }
97
+ subject { redirect_for :new_smart_collection }
98
+ it { should eq path_for :smart_collections, "new" }
101
99
  end
102
100
 
103
101
  describe "pages" do
104
- subject { redirect_for "pages" }
105
- it { should eq path_for "pages" }
102
+ subject { redirect_for :pages }
103
+ it { should eq path_for :pages }
106
104
  end
107
105
 
108
106
  describe "page" do
109
- subject { redirect_for "page", "1" }
110
- it { should eq path_for "pages", "1" }
107
+ subject { redirect_for :page, 1 }
108
+ it { should eq path_for :pages, "1" }
111
109
  end
112
110
 
113
111
  describe "new_page" do
114
- subject { redirect_for "new_page" }
115
- it { should eq path_for "pages", "new" }
112
+ subject { redirect_for :new_page }
113
+ it { should eq path_for :pages, "new" }
116
114
  end
117
115
 
118
116
  describe "blogs" do
119
- subject { redirect_for "blogs" }
120
- it { should eq path_for "blogs" }
117
+ subject { redirect_for :blogs }
118
+ it { should eq path_for :blogs }
121
119
  end
122
120
 
123
121
  describe "blog" do
124
- subject { redirect_for "blog", "1" }
125
- it { should eq path_for "blogs", "1" }
122
+ subject { redirect_for :blog, 1 }
123
+ it { should eq path_for :blogs, "1" }
126
124
  end
127
125
 
128
126
  describe "new_blog" do
129
- subject { redirect_for "new_blog" }
130
- it { should eq path_for "blogs", "new" }
127
+ subject { redirect_for :new_blog }
128
+ it { should eq path_for :blogs, "new" }
131
129
  end
132
130
 
133
131
  describe "navigation" do
134
- subject { redirect_for "navigation" }
135
- it { should eq path_for "links" }
132
+ subject { redirect_for :navigation }
133
+ it { should eq path_for :links }
136
134
  end
137
135
 
138
136
  describe "promotions" do
139
- subject { redirect_for "promotions" }
140
- it { should eq path_for "marketing" }
137
+ subject { redirect_for :promotions }
138
+ it { should eq path_for :marketing }
141
139
  end
142
140
 
143
141
  describe "themes" do
144
- subject { redirect_for "themes" }
145
- it { should eq path_for "themes" }
142
+ subject { redirect_for :themes }
143
+ it { should eq path_for :themes }
146
144
  end
147
145
 
148
146
  describe "theme" do
149
- subject { redirect_for "theme", "1" }
150
- it { should eq path_for "themes", "1" }
147
+ subject { redirect_for :theme, 1 }
148
+ it { should eq path_for :themes, "1" }
151
149
  end
152
150
 
153
151
  describe "theme_settings" do
154
- subject { redirect_for "theme_settings", "1" }
152
+ subject { redirect_for :theme_settings, "1" }
155
153
  it { should eq path_for "themes/1/settings" }
156
154
  end
157
155
 
158
156
  describe "general_settings" do
159
- subject { redirect_for "general_settings" }
160
- it { should eq path_for "general_preferences" }
157
+ subject { redirect_for :general_settings }
158
+ it { should eq path_for :general_preferences }
161
159
  end
162
160
 
163
161
  describe "regions" do
164
- subject { redirect_for "regions" }
165
- it { should eq path_for "countries" }
162
+ subject { redirect_for :regions }
163
+ it { should eq path_for :countries }
166
164
  end
167
165
 
168
166
  describe "checkout_and_payment" do
169
- subject { redirect_for "checkout_and_payment" }
170
- it { should eq path_for "payments" }
167
+ subject { redirect_for :checkout_and_payment }
168
+ it { should eq path_for :payments }
171
169
  end
172
170
 
173
171
  describe "shipping_rates" do
174
- subject { redirect_for "shipping_rates" }
175
- it { should eq path_for "shipping" }
172
+ subject { redirect_for :shipping_rates }
173
+ it { should eq path_for :shipping }
176
174
  end
177
175
 
178
176
  describe "weight_based_shipping_rate" do
179
- subject { redirect_for "weight_based_shipping_rate", "1" }
180
- it { should eq path_for "weight_based_shipping_rates", "1" }
177
+ subject { redirect_for :weight_based_shipping_rate, 1 }
178
+ it { should eq path_for :weight_based_shipping_rates, "1" }
181
179
  end
182
180
 
183
181
  describe "price_based_shipping_rate" do
184
- subject { redirect_for "price_based_shipping_rate", "1" }
185
- it { should eq path_for "price_based_shipping_rates", "1" }
182
+ subject { redirect_for :price_based_shipping_rate, 1 }
183
+ it { should eq path_for :price_based_shipping_rates, "1" }
186
184
  end
187
185
 
188
186
  describe "fulfillment_services" do
189
- subject { redirect_for "fulfillment_services" }
190
- it { should eq path_for "fulfillment_services" }
187
+ subject { redirect_for :fulfillment_services }
188
+ it { should eq path_for :fulfillment_services }
191
189
  end
192
190
 
193
191
  describe "notifications" do
194
- subject { redirect_for "notifications" }
195
- it { should eq path_for "notifications" }
192
+ subject { redirect_for :notifications }
193
+ it { should eq path_for :notifications }
196
194
  end
197
195
 
198
196
  describe "notification" do
199
- subject { redirect_for "notification", "1" }
200
- it { should eq path_for "notifications", "1" }
197
+ subject { redirect_for :notification, 1 }
198
+ it { should eq path_for :notifications, "1" }
201
199
  end
202
200
 
203
201
  describe "domains" do
204
- subject { redirect_for "domains" }
205
- it { should eq path_for "domains" }
202
+ subject { redirect_for :domains }
203
+ it { should eq path_for :domains }
206
204
  end
207
205
  end
208
206
  end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe "route helper methods" do
4
+ before do
5
+ @router = RailsApp::Application.routes
6
+ @domain = "domain.myshopify.com"
7
+ end
8
+
9
+ describe "#find_route" do
10
+ context "with a valid name" do
11
+ it "should return a Journey::Route" do
12
+ @router.routes.should_receive(:find).and_return(@router.routes.first)
13
+ # NOTE: the name is not important here, since it's mocked
14
+ find_route("brochure").should be_a Journey::Route
15
+ end
16
+ end
17
+
18
+ context "with an invalid name" do
19
+ it "should return nil" do
20
+ find_route("haveyouevernoticedthatweirdalandkennyghavethesamehaircut").should be_nil
21
+ end
22
+ end
23
+ end
24
+
25
+ describe "#redirect_for" do
26
+ context "without an id" do
27
+ subject { redirect_for :brochure }
28
+ it { should eq "http://www.shopify.com?ref=referrer" }
29
+ end
30
+
31
+ context "with an id" do
32
+ subject { redirect_for :products, 1 }
33
+ it { should eq "https://#{@domain}/admin/products/1" }
34
+ end
35
+ end
36
+
37
+ describe "#path_for" do
38
+ context "without an id" do
39
+ subject { path_for :a_resource }
40
+ it { should be_a String }
41
+ it { should =~ /https:\/\/#{@domain}\/admin\// }
42
+ it { should =~ /a_resource/ }
43
+ it { should_not =~ /a_resource\// }
44
+ end
45
+ context "with an id" do
46
+ subject { path_for :a_resource, "with_an_id" }
47
+ it { should be_a String }
48
+ it { should =~ /https:\/\/#{@domain}\/admin\// }
49
+ it { should =~ /a_resource\// }
50
+ it { should =~ /with_an_id/ }
51
+ end
52
+ end
53
+
54
+ end
@@ -17,5 +17,5 @@ Rails.env = 'test'
17
17
  RailsApp::Application.initialize!
18
18
 
19
19
  RailsApp::Application.routes.draw do
20
- ShopifyAPI.routes(self)
20
+ ShopifyAPI.routes self, :referrer => 'referrer'
21
21
  end
@@ -0,0 +1,16 @@
1
+ def find_route(name)
2
+ @router.routes.find {|r| r.name == name.to_s }
3
+ end
4
+
5
+ def redirect_for(resource, id = nil)
6
+ route = find_route(resource)
7
+ params = { :shop => @domain }
8
+ params[:id] = id unless id.nil?
9
+ route.app.path(params, nil)
10
+ end
11
+
12
+ def path_for(resource, id = nil)
13
+ path = "https://#{@domain}/admin/#{resource.to_s}"
14
+ path += "/#{id}" unless id.nil?
15
+ path
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify-routes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,19 +12,30 @@ cert_chain: []
12
12
  date: 2012-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rails
16
- requirement: &25042380 !ruby/object:Gem::Requirement
15
+ name: rspec-rails
16
+ requirement: &14499120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 3.0.0
22
- type: :runtime
21
+ version: 2.9.0
22
+ type: :development
23
23
  prerelease: false
24
- version_requirements: *25042380
24
+ version_requirements: *14499120
25
25
  - !ruby/object:Gem::Dependency
26
- name: shopify_api
27
- requirement: &25058280 !ruby/object:Gem::Requirement
26
+ name: pry
27
+ requirement: &14498440 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.9.4
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *14498440
36
+ - !ruby/object:Gem::Dependency
37
+ name: rails
38
+ requirement: &14497780 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,18 +43,18 @@ dependencies:
32
43
  version: 3.0.0
33
44
  type: :runtime
34
45
  prerelease: false
35
- version_requirements: *25058280
46
+ version_requirements: *14497780
36
47
  - !ruby/object:Gem::Dependency
37
- name: rspec-rails
38
- requirement: &25057820 !ruby/object:Gem::Requirement
48
+ name: shopify_api
49
+ requirement: &14497320 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
- - - ~>
52
+ - - ! '>='
42
53
  - !ruby/object:Gem::Version
43
- version: 2.9.0
44
- type: :development
54
+ version: 3.0.0
55
+ type: :runtime
45
56
  prerelease: false
46
- version_requirements: *25057820
57
+ version_requirements: *14497320
47
58
  description: Provides routes that redirect back to Shopify pages.
48
59
  email:
49
60
  - travis.j.haynes@gmail.com
@@ -59,10 +70,13 @@ files:
59
70
  - README.md
60
71
  - Rakefile
61
72
  - lib/shopify-routes.rb
73
+ - script/console
62
74
  - shopify-routes.gemspec
63
75
  - spec/lib/shopify-routes_spec.rb
76
+ - spec/routes_helper_spec.rb
64
77
  - spec/spec_helper.rb
65
78
  - spec/support/rails_app.rb
79
+ - spec/support/routes_helper.rb
66
80
  homepage: ''
67
81
  licenses: []
68
82
  post_install_message: