deas 0.35.0 → 0.36.0

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