deas 0.22.1 → 0.23.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.
data/deas.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency("rack", ["~> 1.5"])
22
22
  gem.add_dependency("sinatra", ["~> 1.4"])
23
23
 
24
- gem.add_development_dependency("assert")
24
+ gem.add_development_dependency("assert", ["~>2.3"])
25
25
  gem.add_development_dependency("assert-mocha")
26
26
  gem.add_development_dependency("assert-rack-test")
27
27
  gem.add_development_dependency('haml')
data/lib/deas/logging.rb CHANGED
@@ -30,14 +30,17 @@ module Deas
30
30
 
31
31
  # The real Rack call interface.
32
32
  # This is the common behavior for both the verbose and summary logging
33
- # middlewares. It times the response and returns it as is.
33
+ # middlewares. It sets rack's logger, times the response and returns it as is.
34
34
  def call!(env)
35
+ env['rack.logger'] = @logger
36
+
35
37
  status, headers, body = nil, nil, nil
36
38
  benchmark = Benchmark.measure do
37
39
  status, headers, body = @app.call(env)
38
40
  end
39
41
  log_error(env['sinatra.error'])
40
42
  env['deas.time_taken'] = RoundedTime.new(benchmark.real)
43
+
41
44
  [ status, headers, body ]
42
45
  end
43
46
 
data/lib/deas/template.rb CHANGED
@@ -49,8 +49,8 @@ module Deas
49
49
  Template.new(@sinatra_call, name, options || {}).render(&block)
50
50
  end
51
51
 
52
- def partial(name, locals = nil)
53
- Partial.new(@sinatra_call, name, locals || {}).render
52
+ def partial(name, locals = nil, &block)
53
+ Partial.new(@sinatra_call, name, locals || {}).render(&block)
54
54
  end
55
55
 
56
56
  def escape_html(html)
data/lib/deas/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Deas
2
- VERSION = "0.22.1"
2
+ VERSION = "0.23.0"
3
3
  end
@@ -33,11 +33,14 @@ class FakeSinatraCall
33
33
  def headers(*args); args; end
34
34
 
35
35
  # return the template name for each nested calls
36
- def erb(name, opts, &block)
36
+
37
+ RenderArgs = Struct.new(:template_name, :opts, :block_call_result)
38
+
39
+ def erb(template_name, opts, &block)
37
40
  if block
38
- [ name, opts, block.call ].flatten
41
+ RenderArgs.new(template_name, opts, block.call)
39
42
  else
40
- [ name, opts ]
43
+ RenderArgs.new(template_name, opts, nil)
41
44
  end
42
45
  end
43
46
 
@@ -4,7 +4,7 @@ require 'deas/template'
4
4
 
5
5
  class Deas::Template
6
6
 
7
- class BaseTests < Assert::Context
7
+ class UnitTests < Assert::Context
8
8
  desc "Deas::Template"
9
9
  setup do
10
10
  @fake_sinatra_call = FakeSinatraCall.new
@@ -54,7 +54,7 @@ class Deas::Template
54
54
 
55
55
  end
56
56
 
57
- class WithLayoutsTests < BaseTests
57
+ class WithLayoutsTests < UnitTests
58
58
  desc "with layouts"
59
59
  setup do
60
60
  @template = Deas::Template.new(@fake_sinatra_call, 'users/index', {
@@ -62,20 +62,19 @@ class Deas::Template
62
62
  })
63
63
  end
64
64
 
65
- should "call the engine's `erb` method for each layout, " \
66
- "in the `layout` option" do
67
- return_value = subject.render
65
+ should "call the engine's `erb` method for each layout" do
66
+ web_lay_render_args = subject.render
67
+ search_lay_render_args = web_lay_render_args.block_call_result
68
+ users_index_render_args = search_lay_render_args.block_call_result
68
69
 
69
- # the return_value is a one-dimensional array of all the render args
70
- # used in order. Thus the, 0, 2, 4 nature of the indexes.
71
- assert_equal :"layouts/web", return_value[0]
72
- assert_equal :"layouts/search", return_value[2]
73
- assert_equal :"users/index", return_value[4]
70
+ assert_equal :"layouts/web", web_lay_render_args.template_name
71
+ assert_equal :"layouts/search", search_lay_render_args.template_name
72
+ assert_equal :"users/index", users_index_render_args.template_name
74
73
  end
75
74
 
76
75
  end
77
76
 
78
- class ScopeTests < BaseTests
77
+ class ScopeTests < UnitTests
79
78
  desc "Deas::Template::RenderScope"
80
79
  setup do
81
80
  @scope = Deas::Template::Scope.new(@fake_sinatra_call)
@@ -86,47 +85,45 @@ class Deas::Template
86
85
  should have_imeths :render, :partial, :escape_html, :h, :escape_url, :u
87
86
  should have_imeths :logger
88
87
 
89
- should "call the sinatra_call's erb method with #partial" do
90
- return_value = subject.partial('part', :something => true)
88
+ should "call the sinatra_call's erb method with #render" do
89
+ render_args = subject.render('my_template', {
90
+ :views => '/path/to/templates',
91
+ :locals => { :something => true }
92
+ }, &Proc.new{ '#render called this proc' })
91
93
 
92
- assert_equal :_part, return_value[0]
94
+ assert_equal :my_template, render_args.template_name
95
+ assert_instance_of Deas::Template::Scope, render_args.opts[:scope]
93
96
 
94
- expected_options = return_value[1]
95
- assert_instance_of Deas::Template::Scope, expected_options[:scope]
97
+ exp_locals = { :something => true }
98
+ assert_equal exp_locals, render_args.opts[:locals]
96
99
 
97
- expected_locals = { :something => true }
98
- assert_equal(expected_locals, expected_options[:locals])
100
+ assert_equal '#render called this proc', render_args.block_call_result
99
101
  end
100
102
 
101
- should "call the sinatra_call's erb method with #render" do
102
- return_value = subject.render('my_template', {
103
- :views => '/path/to/templates',
104
- :locals => { :something => true }
105
- })
103
+ should "call the sinatra_call's erb method with #partial" do
104
+ render_args = subject.partial('part', {
105
+ :something => true
106
+ }, &Proc.new{ '#partial called this proc' })
106
107
 
107
- assert_equal :my_template, return_value[0]
108
+ assert_equal :_part, render_args.template_name
109
+ assert_instance_of Deas::Template::Scope, render_args.opts[:scope]
108
110
 
109
- expected_options = return_value[1]
110
- assert_instance_of Deas::Template::Scope, expected_options[:scope]
111
+ exp_locals = { :something => true }
112
+ assert_equal exp_locals, render_args.opts[:locals]
111
113
 
112
- expected_locals = { :something => true }
113
- assert_equal(expected_locals, expected_options[:locals])
114
+ assert_equal '#partial called this proc', render_args.block_call_result
114
115
  end
115
116
 
116
117
  should "escape html with #h or #escape_html" do
117
- return_value = subject.escape_html("<strong></strong>")
118
- assert_equal "&lt;strong&gt;&lt;&#x2F;strong&gt;", return_value
119
-
120
- return_value = subject.h("<strong></strong>")
121
- assert_equal "&lt;strong&gt;&lt;&#x2F;strong&gt;", return_value
118
+ exp_val = "&lt;strong&gt;&lt;&#x2F;strong&gt;"
119
+ assert_equal exp_val, subject.escape_html("<strong></strong>")
120
+ assert_equal exp_val, subject.h("<strong></strong>")
122
121
  end
123
122
 
124
123
  should "escape urls with #u or #escape_url" do
125
- return_value = subject.escape_url("/path/to/somewhere")
126
- assert_equal "%2Fpath%2Fto%2Fsomewhere", return_value
127
-
128
- return_value = subject.u("/path/to/somewhere")
129
- assert_equal "%2Fpath%2Fto%2Fsomewhere", return_value
124
+ exp_val = "%2Fpath%2Fto%2Fsomewhere"
125
+ assert_equal exp_val, subject.escape_url("/path/to/somewhere")
126
+ assert_equal exp_val, subject.u("/path/to/somewhere")
130
127
  end
131
128
 
132
129
  should "expose the sinatra call (and deas server) logger" do
@@ -135,7 +132,7 @@ class Deas::Template
135
132
 
136
133
  end
137
134
 
138
- class PartialTests < BaseTests
135
+ class PartialTests < UnitTests
139
136
  desc "Partial"
140
137
  setup do
141
138
  @partial = Deas::Template::Partial.new(@fake_sinatra_call, 'users/index/listing', {
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: 69
4
+ hash: 67
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 22
9
- - 1
10
- version: 0.22.1
8
+ - 23
9
+ - 0
10
+ version: 0.23.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: 2013-10-03 00:00:00 Z
19
+ date: 2013-10-15 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: ns-options
@@ -77,12 +77,13 @@ dependencies:
77
77
  requirement: &id004 !ruby/object:Gem::Requirement
78
78
  none: false
79
79
  requirements:
80
- - - ">="
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- hash: 3
82
+ hash: 5
83
83
  segments:
84
- - 0
85
- version: "0"
84
+ - 2
85
+ - 3
86
+ version: "2.3"
86
87
  type: :development
87
88
  version_requirements: *id004
88
89
  - !ruby/object:Gem::Dependency