shopify-routes 0.0.3 → 0.0.4

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.
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: