deas 0.30.0 → 0.31.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.
@@ -18,22 +18,6 @@ module Deas
18
18
  response_data
19
19
  end
20
20
 
21
- def render(template_name, locals = nil)
22
- source_render(self.template_source, template_name, locals)
23
- end
24
-
25
- def source_render(source, template_name, locals = nil)
26
- source.render(template_name, self.handler, locals || {})
27
- end
28
-
29
- def partial(template_name, locals = nil)
30
- source_partial(self.template_source, template_name, locals)
31
- end
32
-
33
- def source_partial(source, template_name, locals = nil)
34
- source.partial(template_name, locals || {})
35
- end
36
-
37
21
  private
38
22
 
39
23
  def run_callbacks(callbacks)
data/lib/deas/runner.rb CHANGED
@@ -35,12 +35,27 @@ module Deas
35
35
  def content_type(*args); raise NotImplementedError; end
36
36
  def status(*args); raise NotImplementedError; end
37
37
  def headers(*args); raise NotImplementedError; end
38
- def render(*args); raise NotImplementedError; end
39
- def source_render(*args); raise NotImplementedError; end
40
- def partial(*args); raise NotImplementedError; end
41
- def source_partial(*args); raise NotImplementedError; end
42
38
  def send_file(*args); raise NotImplementedError; end
43
39
 
40
+ # the render methods are used by both the deas and test runners
41
+ # so we implement here
42
+
43
+ def render(template_name, locals = nil)
44
+ source_render(self.template_source, template_name, locals)
45
+ end
46
+
47
+ def source_render(source, template_name, locals = nil)
48
+ source.render(template_name, self.handler, locals || {})
49
+ end
50
+
51
+ def partial(template_name, locals = nil)
52
+ source_partial(self.template_source, template_name, locals)
53
+ end
54
+
55
+ def source_partial(source, template_name, locals = nil)
56
+ source.partial(template_name, locals || {})
57
+ end
58
+
44
59
  class NormalizedParams
45
60
 
46
61
  attr_reader :value
@@ -1,16 +1,20 @@
1
+ require 'rack/request'
2
+ require 'rack/response'
1
3
  require 'deas/test_runner'
2
4
 
3
5
  module Deas
4
6
 
5
7
  module TestHelpers
6
8
 
7
- module_function
8
-
9
- def test_runner(handler_class, args=nil)
9
+ def test_runner(handler_class, args = nil)
10
+ args ||= {}
11
+ args[:request] ||= Rack::Request.new({})
12
+ args[:response] ||= Rack::Response.new
13
+ args[:session] ||= args[:request].session
10
14
  TestRunner.new(handler_class, args)
11
15
  end
12
16
 
13
- def test_handler(handler_class, args=nil)
17
+ def test_handler(handler_class, args = nil)
14
18
  test_runner(handler_class, args).handler
15
19
  end
16
20
 
@@ -75,30 +75,21 @@ module Deas
75
75
  end
76
76
  HeadersArgs = Struct.new(:value)
77
77
 
78
- def render(template_name, locals = nil)
79
- RenderArgs.new(template_name, locals)
78
+ def send_file(file_path, options = nil, &block)
79
+ SendFileArgs.new(file_path, options, block)
80
80
  end
81
- RenderArgs = Struct.new(:template_name, :locals)
81
+ SendFileArgs = Struct.new(:file_path, :options, :block)
82
82
 
83
83
  def source_render(source, template_name, locals = nil)
84
- SourceRenderArgs.new(source, template_name, locals)
85
- end
86
- SourceRenderArgs = Struct.new(:source, :template_name, :locals)
87
-
88
- def partial(template_name, locals = nil)
89
- PartialArgs.new(template_name, locals)
84
+ super # render the markup and discard it
85
+ RenderArgs.new(source, template_name, locals)
90
86
  end
91
- PartialArgs = RenderArgs
87
+ RenderArgs = Struct.new(:source, :template_name, :locals)
92
88
 
93
89
  def source_partial(source, template_name, locals = nil)
94
- SourcePartialArgs.new(source, template_name, locals)
90
+ super # render the markup and discard it
91
+ RenderArgs.new(source, template_name, locals)
95
92
  end
96
- SourcePartialArgs = SourceRenderArgs
97
-
98
- def send_file(file_path, options = nil, &block)
99
- SendFileArgs.new(file_path, options, block)
100
- end
101
- SendFileArgs = Struct.new(:file_path, :options, :block)
102
93
 
103
94
  class NormalizedParams < Deas::Runner::NormalizedParams
104
95
  def file_type?(value)
data/lib/deas/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Deas
2
- VERSION = "0.30.0"
2
+ VERSION = "0.31.0"
3
3
  end
@@ -35,40 +35,6 @@ class DeasRunnerViewHandler
35
35
 
36
36
  end
37
37
 
38
- class RenderViewHandler
39
- include Deas::ViewHandler
40
-
41
- def run!
42
- render "my_template", :some => 'local'
43
- end
44
- end
45
-
46
- class SourceRenderViewHandler
47
- include Deas::ViewHandler
48
-
49
- def run!
50
- source = Deas::TemplateSource.new(Factory.path)
51
- source_render source, "my_template", :some => 'local'
52
- end
53
- end
54
-
55
- class PartialViewHandler
56
- include Deas::ViewHandler
57
-
58
- def run!
59
- partial "my_partial", :some => 'local'
60
- end
61
- end
62
-
63
- class SourcePartialViewHandler
64
- include Deas::ViewHandler
65
-
66
- def run!
67
- source = Deas::TemplateSource.new(Factory.path)
68
- source_partial source, "my_partial", :some => 'local'
69
- end
70
- end
71
-
72
38
  class SendFileViewHandler
73
39
  include Deas::ViewHandler
74
40
 
@@ -95,90 +95,4 @@ class Deas::DeasRunner
95
95
 
96
96
  end
97
97
 
98
- class RenderSetupTests < InitTests
99
- setup do
100
- @template_name = Factory.path
101
- @locals = { Factory.string => Factory.string }
102
- end
103
-
104
- end
105
-
106
- class RenderTests < RenderSetupTests
107
- desc "render method"
108
- setup do
109
- @render_args = nil
110
- Assert.stub(@runner.template_source, :render){ |*args| @render_args = args }
111
- end
112
-
113
- should "call to its template source render method" do
114
- subject.render(@template_name, @locals)
115
- exp = [@template_name, subject.handler, @locals]
116
- assert_equal exp, @render_args
117
-
118
- subject.render(@template_name)
119
- exp = [@template_name, subject.handler, {}]
120
- assert_equal exp, @render_args
121
- end
122
-
123
- end
124
-
125
- class SourceRenderTests < RenderSetupTests
126
- desc "source render method"
127
- setup do
128
- @source_render_args = nil
129
- @source = Deas::TemplateSource.new(Factory.path)
130
- Assert.stub(@source, :render){ |*args| @source_render_args = args }
131
- end
132
-
133
- should "call to the given source's render method" do
134
- subject.source_render(@source, @template_name, @locals)
135
- exp = [@template_name, subject.handler, @locals]
136
- assert_equal exp, @source_render_args
137
-
138
- subject.source_render(@source, @template_name)
139
- exp = [@template_name, subject.handler, {}]
140
- assert_equal exp, @source_render_args
141
- end
142
-
143
- end
144
-
145
- class PartialTests < RenderSetupTests
146
- desc "partial method"
147
- setup do
148
- @partial_args = nil
149
- Assert.stub(@runner.template_source, :partial){ |*args| @partial_args = args }
150
- end
151
-
152
- should "call to its template source partial method" do
153
- subject.partial(@template_name, @locals)
154
- exp = [@template_name, @locals]
155
- assert_equal exp, @partial_args
156
-
157
- subject.partial(@template_name)
158
- exp = [@template_name, {}]
159
- assert_equal exp, @partial_args
160
- end
161
-
162
- end
163
-
164
- class SourcePartialTests < RenderSetupTests
165
- desc "source partial method"
166
- setup do
167
- @source_partial_args = nil
168
- @source = Deas::TemplateSource.new(Factory.path)
169
- Assert.stub(@source, :partial){ |*args| @source_partial_args = args }
170
- end
171
-
172
- should "call to the given source's partial method" do
173
- subject.source_partial(@source, @template_name, @locals)
174
- exp = [@template_name, @locals]
175
- assert_equal exp, @source_partial_args
176
-
177
- subject.source_partial(@source, @template_name)
178
- exp = [@template_name, {}]
179
- assert_equal exp, @source_partial_args
180
- end
181
-
182
- end
183
-
184
98
  end
@@ -45,16 +45,12 @@ class Deas::Runner
45
45
  assert_kind_of Deas::NullTemplateSource, subject.template_source
46
46
  end
47
47
 
48
- should "not implement any actions" do
48
+ should "not implement its non-rendering actions" do
49
49
  assert_raises(NotImplementedError){ subject.halt }
50
50
  assert_raises(NotImplementedError){ subject.redirect }
51
51
  assert_raises(NotImplementedError){ subject.content_type }
52
52
  assert_raises(NotImplementedError){ subject.status }
53
53
  assert_raises(NotImplementedError){ subject.headers }
54
- assert_raises(NotImplementedError){ subject.render }
55
- assert_raises(NotImplementedError){ subject.source_render }
56
- assert_raises(NotImplementedError){ subject.partial }
57
- assert_raises(NotImplementedError){ subject.source_partial }
58
54
  assert_raises(NotImplementedError){ subject.send_file }
59
55
  end
60
56
 
@@ -125,4 +121,90 @@ class Deas::Runner
125
121
 
126
122
  end
127
123
 
124
+ class RenderSetupTests < InitTests
125
+ setup do
126
+ @template_name = Factory.path
127
+ @locals = { Factory.string => Factory.string }
128
+ end
129
+
130
+ end
131
+
132
+ class RenderTests < RenderSetupTests
133
+ desc "render method"
134
+ setup do
135
+ @render_args = nil
136
+ Assert.stub(@runner.template_source, :render){ |*args| @render_args = args }
137
+ end
138
+
139
+ should "call to its template source render method" do
140
+ subject.render(@template_name, @locals)
141
+ exp = [@template_name, subject.handler, @locals]
142
+ assert_equal exp, @render_args
143
+
144
+ subject.render(@template_name)
145
+ exp = [@template_name, subject.handler, {}]
146
+ assert_equal exp, @render_args
147
+ end
148
+
149
+ end
150
+
151
+ class SourceRenderTests < RenderSetupTests
152
+ desc "source render method"
153
+ setup do
154
+ @source_render_args = nil
155
+ @source = Deas::TemplateSource.new(Factory.path)
156
+ Assert.stub(@source, :render){ |*args| @source_render_args = args }
157
+ end
158
+
159
+ should "call to the given source's render method" do
160
+ subject.source_render(@source, @template_name, @locals)
161
+ exp = [@template_name, subject.handler, @locals]
162
+ assert_equal exp, @source_render_args
163
+
164
+ subject.source_render(@source, @template_name)
165
+ exp = [@template_name, subject.handler, {}]
166
+ assert_equal exp, @source_render_args
167
+ end
168
+
169
+ end
170
+
171
+ class PartialTests < RenderSetupTests
172
+ desc "partial method"
173
+ setup do
174
+ @partial_args = nil
175
+ Assert.stub(@runner.template_source, :partial){ |*args| @partial_args = args }
176
+ end
177
+
178
+ should "call to its template source partial method" do
179
+ subject.partial(@template_name, @locals)
180
+ exp = [@template_name, @locals]
181
+ assert_equal exp, @partial_args
182
+
183
+ subject.partial(@template_name)
184
+ exp = [@template_name, {}]
185
+ assert_equal exp, @partial_args
186
+ end
187
+
188
+ end
189
+
190
+ class SourcePartialTests < RenderSetupTests
191
+ desc "source partial method"
192
+ setup do
193
+ @source_partial_args = nil
194
+ @source = Deas::TemplateSource.new(Factory.path)
195
+ Assert.stub(@source, :partial){ |*args| @source_partial_args = args }
196
+ end
197
+
198
+ should "call to the given source's partial method" do
199
+ subject.source_partial(@source, @template_name, @locals)
200
+ exp = [@template_name, @locals]
201
+ assert_equal exp, @source_partial_args
202
+
203
+ subject.source_partial(@source, @template_name)
204
+ exp = [@template_name, {}]
205
+ assert_equal exp, @source_partial_args
206
+ end
207
+
208
+ end
209
+
128
210
  end
@@ -0,0 +1,53 @@
1
+ require 'assert'
2
+ require 'deas/test_helpers'
3
+
4
+ require 'rack/request'
5
+ require 'rack/response'
6
+ require 'deas/view_handler'
7
+
8
+ module Deas::TestHelpers
9
+
10
+ class UnitTests < Assert::Context
11
+ desc "Deas::TestHelpers"
12
+ setup do
13
+ @test_helpers = Deas::TestHelpers
14
+ end
15
+ subject{ @test_helpers }
16
+
17
+ end
18
+
19
+ class MixinTests < UnitTests
20
+ desc "as a mixin"
21
+ setup do
22
+ context_class = Class.new{ include Deas::TestHelpers }
23
+ @context = context_class.new
24
+ end
25
+ subject{ @context }
26
+
27
+ should have_imeths :test_runner, :test_handler
28
+
29
+ end
30
+
31
+ class HandlerTestRunnerTests < MixinTests
32
+ desc "for handler testing"
33
+ setup do
34
+ @handler_class = Class.new{ include Deas::ViewHandler }
35
+ @runner = @context.test_runner(@handler_class)
36
+ @handler = @context.test_handler(@handler_class)
37
+ end
38
+
39
+ should "build a test runner for a given handler" do
40
+ assert_kind_of ::Deas::TestRunner, @runner
41
+ assert_kind_of Rack::Request, @runner.request
42
+ assert_kind_of Rack::Response, @runner.response
43
+ assert_equal @runner.request.session, @runner.session
44
+ end
45
+
46
+ should "return an initialized handler instance" do
47
+ assert_kind_of @handler_class, @handler
48
+ assert_equal @runner.handler, @handler
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -133,71 +133,72 @@ class Deas::TestRunner
133
133
  assert_equal exp_val, value.value
134
134
  end
135
135
 
136
- should "build render args if render is called" do
137
- template_name = Factory.path
138
- locals = { Factory.string => Factory.string }
139
- args = subject.render template_name, locals
136
+ should "build send file args if send file is called" do
137
+ path = Factory.path
138
+ args = subject.send_file path
140
139
 
141
- assert_kind_of RenderArgs, args
142
- [:template_name, :locals].each do |meth|
140
+ assert_kind_of SendFileArgs, args
141
+ [:file_path, :options, :block].each do |meth|
143
142
  assert_respond_to meth, args
144
143
  end
145
- assert_equal template_name, args.template_name
146
- assert_equal locals, args.locals
144
+ assert_equal path, args.file_path
147
145
  end
148
146
 
149
- should "build source render args if source source render is called" do
150
- source = Deas::TemplateSource.new(Factory.path)
151
- template_name = Factory.path
152
- locals = { Factory.string => Factory.string }
153
- args = subject.source_render source, template_name, locals
147
+ end
154
148
 
155
- assert_kind_of SourceRenderArgs, args
156
- [:source, :template_name, :locals].each do |meth|
157
- assert_respond_to meth, args
158
- end
159
- assert_equal source, args.source
160
- assert_equal template_name, args.template_name
161
- assert_equal locals, args.locals
149
+ class RenderSetupTests < InitTests
150
+ setup do
151
+ @template_name = Factory.path
152
+ @locals = { Factory.string => Factory.string }
153
+ @source = Deas::TemplateSource.new(Factory.path)
162
154
  end
163
155
 
164
- should "build partial args if partial is called" do
165
- template_name = Factory.path
166
- locals = { Factory.string => Factory.string }
167
- args = subject.partial template_name, locals
156
+ end
168
157
 
169
- assert_kind_of PartialArgs, args
170
- [:template_name, :locals].each do |meth|
171
- assert_respond_to meth, args
172
- end
173
- assert_equal template_name, args.template_name
174
- assert_equal locals, args.locals
158
+ class SourceRenderTests < RenderSetupTests
159
+ desc "source render method"
160
+ setup do
161
+ @source_render_args = nil
162
+ Assert.stub(@source, :render){ |*args| @source_render_args = args }
175
163
  end
176
164
 
177
- should "build source partial args if source partial is called" do
178
- source = Deas::TemplateSource.new(Factory.path)
179
- template_name = Factory.path
180
- locals = { Factory.string => Factory.string }
181
- args = subject.source_partial source, template_name, locals
165
+ should "render the template, discard its output and build render args" do
166
+ args = subject.source_render(@source, @template_name, @locals)
182
167
 
183
- assert_kind_of SourcePartialArgs, args
168
+ exp = [@template_name, subject.handler, @locals]
169
+ assert_equal exp, @source_render_args
170
+
171
+ assert_kind_of RenderArgs, args
184
172
  [:source, :template_name, :locals].each do |meth|
185
173
  assert_respond_to meth, args
186
174
  end
187
- assert_equal source, args.source
188
- assert_equal template_name, args.template_name
189
- assert_equal locals, args.locals
175
+ assert_equal @source, args.source
176
+ assert_equal @template_name, args.template_name
177
+ assert_equal @locals, args.locals
190
178
  end
191
179
 
192
- should "build send file args if send file is called" do
193
- path = Factory.path
194
- args = subject.send_file path
180
+ end
195
181
 
196
- assert_kind_of SendFileArgs, args
197
- [:file_path, :options, :block].each do |meth|
182
+ class SourcePartialTests < RenderSetupTests
183
+ desc "source partial method"
184
+ setup do
185
+ @source_partial_args = nil
186
+ Assert.stub(@source, :partial){ |*args| @source_partial_args = args }
187
+ end
188
+
189
+ should "render the template, discard its output build render args" do
190
+ args = subject.source_partial(@source, @template_name, @locals)
191
+
192
+ exp = [@template_name, @locals]
193
+ assert_equal exp, @source_partial_args
194
+
195
+ assert_kind_of RenderArgs, args
196
+ [:source, :template_name, :locals].each do |meth|
198
197
  assert_respond_to meth, args
199
198
  end
200
- assert_equal path, args.file_path
199
+ assert_equal @source, args.source
200
+ assert_equal @template_name, args.template_name
201
+ assert_equal @locals, args.locals
201
202
  end
202
203
 
203
204
  end
@@ -37,7 +37,8 @@ module Deas::ViewHandler
37
37
  class InitTests < UnitTests
38
38
  desc "when init"
39
39
  setup do
40
- @handler = test_handler(@handler_class)
40
+ @runner = test_runner(@handler_class)
41
+ @handler = @runner.handler
41
42
  end
42
43
  subject{ @handler }
43
44
 
@@ -72,36 +73,46 @@ module Deas::ViewHandler
72
73
  assert_raises(NotImplementedError){ test_runner(EmptyViewHandler).run }
73
74
  end
74
75
 
75
- should "render templates" do
76
- render_args = test_runner(RenderViewHandler).run
77
- assert_equal "my_template", render_args.template_name
78
- assert_equal({:some => 'local'}, render_args.locals)
76
+ should "send files" do
77
+ send_file_args = test_runner(SendFileViewHandler).run
78
+ assert_equal "my_file.txt", send_file_args.file_path
79
+ assert_equal({:some => :option}, send_file_args.options)
79
80
  end
80
81
 
81
- should "render templates on a given source" do
82
- render_args = test_runner(SourceRenderViewHandler).run
83
- assert_kind_of Deas::TemplateSource, render_args.source
84
- assert_equal "my_template", render_args.template_name
85
- assert_equal({:some => 'local'}, render_args.locals)
86
- end
82
+ end
87
83
 
88
- should "render partial templates" do
89
- partial_args = test_runner(PartialViewHandler).run
90
- assert_equal "my_partial", partial_args.template_name
91
- assert_equal({:some => 'local'}, partial_args.locals)
84
+ class RenderTests < RunTests
85
+ setup do
86
+ @template_name = Factory.path
87
+ @locals = { Factory.string => Factory.string }
88
+ @source = Deas::TemplateSource.new(Factory.path)
89
+
90
+ @render_args = nil
91
+ Assert.stub(@runner.template_source, :render){ |*args| @render_args = args }
92
+ @source_render_args = nil
93
+ Assert.stub(@source, :render){ |*args| @source_render_args = args }
94
+ @partial_args = nil
95
+ Assert.stub(@runner.template_source, :partial){ |*args| @partial_args = args }
96
+ @source_partial_args = nil
97
+ Assert.stub(@source, :partial){ |*args| @source_partial_args = args }
92
98
  end
93
99
 
94
- should "render partial templates on a given source" do
95
- partial_args = test_runner(SourcePartialViewHandler).run
96
- assert_kind_of Deas::TemplateSource, partial_args.source
97
- assert_equal "my_partial", partial_args.template_name
98
- assert_equal({:some => 'local'}, partial_args.locals)
99
- end
100
+ should "render templates" do
101
+ subject.send(:render, @template_name, @locals)
102
+ exp = [@template_name, subject, @locals]
103
+ assert_equal exp, @render_args
100
104
 
101
- should "send files" do
102
- send_file_args = test_runner(SendFileViewHandler).run
103
- assert_equal "my_file.txt", send_file_args.file_path
104
- assert_equal({:some => :option}, send_file_args.options)
105
+ subject.send(:source_render, @source, @template_name, @locals)
106
+ exp = [@template_name, subject, @locals]
107
+ assert_equal exp, @source_render_args
108
+
109
+ subject.send(:partial, @template_name, @locals)
110
+ exp = [@template_name, @locals]
111
+ assert_equal exp, @partial_args
112
+
113
+ subject.send(:source_partial, @source, @template_name, @locals)
114
+ exp = [@template_name, @locals]
115
+ assert_equal exp, @source_partial_args
105
116
  end
106
117
 
107
118
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deas
3
3
  version: !ruby/object:Gem::Version
4
- hash: 103
4
+ hash: 99
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 30
8
+ - 31
9
9
  - 0
10
- version: 0.30.0
10
+ version: 0.31.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2015-02-04 00:00:00 Z
19
+ date: 2015-02-06 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
@@ -171,6 +171,7 @@ files:
171
171
  - test/unit/sinatra_runner_tests.rb
172
172
  - test/unit/template_engine_tests.rb
173
173
  - test/unit/template_source_tests.rb
174
+ - test/unit/test_helpers_tests.rb
174
175
  - test/unit/test_runner_tests.rb
175
176
  - test/unit/url_tests.rb
176
177
  - test/unit/view_handler_tests.rb
@@ -238,6 +239,7 @@ test_files:
238
239
  - test/unit/sinatra_runner_tests.rb
239
240
  - test/unit/template_engine_tests.rb
240
241
  - test/unit/template_source_tests.rb
242
+ - test/unit/test_helpers_tests.rb
241
243
  - test/unit/test_runner_tests.rb
242
244
  - test/unit/url_tests.rb
243
245
  - test/unit/view_handler_tests.rb