shopify-routes 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/.travis.yml ADDED
@@ -0,0 +1 @@
1
+ rvm: 1.9.3
data/Rakefile CHANGED
@@ -1,2 +1,8 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+
5
+ task :default => :spec
6
+
7
+ desc "Run specs"
8
+ RSpec::Core::RakeTask.new
@@ -58,8 +58,9 @@ module ShopifyAPI
58
58
  # @param [String] path The path for the route
59
59
  # @param [Array] actions List of actions to draw for this route
60
60
  # @param [String] nom Alias for the route if the path name does not suffice
61
+ # @param [String] suffix An optional suffix to include at the end of the redirect URI
61
62
  # @api private
62
- def match(path, actions, nom = path)
63
+ def match(path, actions, nom = path, suffix = "")
63
64
 
64
65
  # only draw this route if it's included
65
66
  return unless include?(path)
@@ -67,8 +68,8 @@ module ShopifyAPI
67
68
  actions.each do |action|
68
69
 
69
70
  # create the route, and it's name
70
- route = "*shop/admin/#{path.to_s}"
71
- name = nom.to_s
71
+ route = "*shop/admin/#{path.to_s}"
72
+ name = nom.to_s
72
73
 
73
74
  case action
74
75
 
@@ -81,6 +82,7 @@ module ShopifyAPI
81
82
  when :new
82
83
  route << "/new"
83
84
  name = "new_#{name.singularize}"
85
+ suffix = "/new"
84
86
 
85
87
  # custom routes
86
88
  else
@@ -91,7 +93,12 @@ module ShopifyAPI
91
93
  end
92
94
 
93
95
  # draw the route
94
- match_admin_path route => path, as: name
96
+ options = {
97
+ route => path,
98
+ :as => name
99
+ }
100
+
101
+ match_admin_path options, suffix
95
102
  end
96
103
 
97
104
  end
@@ -102,7 +109,7 @@ module ShopifyAPI
102
109
  # @param [String] resource The name of the resource - plural or singular
103
110
  # @param [ActionDispatch::Routing::RouteSet] The router to add the matches
104
111
  # @api private
105
- def match_admin_path(options = {})
112
+ def match_admin_path(options = {}, suffix = "")
106
113
 
107
114
  # use the router from the options, or the cached one
108
115
  router = options[:router] || @router
@@ -126,7 +133,7 @@ module ShopifyAPI
126
133
  uri << "/#{params[:id]}" if params.include?(:id)
127
134
 
128
135
  # return the redirect URI
129
- uri
136
+ uri + suffix
130
137
  },
131
138
 
132
139
  :as => options[:as]
@@ -182,7 +189,7 @@ module ShopifyAPI
182
189
  match :links, [:index], "navigation"
183
190
  match :marketing, [:index], "promotions"
184
191
  match :themes, [:index, :show]
185
- match :themes, [":id/settings"], "theme_settings"
192
+ match :themes, [":id/settings"], "theme_settings", "/settings"
186
193
  match :general_preferences, [:index], "general_settings"
187
194
  match :countries, [:index, :show, :new], "regions"
188
195
  match :payments, [:index], "checkout_and_payment"
@@ -12,7 +12,9 @@ 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.3"
15
+ gem.version = "0.0.4"
16
16
 
17
- gem.add_runtime_dependency "shopify_api", ">= 3.0.0"
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"
18
20
  end
@@ -0,0 +1,208 @@
1
+ require 'spec_helper'
2
+
3
+ describe "ShopifyAPI.routes" do
4
+ before do
5
+ @router = RailsApp::Application.routes
6
+ @domain = "domain.myshopify.com"
7
+ end
8
+
9
+ def find_route(name)
10
+ @router.routes.find {|r| r.name == name }
11
+ end
12
+
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
19
+
20
+ def path_for(resource, id = nil)
21
+ path = "https://#{@domain}/admin/#{resource}"
22
+ path += "/#{id}" unless id.nil?
23
+ path
24
+ end
25
+
26
+ describe "redirect routes" do
27
+
28
+ describe "applications" do
29
+ subject { redirect_for "applications" }
30
+ it { should eq path_for "applications" }
31
+ end
32
+
33
+ describe "orders" do
34
+ subject { redirect_for "orders" }
35
+ it { should eq path_for "orders" }
36
+ end
37
+
38
+ describe "order" do
39
+ subject { redirect_for "order", "1" }
40
+ it { should eq path_for "orders", "1" }
41
+ end
42
+
43
+ describe "customers" do
44
+ subject { redirect_for "customers" }
45
+ it { should eq path_for "customers" }
46
+ end
47
+
48
+ describe "customer" do
49
+ subject { redirect_for "customer", "1" }
50
+ it { should eq path_for "customers", "1" }
51
+ end
52
+
53
+ describe "new_customer" do
54
+ subject { redirect_for "new_customer" }
55
+ it { should eq path_for "customers", "new" }
56
+ end
57
+
58
+ describe "products" do
59
+ subject { redirect_for "products" }
60
+ it { should eq path_for "products" }
61
+ end
62
+
63
+ describe "product" do
64
+ subject { redirect_for "product", "1" }
65
+ it { should eq path_for "products", "1" }
66
+ end
67
+
68
+ describe "new_product" do
69
+ subject { redirect_for "new_product" }
70
+ it { should eq path_for "products", "new" }
71
+ end
72
+
73
+ describe "custom_collections" do
74
+ subject { redirect_for "custom_collections" }
75
+ it { should eq path_for "custom_collections" }
76
+ end
77
+
78
+ describe "custom_collection" do
79
+ subject { redirect_for "custom_collection", "1" }
80
+ it { should eq path_for "custom_collections", "1" }
81
+ end
82
+
83
+ describe "new_custom_collection" do
84
+ subject { redirect_for "new_custom_collection" }
85
+ it { should eq path_for "custom_collections", "new" }
86
+ end
87
+
88
+ describe "smart_collections" do
89
+ subject { redirect_for "smart_collections" }
90
+ it { should eq path_for "smart_collections" }
91
+ end
92
+
93
+ describe "smart_collection" do
94
+ subject { redirect_for "smart_collection", "1" }
95
+ it { should eq path_for "smart_collections", "1" }
96
+ end
97
+
98
+ describe "new_smart_collection" do
99
+ subject { redirect_for "new_smart_collection" }
100
+ it { should eq path_for "smart_collections", "new" }
101
+ end
102
+
103
+ describe "pages" do
104
+ subject { redirect_for "pages" }
105
+ it { should eq path_for "pages" }
106
+ end
107
+
108
+ describe "page" do
109
+ subject { redirect_for "page", "1" }
110
+ it { should eq path_for "pages", "1" }
111
+ end
112
+
113
+ describe "new_page" do
114
+ subject { redirect_for "new_page" }
115
+ it { should eq path_for "pages", "new" }
116
+ end
117
+
118
+ describe "blogs" do
119
+ subject { redirect_for "blogs" }
120
+ it { should eq path_for "blogs" }
121
+ end
122
+
123
+ describe "blog" do
124
+ subject { redirect_for "blog", "1" }
125
+ it { should eq path_for "blogs", "1" }
126
+ end
127
+
128
+ describe "new_blog" do
129
+ subject { redirect_for "new_blog" }
130
+ it { should eq path_for "blogs", "new" }
131
+ end
132
+
133
+ describe "navigation" do
134
+ subject { redirect_for "navigation" }
135
+ it { should eq path_for "links" }
136
+ end
137
+
138
+ describe "promotions" do
139
+ subject { redirect_for "promotions" }
140
+ it { should eq path_for "marketing" }
141
+ end
142
+
143
+ describe "themes" do
144
+ subject { redirect_for "themes" }
145
+ it { should eq path_for "themes" }
146
+ end
147
+
148
+ describe "theme" do
149
+ subject { redirect_for "theme", "1" }
150
+ it { should eq path_for "themes", "1" }
151
+ end
152
+
153
+ describe "theme_settings" do
154
+ subject { redirect_for "theme_settings", "1" }
155
+ it { should eq path_for "themes/1/settings" }
156
+ end
157
+
158
+ describe "general_settings" do
159
+ subject { redirect_for "general_settings" }
160
+ it { should eq path_for "general_preferences" }
161
+ end
162
+
163
+ describe "regions" do
164
+ subject { redirect_for "regions" }
165
+ it { should eq path_for "countries" }
166
+ end
167
+
168
+ describe "checkout_and_payment" do
169
+ subject { redirect_for "checkout_and_payment" }
170
+ it { should eq path_for "payments" }
171
+ end
172
+
173
+ describe "shipping_rates" do
174
+ subject { redirect_for "shipping_rates" }
175
+ it { should eq path_for "shipping" }
176
+ end
177
+
178
+ 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" }
181
+ end
182
+
183
+ 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" }
186
+ end
187
+
188
+ describe "fulfillment_services" do
189
+ subject { redirect_for "fulfillment_services" }
190
+ it { should eq path_for "fulfillment_services" }
191
+ end
192
+
193
+ describe "notifications" do
194
+ subject { redirect_for "notifications" }
195
+ it { should eq path_for "notifications" }
196
+ end
197
+
198
+ describe "notification" do
199
+ subject { redirect_for "notification", "1" }
200
+ it { should eq path_for "notifications", "1" }
201
+ end
202
+
203
+ describe "domains" do
204
+ subject { redirect_for "domains" }
205
+ it { should eq path_for "domains" }
206
+ end
207
+ end
208
+ end
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'shopify-routes'
4
+
5
+ # load all the support files
6
+ Dir["spec/support/**/*.rb"].each { |f| require File.expand_path(f) }
7
+ require 'rspec/rails' # this has to be loaded after the support files
8
+
9
+ RSpec.configure do |config|
10
+ config.mock_with :rspec
11
+ end
@@ -0,0 +1,21 @@
1
+ require 'rails'
2
+ require "action_controller/railtie"
3
+
4
+ module RailsApp
5
+ # Provides a Rails application environment to use when running the specs
6
+ class Application < Rails::Application
7
+ config.encoding = 'utf-8'
8
+ end
9
+
10
+ Application.configure do
11
+ config.active_support.deprecation = :stderr
12
+ config.logger = Logger.new(STDOUT)
13
+ end
14
+ end
15
+
16
+ Rails.env = 'test'
17
+ RailsApp::Application.initialize!
18
+
19
+ RailsApp::Application.routes.draw do
20
+ ShopifyAPI.routes(self)
21
+ 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.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-24 00:00:00.000000000 Z
12
+ date: 2012-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &25042380 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *25042380
14
25
  - !ruby/object:Gem::Dependency
15
26
  name: shopify_api
16
- requirement: &20192260 !ruby/object:Gem::Requirement
27
+ requirement: &25058280 !ruby/object:Gem::Requirement
17
28
  none: false
18
29
  requirements:
19
30
  - - ! '>='
@@ -21,7 +32,18 @@ dependencies:
21
32
  version: 3.0.0
22
33
  type: :runtime
23
34
  prerelease: false
24
- version_requirements: *20192260
35
+ version_requirements: *25058280
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec-rails
38
+ requirement: &25057820 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 2.9.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *25057820
25
47
  description: Provides routes that redirect back to Shopify pages.
26
48
  email:
27
49
  - travis.j.haynes@gmail.com
@@ -30,12 +52,17 @@ extensions: []
30
52
  extra_rdoc_files: []
31
53
  files:
32
54
  - .gitignore
55
+ - .rspec
56
+ - .travis.yml
33
57
  - Gemfile
34
58
  - LICENSE
35
59
  - README.md
36
60
  - Rakefile
37
61
  - lib/shopify-routes.rb
38
62
  - shopify-routes.gemspec
63
+ - spec/lib/shopify-routes_spec.rb
64
+ - spec/spec_helper.rb
65
+ - spec/support/rails_app.rb
39
66
  homepage: ''
40
67
  licenses: []
41
68
  post_install_message: