deas 0.26.0 → 0.27.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.
@@ -96,7 +96,7 @@ class Deas::Server::Configuration
96
96
  setup do
97
97
  @initialized = false
98
98
  @other_initialized = false
99
- proxy = Deas::RouteProxy.new('TestViewHandler')
99
+ proxy = Deas::RouteProxy.new('EmptyViewHandler')
100
100
  @route = Deas::Route.new(:get, '/something', proxy)
101
101
  @router = Deas::Router.new
102
102
  @router.routes = [ @route ]
@@ -132,7 +132,7 @@ class Deas::Server::Configuration
132
132
 
133
133
  subject.validate!
134
134
 
135
- assert_equal TestViewHandler, @route.handler_class
135
+ assert_equal EmptyViewHandler, @route.handler_class
136
136
  end
137
137
 
138
138
  should "default the :erb :outvar setting in the SinatraApp it creates" do
@@ -12,7 +12,7 @@ module Deas::SinatraApp
12
12
  class UnitTests < Assert::Context
13
13
  desc "Deas::SinatraApp"
14
14
  setup do
15
- proxy = Deas::RouteProxy.new('TestViewHandler')
15
+ proxy = Deas::RouteProxy.new('EmptyViewHandler')
16
16
  @route = Deas::Route.new(:get, '/something', proxy)
17
17
  @router = Deas::Router.new
18
18
  @router.routes = [ @route ]
@@ -1,10 +1,9 @@
1
1
  require 'assert'
2
2
  require 'deas/sinatra_runner'
3
3
 
4
- require 'deas/runner'
4
+ require 'deas/deas_runner'
5
5
  require 'deas/template'
6
6
  require 'test/support/fake_sinatra_call'
7
- require 'test/support/normalized_params_spy'
8
7
  require 'test/support/view_handlers'
9
8
 
10
9
  class Deas::SinatraRunner
@@ -16,7 +15,7 @@ class Deas::SinatraRunner
16
15
  end
17
16
  subject{ @runner_class }
18
17
 
19
- should "be a Runner" do
18
+ should "be a `DeasRunner`" do
20
19
  assert subject < Deas::Runner
21
20
  end
22
21
 
@@ -25,32 +24,15 @@ class Deas::SinatraRunner
25
24
  class InitTests < UnitTests
26
25
  desc "when init"
27
26
  setup do
28
- @params = { 'value' => '1' }
29
- @norm_params_spy = Deas::Runner::NormalizedParamsSpy.new
30
- Assert.stub(NormalizedParams, :new){ |p| @norm_params_spy.new(p) }
31
-
32
27
  @fake_sinatra_call = FakeSinatraCall.new
33
- @runner = @runner_class.new(FlagViewHandler, @fake_sinatra_call)
28
+ @runner = @runner_class.new(DeasRunnerViewHandler, {
29
+ :sinatra_call => @fake_sinatra_call
30
+ })
34
31
  end
35
32
  subject{ @runner }
36
33
 
37
- should have_readers :app_settings
38
34
  should have_imeths :run
39
35
 
40
- should "get its settings from the sinatra call" do
41
- assert_equal @fake_sinatra_call.request, subject.request
42
- assert_equal @fake_sinatra_call.response, subject.response
43
- assert_equal @fake_sinatra_call.params, subject.params
44
- assert_equal @fake_sinatra_call.settings.logger, subject.logger
45
- assert_equal @fake_sinatra_call.settings.router, subject.router
46
- assert_equal @fake_sinatra_call.session, subject.session
47
- end
48
-
49
- should "call to normalize its params" do
50
- assert_equal @fake_sinatra_call.params, @norm_params_spy.params
51
- assert_true @norm_params_spy.value_called
52
- end
53
-
54
36
  should "call the sinatra_call's halt with" do
55
37
  return_value = catch(:halt){ subject.halt('test') }
56
38
  assert_equal [ 'test' ], return_value
@@ -84,8 +66,8 @@ class Deas::SinatraRunner
84
66
  end
85
67
 
86
68
  should "render the template with :view/:logger locals and the handler layouts" do
87
- exp_handler = FlagViewHandler.new(subject)
88
- exp_layouts = FlagViewHandler.layouts
69
+ exp_handler = DeasRunnerViewHandler.new(subject)
70
+ exp_layouts = DeasRunnerViewHandler.layouts
89
71
  exp_result = Deas::Template.new(@fake_sinatra_call, 'index', {
90
72
  :locals => {
91
73
  :view => exp_handler,
@@ -93,16 +75,23 @@ class Deas::SinatraRunner
93
75
  },
94
76
  :layout => exp_layouts
95
77
  }).render
96
-
97
78
  assert_equal exp_result, subject.render('index')
98
- end
99
79
 
100
- should "render partials with locals" do
101
- exp_result = Deas::Template::Partial.new(@fake_sinatra_call, 'info', {
102
- :some => 'locals'
80
+ exp_result = Deas::Template.new(@fake_sinatra_call, 'index', {
81
+ :locals => {
82
+ :view => 'a-view',
83
+ :some => 'thing',
84
+ :logger => @runner.logger
85
+ },
86
+ :layout => false
103
87
  }).render
104
-
105
- assert_equal exp_result, subject.partial('info', :some => 'locals')
88
+ assert_equal exp_result, subject.render('index', {
89
+ :layout => false,
90
+ :locals => {
91
+ :view => 'a-view',
92
+ :some => 'thing'
93
+ }
94
+ })
106
95
  end
107
96
 
108
97
  should "call the sinatra_call's send_file to set the send files" do
@@ -115,54 +104,4 @@ class Deas::SinatraRunner
115
104
 
116
105
  end
117
106
 
118
- class RunTests < InitTests
119
- desc "and run"
120
- setup do
121
- @return_value = @runner.run
122
- @handler = @runner.instance_variable_get("@handler")
123
- end
124
- subject{ @handler }
125
-
126
- should "run the before and after hooks" do
127
- assert_equal true, subject.before_hook_called
128
- assert_equal true, subject.after_hook_called
129
- end
130
-
131
- should "run the handler's init and run" do
132
- assert_equal true, subject.init_bang_called
133
- assert_equal true, subject.run_bang_called
134
- end
135
-
136
- should "return the handler's run! return value" do
137
- assert_equal true, @return_value
138
- end
139
-
140
- end
141
-
142
- class NormalizedParamsTests < UnitTests
143
- desc "NormalizedParams"
144
- setup do
145
- @norm_params_class = Deas::SinatraRunner::NormalizedParams
146
- end
147
-
148
- should "be a normalized params subclass" do
149
- assert @norm_params_class < Deas::Runner::NormalizedParams
150
- end
151
-
152
- should "not convert Tempfile param values to strings" do
153
- tempfile = Class.new(::Tempfile){ def initialize; end }.new
154
- params = normalized({
155
- 'attachment' => { :tempfile => tempfile }
156
- })
157
- assert_kind_of ::Tempfile, params['attachment']['tempfile']
158
- end
159
-
160
- private
161
-
162
- def normalized(params)
163
- @norm_params_class.new(params).value
164
- end
165
-
166
- end
167
-
168
107
  end
@@ -144,6 +144,11 @@ class Deas::Template
144
144
  assert_equal :"users/index/_listing", subject.name
145
145
  end
146
146
 
147
+ should "not add an underscore to it's template's basename if one already exists" do
148
+ partial = Deas::Template::Partial.new(@fake_sinatra_call, 'users/index/_listing')
149
+ assert_equal :"users/index/_listing", partial.name
150
+ end
151
+
147
152
  should "set it's locals option" do
148
153
  assert_equal({ :user => 'Joe Test' }, subject.options[:locals])
149
154
  end
@@ -2,7 +2,6 @@ require 'assert'
2
2
  require 'deas/test_runner'
3
3
 
4
4
  require 'rack/test'
5
- require 'deas/router'
6
5
  require 'deas/runner'
7
6
  require 'test/support/normalized_params_spy'
8
7
  require 'test/support/view_handlers'
@@ -16,7 +15,7 @@ class Deas::TestRunner
16
15
  end
17
16
  subject{ @runner_class }
18
17
 
19
- should "be a Runner" do
18
+ should "be a `Runner`" do
20
19
  assert subject < Deas::Runner
21
20
  end
22
21
 
@@ -26,31 +25,32 @@ class Deas::TestRunner
26
25
  desc "when init"
27
26
  setup do
28
27
  @params = { 'value' => '1' }
28
+ @args = {
29
+ :request => 'a-request',
30
+ :response => 'a-response',
31
+ :params => @params,
32
+ :logger => 'a-logger',
33
+ :router => 'a-router',
34
+ :session => 'a-session'
35
+ }
36
+
29
37
  @norm_params_spy = Deas::Runner::NormalizedParamsSpy.new
30
38
  Assert.stub(NormalizedParams, :new){ |p| @norm_params_spy.new(p) }
31
- @runner = @runner_class.new(TestRunnerViewHandler, :params => @params)
39
+
40
+ @runner = @runner_class.new(TestRunnerViewHandler, @args)
32
41
  end
33
42
  subject{ @runner }
34
43
 
35
- should have_readers :app_settings, :return_value
44
+ should have_readers :return_value
36
45
  should have_imeths :run
37
46
 
38
- should "know its app_settings" do
39
- assert_kind_of OpenStruct, subject.app_settings
40
- end
41
-
42
- should "default its settings" do
43
- assert_nil subject.request
44
- assert_nil subject.response
45
- assert_kind_of ::Hash, subject.params
46
- assert_kind_of Deas::NullLogger, subject.logger
47
- assert_kind_of Deas::Router, subject.router
48
- assert_nil subject.session
49
- end
50
-
51
- should "default its params" do
52
- runner = @runner_class.new(TestRunnerViewHandler)
53
- assert_equal ::Hash.new, runner.params
47
+ should "super its standard args" do
48
+ assert_equal 'a-request', subject.request
49
+ assert_equal 'a-response', subject.response
50
+ assert_equal @params, subject.params
51
+ assert_equal 'a-logger', subject.logger
52
+ assert_equal 'a-router', subject.router
53
+ assert_equal 'a-session', subject.session
54
54
  end
55
55
 
56
56
  should "call to normalize its params" do
@@ -58,8 +58,8 @@ class Deas::TestRunner
58
58
  assert_true @norm_params_spy.value_called
59
59
  end
60
60
 
61
- should "write any non-standard settings on the handler" do
62
- runner = Deas::TestRunner.new(TestRunnerViewHandler, :custom_value => 42)
61
+ should "write any non-standard args on the handler" do
62
+ runner = @runner_class.new(TestRunnerViewHandler, :custom_value => 42)
63
63
  assert_equal 42, runner.handler.custom_value
64
64
  end
65
65
 
@@ -124,16 +124,6 @@ class Deas::TestRunner
124
124
  assert_equal 'some/template', value.template_name
125
125
  end
126
126
 
127
- should "build partial args if partial is called" do
128
- value = subject.partial 'some/partial', :some => 'locals'
129
- assert_kind_of PartialArgs, value
130
- [:partial_name, :locals].each do |meth|
131
- assert_respond_to meth, value
132
- end
133
- assert_equal 'some/partial', value.partial_name
134
- assert_equal({:some => 'locals'}, value.locals)
135
- end
136
-
137
127
  should "build send file args if send file is called" do
138
128
  value = subject.send_file 'some/file/path'
139
129
  assert_kind_of SendFileArgs, value
@@ -10,21 +10,64 @@ module Deas::ViewHandler
10
10
 
11
11
  desc "Deas::ViewHandler"
12
12
  setup do
13
- @handler = test_handler(TestViewHandler)
13
+ @handler_class = TestViewHandler
14
+ end
15
+ subject{ @handler_class }
16
+
17
+ should have_imeths :layout, :layouts
18
+ should have_imeths :before, :prepend_before, :before_callbacks
19
+ should have_imeths :after, :prepend_after, :after_callbacks
20
+ should have_imeths :before_init, :prepend_before_init, :before_init_callbacks
21
+ should have_imeths :after_init, :prepend_after_init, :after_init_callbacks
22
+ should have_imeths :before_run, :prepend_before_run, :before_run_callbacks
23
+ should have_imeths :after_run, :prepend_after_run, :after_run_callbacks
24
+
25
+ should "specify layouts" do
26
+ subject.layout 'layouts/app'
27
+ assert_equal ['layouts/app'], subject.layouts
28
+
29
+ subject.layouts 'layouts/web', 'layouts/search'
30
+ assert_equal ['layouts/app', 'layouts/web', 'layouts/search'], subject.layouts
31
+ end
32
+
33
+ end
34
+
35
+ class InitTests < UnitTests
36
+ desc "when init"
37
+ setup do
38
+ @handler = test_handler(@handler_class)
14
39
  end
15
40
  subject{ @handler }
16
41
 
17
42
  should have_imeths :init, :init!, :run, :run!
18
- should have_cmeths :layout, :layouts
19
- should have_cmeths :before, :prepend_before, :before_callbacks
20
- should have_cmeths :after, :prepend_after, :after_callbacks
21
- should have_cmeths :before_init, :prepend_before_init, :before_init_callbacks
22
- should have_cmeths :after_init, :prepend_after_init, :after_init_callbacks
23
- should have_cmeths :before_run, :prepend_before_run, :before_run_callbacks
24
- should have_cmeths :after_run, :prepend_after_run, :after_run_callbacks
43
+
44
+ should "have called `init!` and it's callbacks" do
45
+ assert_equal true, subject.before_init_called
46
+ assert_equal true, subject.second_before_init_called
47
+ assert_equal true, subject.init_bang_called
48
+ assert_equal true, subject.after_init_called
49
+ end
50
+
51
+ should "not have called `run!` or it's callbacks when initialized" do
52
+ assert_nil subject.before_run_called
53
+ assert_nil subject.run_bang_called
54
+ assert_nil subject.after_run_called
55
+ end
56
+
57
+ end
58
+
59
+ class RunTests < InitTests
60
+ desc "and run"
61
+
62
+ should "call `run!` and it's callbacks" do
63
+ subject.run
64
+ assert_equal true, subject.before_run_called
65
+ assert_equal true, subject.run_bang_called
66
+ assert_equal true, subject.after_run_called
67
+ end
25
68
 
26
69
  should "complain if run! is not overwritten" do
27
- assert_raises(NotImplementedError){ subject.run! }
70
+ assert_raises(NotImplementedError){ test_runner(EmptyViewHandler).run }
28
71
  end
29
72
 
30
73
  should "render templates" do
@@ -33,32 +76,15 @@ module Deas::ViewHandler
33
76
  assert_equal({ :some => :option }, render_args.options)
34
77
  end
35
78
 
36
- should "render partial templates" do
37
- partial_args = test_runner(PartialViewHandler).run
38
- assert_equal "my_partial", partial_args.partial_name
39
- assert_equal({:some => 'locals'}, partial_args.locals)
40
- end
41
-
42
79
  should "send files" do
43
80
  send_file_args = test_runner(SendFileViewHandler).run
44
81
  assert_equal "my_file.txt", send_file_args.file_path
45
82
  assert_equal({ :some => :option }, send_file_args.options)
46
83
  end
47
84
 
48
- should "allow specifying the layouts using #layout or #layouts" do
49
- handler_class = Class.new{ include Deas::ViewHandler }
50
-
51
- handler_class.layout 'layouts/app'
52
- assert_equal ['layouts/app'], handler_class.layouts
53
-
54
- handler_class.layouts 'layouts/web', 'layouts/search'
55
- assert_equal ['layouts/app', 'layouts/web', 'layouts/search'], handler_class.layouts
56
- end
57
-
58
85
  end
59
86
 
60
87
  class CallbackTests < UnitTests
61
- desc "callbacks"
62
88
  setup do
63
89
  @proc1 = proc{ '1' }
64
90
  @proc2 = proc{ '2' }
@@ -139,34 +165,6 @@ module Deas::ViewHandler
139
165
 
140
166
  end
141
167
 
142
- class WithMethodFlagsTests < UnitTests
143
- setup do
144
- @handler = test_handler(FlagViewHandler)
145
- end
146
-
147
- should "have called `init!` and it's callbacks" do
148
- assert_equal true, subject.before_init_called
149
- assert_equal true, subject.second_before_init_called
150
- assert_equal true, subject.init_bang_called
151
- assert_equal true, subject.after_init_called
152
- end
153
-
154
- should "not have called `run!` or it's callbacks when initialized" do
155
- assert_nil subject.before_run_called
156
- assert_nil subject.run_bang_called
157
- assert_nil subject.after_run_called
158
- end
159
-
160
- should "call `run!` and it's callbacks when it's `run`" do
161
- subject.run
162
-
163
- assert_equal true, subject.before_run_called
164
- assert_equal true, subject.run_bang_called
165
- assert_equal true, subject.after_run_called
166
- end
167
-
168
- end
169
-
170
168
  class HaltTests < UnitTests
171
169
  desc "halt"
172
170
 
@@ -226,4 +224,26 @@ module Deas::ViewHandler
226
224
 
227
225
  end
228
226
 
227
+ class TestViewHandler
228
+ include Deas::ViewHandler
229
+
230
+ attr_reader :before_called, :after_called
231
+ attr_reader :before_init_called, :second_before_init_called
232
+ attr_reader :init_bang_called, :after_init_called
233
+ attr_reader :before_run_called, :run_bang_called, :after_run_called
234
+
235
+ before{ @before_called = true }
236
+ after{ @after_called = true }
237
+
238
+ before_init{ @before_init_called = true }
239
+ before_init{ @second_before_init_called = true }
240
+ after_init{ @after_init_called = true }
241
+ before_run{ @before_run_called = true }
242
+ after_run{ @after_run_called = true }
243
+
244
+ def init!; @init_bang_called = true; end
245
+ def run!; @run_bang_called = true; end
246
+
247
+ end
248
+
229
249
  end