deas 0.35.0 → 0.36.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c4676b93d32b63bba485b4137c0983725b08ad0b
4
+ data.tar.gz: 4047d05f7b72713a7a999b19d50d808366180bfb
5
+ SHA512:
6
+ metadata.gz: a3eb2b3a29678f4de02bfe510b4801669740130773c74e377770e3f9cd8df08b3a088aca928eda3555a37c34a1fa232a2b5b01dafff2d6038f1addcf29e80c34
7
+ data.tar.gz: 7ae9da0d7f9a45110001b374fd9a23fd10b18232f3da04a90462ac0f406cac335eb5cd9746e9cf9fd444596c5278d69b20b4f895389a1046a0295d0e7cfe8889
data/deas.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
22
22
  gem.add_dependency("rack", ["~> 1.5"])
23
23
  gem.add_dependency("sinatra", ["~> 1.4"])
24
24
 
25
- gem.add_development_dependency("assert", ["~> 2.12"])
25
+ gem.add_development_dependency("assert", ["~> 2.15"])
26
26
  gem.add_development_dependency("assert-rack-test")
27
27
 
28
28
  end
@@ -8,10 +8,15 @@ module Deas
8
8
 
9
9
  attr_reader :handler_class_name, :handler_class
10
10
 
11
- def initialize(path = nil, &block)
11
+ def initialize(router, path = nil, &block)
12
12
  @handler_class = Class.new do
13
13
  include Deas::ViewHandler
14
14
 
15
+ def self.router; @router; end
16
+ def self.router=(value)
17
+ @router = value
18
+ end
19
+
15
20
  def self.redirect_path; @redirect_path; end
16
21
  def self.redirect_path=(value)
17
22
  @redirect_path = value
@@ -22,7 +27,9 @@ module Deas
22
27
  attr_reader :redirect_path
23
28
 
24
29
  def init!
25
- @redirect_path = self.instance_eval(&self.class.redirect_path)
30
+ @redirect_path = self.class.router.prepend_base_url(
31
+ self.instance_eval(&self.class.redirect_path)
32
+ )
26
33
  end
27
34
 
28
35
  def run!
@@ -31,6 +38,7 @@ module Deas
31
38
 
32
39
  end
33
40
 
41
+ @handler_class.router = router
34
42
  @handler_class.redirect_path = if path.nil?
35
43
  block
36
44
  elsif path.kind_of?(Deas::Url)
data/lib/deas/router.rb CHANGED
@@ -30,10 +30,14 @@ module Deas
30
30
  end
31
31
 
32
32
  def base_url(value = nil)
33
- @base_url = value if !value.nil?
33
+ set_base_url(value) if !value.nil?
34
34
  @base_url
35
35
  end
36
36
 
37
+ def set_base_url(value)
38
+ @base_url = value
39
+ end
40
+
37
41
  def prepend_base_url(url_path)
38
42
  "#{base_url}#{url_path}"
39
43
  end
@@ -98,7 +102,7 @@ module Deas
98
102
  end
99
103
 
100
104
  require 'deas/redirect_proxy'
101
- proxy = Deas::RedirectProxy.new(to_url || to_path, &block)
105
+ proxy = Deas::RedirectProxy.new(self, to_url || to_path, &block)
102
106
  proxies = { self.default_request_type_name => proxy }
103
107
 
104
108
  from_url = self.urls[from_path]
@@ -32,13 +32,6 @@ module Deas
32
32
  @response_value = catch(:halt){ self.handler.init; nil }
33
33
  end
34
34
 
35
- # TODO: remove eventually
36
- def return_value
37
- warn "calling `return_value` on a test runner is deprecated - " \
38
- "switch to `response_value` instead"
39
- self.response_value
40
- end
41
-
42
35
  def run
43
36
  @response_value ||= catch(:halt){ self.handler.run }
44
37
  end
data/lib/deas/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Deas
2
- VERSION = "0.35.0"
2
+ VERSION = "0.36.0"
3
3
  end
@@ -11,7 +11,9 @@ class Deas::RedirectProxy
11
11
  class UnitTests < Assert::Context
12
12
  desc "Deas::RedirectProxy"
13
13
  setup do
14
- @proxy = Deas::RedirectProxy.new('/somewhere')
14
+ @base_url = Factory.url
15
+ @router = Deas::Router.new
16
+ @proxy = Deas::RedirectProxy.new(@router, '/somewhere')
15
17
  end
16
18
  subject{ @proxy }
17
19
 
@@ -30,7 +32,7 @@ class Deas::RedirectProxy
30
32
  end
31
33
  subject{ @handler_class }
32
34
 
33
- should have_accessor :redirect_path
35
+ should have_accessor :router, :redirect_path
34
36
  should have_imeth :name
35
37
 
36
38
  should "be a view handler" do
@@ -39,22 +41,26 @@ class Deas::RedirectProxy
39
41
  end
40
42
  end
41
43
 
42
- should "know its name" do
43
- assert_equal 'Deas::RedirectHandler', subject.name
44
+ should "store the given router" do
45
+ assert_equal @router, subject.router
44
46
  end
45
47
 
46
48
  should "store its redirect path as a proc" do
47
49
  assert_kind_of Proc, subject.redirect_path
48
50
 
49
51
  url = Deas::Url.new(:some_thing, '/:some/:thing')
50
- handler_class = Deas::RedirectProxy.new(url).handler_class
52
+ handler_class = Deas::RedirectProxy.new(@router, url).handler_class
51
53
  assert_kind_of Proc, handler_class.redirect_path
52
54
 
53
55
  path_proc = proc{ '/somewhere' }
54
- handler_class = Deas::RedirectProxy.new(&path_proc).handler_class
56
+ handler_class = Deas::RedirectProxy.new(@router, &path_proc).handler_class
55
57
  assert_kind_of Proc, handler_class.redirect_path
56
58
  end
57
59
 
60
+ should "know its name" do
61
+ assert_equal 'Deas::RedirectHandler', subject.name
62
+ end
63
+
58
64
  end
59
65
 
60
66
  class HandlerTests < HandlerClassTests
@@ -67,24 +73,45 @@ class Deas::RedirectProxy
67
73
  should have_reader :redirect_path
68
74
 
69
75
  should "know its redir path if from a path string" do
70
- assert_equal '/somewhere', subject.redirect_path
76
+ exp_path = '/somewhere'
77
+ assert_equal exp_path, subject.redirect_path
78
+
79
+ @router.base_url(@base_url)
80
+ handler = test_handler(@handler_class)
81
+ exp = @router.prepend_base_url(exp_path)
82
+ assert_equal exp, handler.redirect_path
71
83
  end
72
84
 
73
85
  should "know its redir path if from Url" do
74
86
  url = Deas::Url.new(:some_thing, '/:some/:thing')
75
- handler_class = Deas::RedirectProxy.new(url).handler_class
87
+ handler_class = Deas::RedirectProxy.new(@router, url).handler_class
76
88
  handler = test_handler(handler_class, {
77
89
  :params => { 'some' => 'a', 'thing' => 'goose' }
78
90
  })
79
91
 
80
- assert_equal '/a/goose', handler.redirect_path
92
+ exp_path = '/a/goose'
93
+ assert_equal exp_path, handler.redirect_path
94
+
95
+ @router.base_url(@base_url)
96
+ handler = test_handler(handler_class, {
97
+ :params => { 'some' => 'a', 'thing' => 'goose' }
98
+ })
99
+ exp = @router.prepend_base_url(exp_path)
100
+ assert_equal exp, handler.redirect_path
81
101
  end
82
102
 
83
103
  should "know its redir path if from a block" do
84
- handler_class = Deas::RedirectProxy.new(&proc{'/from-block-arg'}).handler_class
104
+ path_proc = proc{ '/from-block-arg' }
105
+ handler_class = Deas::RedirectProxy.new(@router, &path_proc).handler_class
85
106
  handler = test_handler(handler_class)
86
107
 
87
- assert_equal '/from-block-arg', handler.redirect_path
108
+ exp_path = '/from-block-arg'
109
+ assert_equal exp_path , handler.redirect_path
110
+
111
+ @router.base_url(@base_url)
112
+ handler = test_handler(handler_class)
113
+ exp = @router.prepend_base_url(exp_path)
114
+ assert_equal exp, handler.redirect_path
88
115
  end
89
116
 
90
117
  end
@@ -3,6 +3,7 @@ require 'deas/router'
3
3
 
4
4
  require 'deas/exceptions'
5
5
  require 'deas/route'
6
+ require 'deas/test_helpers'
6
7
  require 'test/support/view_handlers'
7
8
 
8
9
  class Deas::Router
@@ -21,9 +22,12 @@ class Deas::Router
21
22
  end
22
23
 
23
24
  class InitTests < UnitTests
25
+ include Deas::TestHelpers
26
+
24
27
  desc "when init"
25
28
  setup do
26
- @router = @router_class.new
29
+ @base_url = a_base_url = [Factory.url, nil].choice
30
+ @router = @router_class.new{ base_url a_base_url }
27
31
  end
28
32
  subject{ @router }
29
33
 
@@ -31,7 +35,7 @@ class Deas::Router
31
35
  should have_readers :escape_query_value_proc
32
36
 
33
37
  should have_imeths :view_handler_ns, :escape_query_value
34
- should have_imeths :base_url, :prepend_base_url
38
+ should have_imeths :base_url, :set_base_url, :prepend_base_url
35
39
  should have_imeths :url, :url_for
36
40
  should have_imeths :default_request_type_name, :add_request_type
37
41
  should have_imeths :request_type_name
@@ -39,18 +43,19 @@ class Deas::Router
39
43
  should have_imeths :route, :redirect
40
44
 
41
45
  should "default its settings" do
42
- assert_nil subject.view_handler_ns
43
- assert_nil subject.base_url
44
- assert_empty subject.request_types
45
- assert_empty subject.urls
46
- assert_empty subject.routes
46
+ router = @router_class.new
47
+ assert_nil router.view_handler_ns
48
+ assert_nil router.base_url
49
+ assert_empty router.request_types
50
+ assert_empty router.urls
51
+ assert_empty router.routes
47
52
 
48
53
  exp = @router_class::DEFAULT_REQUEST_TYPE_NAME
49
- assert_equal exp, subject.default_request_type_name
54
+ assert_equal exp, router.default_request_type_name
50
55
 
51
56
  value = "#%&?"
52
57
  exp = Rack::Utils.escape(value)
53
- assert_equal exp, subject.escape_query_value_proc.call(value)
58
+ assert_equal exp, router.escape_query_value_proc.call(value)
54
59
  end
55
60
 
56
61
  should "set a view handler namespace" do
@@ -69,9 +74,16 @@ class Deas::Router
69
74
  should "set a base url" do
70
75
  subject.base_url(exp = Factory.url)
71
76
  assert_equal exp, subject.base_url
77
+
78
+ subject.base_url(nil)
79
+ assert_not_nil subject.base_url
80
+
81
+ subject.set_base_url(nil)
82
+ assert_nil subject.base_url
72
83
  end
73
84
 
74
85
  should "prepend the base url to any url path" do
86
+ subject.set_base_url(nil)
75
87
  url_path = Factory.path
76
88
  base_url = Factory.url
77
89
 
@@ -94,11 +106,17 @@ class Deas::Router
94
106
  should "prepend the base url when adding redirects" do
95
107
  url = Factory.url
96
108
  subject.base_url url
97
- path = Factory.path
98
- redirect = subject.redirect(path, Factory.path)
109
+ path1 = Factory.path
110
+ path2 = Factory.path
111
+ redirect = subject.redirect(path1, path2)
99
112
 
100
- exp_path = subject.prepend_base_url(path)
101
- assert_equal exp_path, redirect.path
113
+ exp = subject.prepend_base_url(path1)
114
+ assert_equal exp, redirect.path
115
+
116
+ proxy = redirect.handler_proxies[subject.default_request_type_name]
117
+ handler = test_handler(proxy.handler_class)
118
+ exp = subject.prepend_base_url(path2)
119
+ assert_equal exp, handler.redirect_path
102
120
  end
103
121
 
104
122
  should "set a default request type name" do
@@ -174,7 +192,7 @@ class Deas::Router
174
192
  route = subject.routes.last
175
193
  assert_instance_of Deas::Route, route
176
194
  assert_equal @method, route.method
177
- assert_equal @path1, route.path
195
+ assert_equal subject.prepend_base_url(@path1), route.path
178
196
 
179
197
  proxies = route.handler_proxies
180
198
  assert_kind_of HandlerProxies, proxies
@@ -220,12 +238,16 @@ class Deas::Router
220
238
 
221
239
  route = subject.routes.last
222
240
  assert_instance_of Deas::Route, route
223
- assert_equal :get, route.method
224
- assert_equal @path1, route.path
241
+ assert_equal :get, route.method
242
+ assert_equal subject.prepend_base_url(@path1), route.path
225
243
 
226
244
  proxy = route.handler_proxies[subject.default_request_type_name]
227
245
  assert_kind_of Deas::RedirectProxy, proxy
228
246
  assert_equal 'Deas::RedirectHandler', proxy.handler_class_name
247
+
248
+ handler = test_handler(proxy.handler_class)
249
+ exp = subject.prepend_base_url(@path2)
250
+ assert_equal exp, handler.redirect_path
229
251
  end
230
252
 
231
253
  end
@@ -261,13 +283,13 @@ class Deas::Router
261
283
  end
262
284
 
263
285
  should "build a path for a url given params" do
264
- exp_path = "/info/now"
286
+ exp_path = subject.prepend_base_url("/info/now")
265
287
  assert_equal exp_path, subject.url_for(:get_info, :for => 'now')
266
288
  assert_equal exp_path, subject.url_for(:get_info, 'now')
267
289
  end
268
290
 
269
291
  should "'squash' duplicate forward-slashes when building urls" do
270
- exp_path = "/info/now"
292
+ exp_path = subject.prepend_base_url("/info/now")
271
293
  assert_equal exp_path, subject.url_for(:get_info, :for => '/now')
272
294
  assert_equal exp_path, subject.url_for(:get_info, '/now')
273
295
  end
@@ -289,7 +311,8 @@ class Deas::Router
289
311
  url = subject.urls[:get_info]
290
312
  route = subject.routes.last
291
313
 
292
- assert_equal url.path, route.path
314
+ exp = subject.prepend_base_url(url.path)
315
+ assert_equal exp, route.path
293
316
  end
294
317
 
295
318
  should "route using a url name instead of a path" do
@@ -297,7 +320,8 @@ class Deas::Router
297
320
  url = subject.urls[:get_info]
298
321
  route = subject.routes.last
299
322
 
300
- assert_equal url.path, route.path
323
+ exp = subject.prepend_base_url(url.path)
324
+ assert_equal exp, route.path
301
325
  end
302
326
 
303
327
  should "prepend the base url when building named urls" do
@@ -46,7 +46,6 @@ class Deas::TestRunner
46
46
 
47
47
  should have_readers :response_value
48
48
  should have_imeths :run
49
- should have_imeths :return_value # TODO: deprecated
50
49
 
51
50
  should "raise an invalid error when not passed a view handler" do
52
51
  assert_raises(Deas::InvalidServiceHandlerError) do
@@ -92,13 +91,6 @@ class Deas::TestRunner
92
91
  assert_equal subject.handler.run!, subject.response_value
93
92
  end
94
93
 
95
- # TODO: deprecated
96
- should "alias its response value at `return_value`" do
97
- assert_equal subject.response_value, subject.return_value
98
- subject.run
99
- assert_equal subject.response_value, subject.return_value
100
- end
101
-
102
94
  should "build halt args if halt is called" do
103
95
  value = catch(:halt){ subject.halt }
104
96
  assert_kind_of HaltArgs, value
metadata CHANGED
@@ -1,117 +1,101 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: deas
3
- version: !ruby/object:Gem::Version
4
- hash: 147
5
- prerelease:
6
- segments:
7
- - 0
8
- - 35
9
- - 0
10
- version: 0.35.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.36.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Kelly Redding
14
8
  - Collin Redding
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2015-06-24 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ~>
26
- - !ruby/object:Gem::Version
27
- hash: 13
28
- segments:
29
- - 1
30
- - 1
31
- version: "1.1"
12
+ date: 2015-08-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ns-options
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.1'
32
21
  - - ">="
33
- - !ruby/object:Gem::Version
34
- hash: 27
35
- segments:
36
- - 1
37
- - 1
38
- - 4
22
+ - !ruby/object:Gem::Version
39
23
  version: 1.1.4
40
24
  type: :runtime
41
- name: ns-options
42
- version_requirements: *id001
43
25
  prerelease: false
44
- - !ruby/object:Gem::Dependency
45
- requirement: &id002 !ruby/object:Gem::Requirement
46
- none: false
47
- requirements:
48
- - - ~>
49
- - !ruby/object:Gem::Version
50
- hash: 5
51
- segments:
52
- - 1
53
- - 5
54
- version: "1.5"
55
- type: :runtime
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '1.1'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.4
34
+ - !ruby/object:Gem::Dependency
56
35
  name: rack
57
- version_requirements: *id002
58
- prerelease: false
59
- - !ruby/object:Gem::Dependency
60
- requirement: &id003 !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ~>
64
- - !ruby/object:Gem::Version
65
- hash: 7
66
- segments:
67
- - 1
68
- - 4
69
- version: "1.4"
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.5'
70
41
  type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ - !ruby/object:Gem::Dependency
71
49
  name: sinatra
72
- version_requirements: *id003
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.4'
55
+ type: :runtime
73
56
  prerelease: false
74
- - !ruby/object:Gem::Dependency
75
- requirement: &id004 !ruby/object:Gem::Requirement
76
- none: false
77
- requirements:
78
- - - ~>
79
- - !ruby/object:Gem::Version
80
- hash: 27
81
- segments:
82
- - 2
83
- - 12
84
- version: "2.12"
85
- type: :development
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.4'
62
+ - !ruby/object:Gem::Dependency
86
63
  name: assert
87
- version_requirements: *id004
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.15'
69
+ type: :development
88
70
  prerelease: false
89
- - !ruby/object:Gem::Dependency
90
- requirement: &id005 !ruby/object:Gem::Requirement
91
- none: false
92
- requirements:
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.15'
76
+ - !ruby/object:Gem::Dependency
77
+ name: assert-rack-test
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
93
80
  - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 3
96
- segments:
97
- - 0
98
- version: "0"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
99
83
  type: :development
100
- name: assert-rack-test
101
- version_requirements: *id005
102
84
  prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
103
90
  description: Handler-based web framework powered by Sinatra
104
- email:
91
+ email:
105
92
  - kelly@kellyredding.com
106
93
  - collin.redding@me.com
107
94
  executables: []
108
-
109
95
  extensions: []
110
-
111
96
  extra_rdoc_files: []
112
-
113
- files:
114
- - .gitignore
97
+ files:
98
+ - ".gitignore"
115
99
  - Gemfile
116
100
  - LICENSE.txt
117
101
  - README.md
@@ -177,39 +161,30 @@ files:
177
161
  - test/unit/view_handler_tests.rb
178
162
  - tmp/.gitkeep
179
163
  homepage: http://github.com/redding/deas
180
- licenses:
164
+ licenses:
181
165
  - MIT
166
+ metadata: {}
182
167
  post_install_message:
183
168
  rdoc_options: []
184
-
185
- require_paths:
169
+ require_paths:
186
170
  - lib
187
- required_ruby_version: !ruby/object:Gem::Requirement
188
- none: false
189
- requirements:
171
+ required_ruby_version: !ruby/object:Gem::Requirement
172
+ requirements:
190
173
  - - ">="
191
- - !ruby/object:Gem::Version
192
- hash: 3
193
- segments:
194
- - 0
195
- version: "0"
196
- required_rubygems_version: !ruby/object:Gem::Requirement
197
- none: false
198
- requirements:
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
199
178
  - - ">="
200
- - !ruby/object:Gem::Version
201
- hash: 3
202
- segments:
203
- - 0
204
- version: "0"
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
205
181
  requirements: []
206
-
207
182
  rubyforge_project:
208
- rubygems_version: 1.8.25
183
+ rubygems_version: 2.4.5
209
184
  signing_key:
210
- specification_version: 3
185
+ specification_version: 4
211
186
  summary: Handler-based web framework powered by Sinatra
212
- test_files:
187
+ test_files:
213
188
  - test/helper.rb
214
189
  - test/support/factory.rb
215
190
  - test/support/fake_sinatra_call.rb