deas 0.26.0 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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