sinatra 1.3.6 → 1.4.0.a
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sinatra might be problematic. Click here for more details.
- data/CHANGES +96 -22
- data/Gemfile +11 -3
- data/README.de.md +2590 -0
- data/README.es.rdoc +66 -38
- data/README.fr.md +2630 -0
- data/README.hu.rdoc +3 -2
- data/README.jp.rdoc +16 -3
- data/README.ko.rdoc +11 -5
- data/README.md +2699 -0
- data/README.pt-br.rdoc +152 -21
- data/README.pt-pt.rdoc +3 -2
- data/README.ru.md +2724 -0
- data/README.zh.rdoc +3 -3
- data/Rakefile +3 -4
- data/examples/chat.rb +3 -3
- data/lib/sinatra/base.rb +433 -247
- data/lib/sinatra/main.rb +4 -2
- data/lib/sinatra/showexceptions.rb +6 -1
- data/lib/sinatra/version.rb +1 -1
- data/test/base_test.rb +21 -9
- data/test/builder_test.rb +15 -19
- data/test/coffee_test.rb +4 -6
- data/test/compile_test.rb +154 -0
- data/test/contest.rb +4 -6
- data/test/creole_test.rb +5 -5
- data/test/delegator_test.rb +1 -3
- data/test/erb_test.rb +32 -20
- data/test/extensions_test.rb +1 -3
- data/test/filter_test.rb +65 -56
- data/test/haml_test.rb +34 -26
- data/test/helpers_test.rb +331 -221
- data/test/integration_helper.rb +8 -0
- data/test/integration_test.rb +3 -1
- data/test/less_test.rb +10 -8
- data/test/liquid_test.rb +22 -4
- data/test/mapped_error_test.rb +122 -96
- data/test/markaby_test.rb +5 -5
- data/test/markdown_test.rb +5 -5
- data/test/middleware_test.rb +3 -3
- data/test/nokogiri_test.rb +4 -6
- data/test/rabl_test.rb +89 -0
- data/test/radius_test.rb +4 -4
- data/test/rdoc_test.rb +7 -7
- data/test/readme_test.rb +14 -30
- data/test/request_test.rb +15 -0
- data/test/response_test.rb +3 -4
- data/test/result_test.rb +11 -33
- data/test/route_added_hook_test.rb +10 -10
- data/test/routing_test.rb +123 -1
- data/test/sass_test.rb +26 -26
- data/test/scss_test.rb +16 -16
- data/test/server_test.rb +2 -2
- data/test/settings_test.rb +48 -4
- data/test/sinatra_test.rb +2 -7
- data/test/slim_test.rb +37 -23
- data/test/static_test.rb +56 -15
- data/test/streaming_test.rb +11 -2
- data/test/templates_test.rb +117 -45
- data/test/textile_test.rb +9 -9
- data/test/views/hello.rabl +2 -0
- data/test/views/hello.wlang +1 -0
- data/test/views/hello.yajl +1 -0
- data/test/views/layout2.rabl +3 -0
- data/test/views/layout2.wlang +2 -0
- data/test/wlang_test.rb +87 -0
- data/test/yajl_test.rb +86 -0
- metadata +27 -17
- data/README.de.rdoc +0 -2097
- data/README.fr.rdoc +0 -2036
- data/README.rdoc +0 -2017
- data/README.ru.rdoc +0 -1785
data/test/markaby_test.rb
CHANGED
@@ -7,7 +7,7 @@ class MarkabyTest < Test::Unit::TestCase
|
|
7
7
|
def markaby_app(&block)
|
8
8
|
mock_app do
|
9
9
|
set :views, File.dirname(__FILE__) + '/views'
|
10
|
-
get
|
10
|
+
get('/', &block)
|
11
11
|
end
|
12
12
|
get '/'
|
13
13
|
end
|
@@ -55,7 +55,7 @@ class MarkabyTest < Test::Unit::TestCase
|
|
55
55
|
assert_equal "<h1>THIS. IS. <em>SPARTA</em></h1>", body
|
56
56
|
end
|
57
57
|
|
58
|
-
it 'renders inline markaby blocks with file layouts' do
|
58
|
+
it 'renders inline markaby blocks with file layouts' do
|
59
59
|
markaby_app { markaby(:layout => :layout2) { text "Hello World" } }
|
60
60
|
assert ok?
|
61
61
|
assert_equal "<h1>Markaby Layout!</h1><p>Hello World</p>", body
|
@@ -65,11 +65,11 @@ class MarkabyTest < Test::Unit::TestCase
|
|
65
65
|
mock_app { get('/') { markaby :no_such_template } }
|
66
66
|
assert_raise(Errno::ENOENT) { get('/') }
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
it "allows passing locals" do
|
70
|
-
markaby_app
|
70
|
+
markaby_app {
|
71
71
|
markaby 'text value', :locals => { :value => 'foo' }
|
72
|
-
|
72
|
+
}
|
73
73
|
assert ok?
|
74
74
|
assert_equal 'foo', body
|
75
75
|
end
|
data/test/markdown_test.rb
CHANGED
@@ -4,7 +4,7 @@ MarkdownTest = proc do
|
|
4
4
|
def markdown_app(&block)
|
5
5
|
mock_app do
|
6
6
|
set :views, File.dirname(__FILE__) + '/views'
|
7
|
-
get
|
7
|
+
get('/', &block)
|
8
8
|
end
|
9
9
|
get '/'
|
10
10
|
end
|
@@ -48,7 +48,9 @@ MarkdownTest = proc do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
it "renders with file layouts" do
|
51
|
-
markdown_app {
|
51
|
+
markdown_app {
|
52
|
+
markdown 'Hello World', :layout => :layout2, :layout_engine => :erb
|
53
|
+
}
|
52
54
|
assert ok?
|
53
55
|
assert_body "ERB Layout!\n<p>Hello World</p>"
|
54
56
|
end
|
@@ -57,9 +59,7 @@ MarkdownTest = proc do
|
|
57
59
|
mock_app do
|
58
60
|
template(:inner) { "hi" }
|
59
61
|
template(:outer) { "<outer><%= markdown :inner %></outer>" }
|
60
|
-
get
|
61
|
-
erb :outer
|
62
|
-
end
|
62
|
+
get('/') { erb :outer }
|
63
63
|
end
|
64
64
|
|
65
65
|
get '/'
|
data/test/middleware_test.rb
CHANGED
@@ -2,14 +2,14 @@ require File.expand_path('../helper', __FILE__)
|
|
2
2
|
|
3
3
|
class MiddlewareTest < Test::Unit::TestCase
|
4
4
|
setup do
|
5
|
-
@app = mock_app(Sinatra::Application)
|
6
|
-
get
|
5
|
+
@app = mock_app(Sinatra::Application) do
|
6
|
+
get('/*')do
|
7
7
|
response.headers['X-Tests'] = env['test.ran'].
|
8
8
|
map { |n| n.split('::').last }.
|
9
9
|
join(', ')
|
10
10
|
env['PATH_INFO']
|
11
11
|
end
|
12
|
-
|
12
|
+
end
|
13
13
|
end
|
14
14
|
|
15
15
|
class MockMiddleware < Struct.new(:app)
|
data/test/nokogiri_test.rb
CHANGED
@@ -7,7 +7,7 @@ class NokogiriTest < Test::Unit::TestCase
|
|
7
7
|
def nokogiri_app(&block)
|
8
8
|
mock_app do
|
9
9
|
set :views, File.dirname(__FILE__) + '/views'
|
10
|
-
get
|
10
|
+
get('/', &block)
|
11
11
|
end
|
12
12
|
get '/'
|
13
13
|
end
|
@@ -21,9 +21,7 @@ class NokogiriTest < Test::Unit::TestCase
|
|
21
21
|
it 'renders inline blocks' do
|
22
22
|
nokogiri_app do
|
23
23
|
@name = "Frank & Mary"
|
24
|
-
nokogiri
|
25
|
-
xml.couple @name
|
26
|
-
end
|
24
|
+
nokogiri { |xml| xml.couple @name }
|
27
25
|
end
|
28
26
|
assert ok?
|
29
27
|
assert_body %(<?xml version="1.0"?>\n<couple>Frank & Mary</couple>\n)
|
@@ -51,9 +49,9 @@ class NokogiriTest < Test::Unit::TestCase
|
|
51
49
|
|
52
50
|
it "renders with file layouts" do
|
53
51
|
next if Tilt::VERSION <= "1.1"
|
54
|
-
nokogiri_app
|
52
|
+
nokogiri_app {
|
55
53
|
nokogiri %(xml.em 'Hello World'), :layout => :layout2
|
56
|
-
|
54
|
+
}
|
57
55
|
assert ok?
|
58
56
|
assert_body %(<?xml version="1.0"?>\n<layout>\n <em>Hello World</em>\n</layout>\n)
|
59
57
|
end
|
data/test/rabl_test.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rabl'
|
5
|
+
require 'ostruct'
|
6
|
+
require 'json'
|
7
|
+
require 'active_support/core_ext/hash/conversions'
|
8
|
+
|
9
|
+
class RablTest < Test::Unit::TestCase
|
10
|
+
def rabl_app(&block)
|
11
|
+
mock_app {
|
12
|
+
set :views, File.dirname(__FILE__) + '/views'
|
13
|
+
get '/', &block
|
14
|
+
}
|
15
|
+
get '/'
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'renders inline rabl strings' do
|
19
|
+
rabl_app do
|
20
|
+
@foo = OpenStruct.new(:baz => 'w00t')
|
21
|
+
rabl %q{
|
22
|
+
object @foo
|
23
|
+
attributes :baz
|
24
|
+
}
|
25
|
+
end
|
26
|
+
assert ok?
|
27
|
+
assert_equal '{"openstruct":{"baz":"w00t"}}', body
|
28
|
+
end
|
29
|
+
it 'renders .rabl files in views path' do
|
30
|
+
rabl_app do
|
31
|
+
@foo = OpenStruct.new(:bar => 'baz')
|
32
|
+
rabl :hello
|
33
|
+
end
|
34
|
+
assert ok?
|
35
|
+
assert_equal '{"openstruct":{"bar":"baz"}}', body
|
36
|
+
end
|
37
|
+
|
38
|
+
it "renders with file layouts" do
|
39
|
+
rabl_app {
|
40
|
+
@foo = OpenStruct.new(:bar => 'baz')
|
41
|
+
rabl :hello, :layout => :layout2
|
42
|
+
}
|
43
|
+
assert ok?
|
44
|
+
assert_equal '{"qux":{"openstruct":{"bar":"baz"}}}', body
|
45
|
+
end
|
46
|
+
|
47
|
+
it "raises error if template not found" do
|
48
|
+
mock_app {
|
49
|
+
get('/') { rabl :no_such_template }
|
50
|
+
}
|
51
|
+
assert_raise(Errno::ENOENT) { get('/') }
|
52
|
+
end
|
53
|
+
|
54
|
+
it "passes rabl options to the rabl engine" do
|
55
|
+
mock_app do
|
56
|
+
get('/') do
|
57
|
+
@foo = OpenStruct.new(:bar => 'baz')
|
58
|
+
rabl %q{
|
59
|
+
object @foo
|
60
|
+
attributes :bar
|
61
|
+
}, :format => 'xml'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
get '/'
|
65
|
+
assert ok?
|
66
|
+
assert_body '<?xml version="1.0" encoding="UTF-8"?><openstruct><bar>baz</bar></openstruct>'
|
67
|
+
end
|
68
|
+
|
69
|
+
it "passes default rabl options to the rabl engine" do
|
70
|
+
mock_app do
|
71
|
+
set :rabl, :format => 'xml'
|
72
|
+
get('/') do
|
73
|
+
@foo = OpenStruct.new(:bar => 'baz')
|
74
|
+
rabl %q{
|
75
|
+
object @foo
|
76
|
+
attributes :bar
|
77
|
+
}
|
78
|
+
end
|
79
|
+
end
|
80
|
+
get '/'
|
81
|
+
assert ok?
|
82
|
+
assert_body '<?xml version="1.0" encoding="UTF-8"?><openstruct><bar>baz</bar></openstruct>'
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
rescue LoadError
|
88
|
+
warn "#{$!.to_s}: skipping rabl tests"
|
89
|
+
end
|
data/test/radius_test.rb
CHANGED
@@ -7,7 +7,7 @@ class RadiusTest < Test::Unit::TestCase
|
|
7
7
|
def radius_app(&block)
|
8
8
|
mock_app do
|
9
9
|
set :views, File.dirname(__FILE__) + '/views'
|
10
|
-
get
|
10
|
+
get('/', &block)
|
11
11
|
end
|
12
12
|
get '/'
|
13
13
|
end
|
@@ -44,11 +44,11 @@ class RadiusTest < Test::Unit::TestCase
|
|
44
44
|
mock_app { get('/') { radius :no_such_template } }
|
45
45
|
assert_raise(Errno::ENOENT) { get('/') }
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
it "allows passing locals" do
|
49
|
-
radius_app
|
49
|
+
radius_app {
|
50
50
|
radius '<r:value />', :locals => { :value => 'foo' }
|
51
|
-
|
51
|
+
}
|
52
52
|
assert ok?
|
53
53
|
assert_equal 'foo', body
|
54
54
|
end
|
data/test/rdoc_test.rb
CHANGED
@@ -8,7 +8,7 @@ class RdocTest < Test::Unit::TestCase
|
|
8
8
|
def rdoc_app(&block)
|
9
9
|
mock_app do
|
10
10
|
set :views, File.dirname(__FILE__) + '/views'
|
11
|
-
get
|
11
|
+
get('/', &block)
|
12
12
|
end
|
13
13
|
get '/'
|
14
14
|
end
|
@@ -16,13 +16,13 @@ class RdocTest < Test::Unit::TestCase
|
|
16
16
|
it 'renders inline rdoc strings' do
|
17
17
|
rdoc_app { rdoc '= Hiya' }
|
18
18
|
assert ok?
|
19
|
-
assert_body /<h1[^>]*>Hiya
|
19
|
+
assert_body /<h1[^>]*>Hiya<\/h1>/
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'renders .rdoc files in views path' do
|
23
23
|
rdoc_app { rdoc :hello }
|
24
24
|
assert ok?
|
25
|
-
assert_body /<h1[^>]*>Hello From RDoc
|
25
|
+
assert_body /<h1[^>]*>Hello From RDoc<\/h1>/
|
26
26
|
end
|
27
27
|
|
28
28
|
it "raises error if template not found" do
|
@@ -41,7 +41,9 @@ class RdocTest < Test::Unit::TestCase
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it "renders with file layouts" do
|
44
|
-
rdoc_app {
|
44
|
+
rdoc_app {
|
45
|
+
rdoc 'Hello World', :layout => :layout2, :layout_engine => :erb
|
46
|
+
}
|
45
47
|
assert ok?
|
46
48
|
assert_body "ERB Layout!\n<p>Hello World</p>"
|
47
49
|
end
|
@@ -50,9 +52,7 @@ class RdocTest < Test::Unit::TestCase
|
|
50
52
|
mock_app do
|
51
53
|
template(:inner) { "hi" }
|
52
54
|
template(:outer) { "<outer><%= rdoc :inner %></outer>" }
|
53
|
-
get
|
54
|
-
erb :outer
|
55
|
-
end
|
55
|
+
get('/') { erb :outer }
|
56
56
|
end
|
57
57
|
|
58
58
|
get '/'
|
data/test/readme_test.rb
CHANGED
@@ -11,29 +11,17 @@ class ReadmeTest < Test::Unit::TestCase
|
|
11
11
|
section "Routes" do
|
12
12
|
example do
|
13
13
|
mock_app do
|
14
|
-
get
|
15
|
-
".. show something .."
|
16
|
-
end
|
14
|
+
get('/') { ".. show something .." }
|
17
15
|
|
18
|
-
post
|
19
|
-
".. create something .."
|
20
|
-
end
|
16
|
+
post('/') { ".. create something .." }
|
21
17
|
|
22
|
-
put
|
23
|
-
".. replace something .."
|
24
|
-
end
|
18
|
+
put('/') { ".. replace something .." }
|
25
19
|
|
26
|
-
patch
|
27
|
-
".. modify something .."
|
28
|
-
end
|
20
|
+
patch('/') { ".. modify something .." }
|
29
21
|
|
30
|
-
delete
|
31
|
-
".. annihilate something .."
|
32
|
-
end
|
22
|
+
delete('/') { ".. annihilate something .." }
|
33
23
|
|
34
|
-
options
|
35
|
-
".. appease something .."
|
36
|
-
end
|
24
|
+
options('/') { ".. appease something .." }
|
37
25
|
end
|
38
26
|
|
39
27
|
get '/'
|
@@ -57,7 +45,7 @@ class ReadmeTest < Test::Unit::TestCase
|
|
57
45
|
|
58
46
|
example do
|
59
47
|
mock_app do
|
60
|
-
get
|
48
|
+
get('/hello/:name') do
|
61
49
|
# matches "GET /hello/foo" and "GET /hello/bar"
|
62
50
|
# params[:name] is 'foo' or 'bar'
|
63
51
|
"Hello #{params[:name]}!"
|
@@ -72,11 +60,7 @@ class ReadmeTest < Test::Unit::TestCase
|
|
72
60
|
end
|
73
61
|
|
74
62
|
example do
|
75
|
-
mock_app
|
76
|
-
get '/hello/:name' do |n|
|
77
|
-
"Hello #{n}!"
|
78
|
-
end
|
79
|
-
end
|
63
|
+
mock_app { get('/hello/:name') { |n| "Hello #{n}!" } }
|
80
64
|
|
81
65
|
get '/hello/foo'
|
82
66
|
assert_body 'Hello foo!'
|
@@ -87,12 +71,12 @@ class ReadmeTest < Test::Unit::TestCase
|
|
87
71
|
|
88
72
|
example do
|
89
73
|
mock_app do
|
90
|
-
get
|
74
|
+
get('/say/*/to/*') do
|
91
75
|
# matches /say/hello/to/world
|
92
76
|
params[:splat].inspect # => ["hello", "world"]
|
93
77
|
end
|
94
78
|
|
95
|
-
get
|
79
|
+
get('/download/*.*') do
|
96
80
|
# matches /download/path/to/file.xml
|
97
81
|
params[:splat].inspect # => ["path/to/file", "xml"]
|
98
82
|
end
|
@@ -107,9 +91,9 @@ class ReadmeTest < Test::Unit::TestCase
|
|
107
91
|
|
108
92
|
example do
|
109
93
|
mock_app do
|
110
|
-
get
|
94
|
+
get(%r{/hello/([\w]+)}) {
|
111
95
|
"Hello, #{params[:captures].first}!"
|
112
|
-
|
96
|
+
}
|
113
97
|
end
|
114
98
|
|
115
99
|
get '/hello/foo'
|
@@ -121,9 +105,9 @@ class ReadmeTest < Test::Unit::TestCase
|
|
121
105
|
|
122
106
|
example do
|
123
107
|
mock_app do
|
124
|
-
get %r{/hello/([\w]+)}
|
108
|
+
get( %r{/hello/([\w]+)}) { |c|
|
125
109
|
"Hello, #{c}!"
|
126
|
-
|
110
|
+
}
|
127
111
|
end
|
128
112
|
|
129
113
|
get '/hello/foo'
|
data/test/request_test.rb
CHANGED
@@ -42,4 +42,19 @@ class RequestTest < Test::Unit::TestCase
|
|
42
42
|
dumped = Marshal.dump(request.params)
|
43
43
|
assert_equal 'bar', Marshal.load(dumped)['foo']
|
44
44
|
end
|
45
|
+
|
46
|
+
it "exposes the preferred type's parameters" do
|
47
|
+
request = Sinatra::Request.new(
|
48
|
+
'HTTP_ACCEPT' => 'image/jpeg; compress=0.25'
|
49
|
+
)
|
50
|
+
assert_equal({ 'compress' => '0.25' }, request.preferred_type.params)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "properly decodes MIME type parameters" do
|
54
|
+
request = Sinatra::Request.new(
|
55
|
+
'HTTP_ACCEPT' => 'image/jpeg;unquoted=0.25;quoted="0.25";chartest="\";,\x"'
|
56
|
+
)
|
57
|
+
expected = { 'unquoted' => '0.25', 'quoted' => '0.25', 'chartest' => '";,x' }
|
58
|
+
assert_equal(expected, request.preferred_type.params)
|
59
|
+
end
|
45
60
|
end
|
data/test/response_test.rb
CHANGED
@@ -3,12 +3,11 @@
|
|
3
3
|
require File.expand_path('../helper', __FILE__)
|
4
4
|
|
5
5
|
class ResponseTest < Test::Unit::TestCase
|
6
|
-
setup
|
7
|
-
@response = Sinatra::Response.new
|
8
|
-
end
|
6
|
+
setup { @response = Sinatra::Response.new }
|
9
7
|
|
10
8
|
def assert_same_body(a, b)
|
11
|
-
|
9
|
+
enum = Enumerable.const_get(:Enumerator)
|
10
|
+
assert_equal enum.new(a).to_a, enum.new(b).to_a
|
12
11
|
end
|
13
12
|
|
14
13
|
it "initializes with 200, text/html, and empty body" do
|
data/test/result_test.rb
CHANGED
@@ -2,11 +2,7 @@ require File.expand_path('../helper', __FILE__)
|
|
2
2
|
|
3
3
|
class ResultTest < Test::Unit::TestCase
|
4
4
|
it "sets response.body when result is a String" do
|
5
|
-
mock_app {
|
6
|
-
get '/' do
|
7
|
-
'Hello World'
|
8
|
-
end
|
9
|
-
}
|
5
|
+
mock_app { get('/') { 'Hello World' } }
|
10
6
|
|
11
7
|
get '/'
|
12
8
|
assert ok?
|
@@ -14,11 +10,7 @@ class ResultTest < Test::Unit::TestCase
|
|
14
10
|
end
|
15
11
|
|
16
12
|
it "sets response.body when result is an Array of Strings" do
|
17
|
-
mock_app {
|
18
|
-
get '/' do
|
19
|
-
['Hello', 'World']
|
20
|
-
end
|
21
|
-
}
|
13
|
+
mock_app { get('/') { ['Hello', 'World'] } }
|
22
14
|
|
23
15
|
get '/'
|
24
16
|
assert ok?
|
@@ -26,13 +18,13 @@ class ResultTest < Test::Unit::TestCase
|
|
26
18
|
end
|
27
19
|
|
28
20
|
it "sets response.body when result responds to #each" do
|
29
|
-
mock_app
|
30
|
-
get
|
21
|
+
mock_app do
|
22
|
+
get('/') do
|
31
23
|
res = lambda { 'Hello World' }
|
32
24
|
def res.each ; yield call ; end
|
33
|
-
res
|
25
|
+
return res
|
34
26
|
end
|
35
|
-
|
27
|
+
end
|
36
28
|
|
37
29
|
get '/'
|
38
30
|
assert ok?
|
@@ -40,11 +32,7 @@ class ResultTest < Test::Unit::TestCase
|
|
40
32
|
end
|
41
33
|
|
42
34
|
it "sets response.body to [] when result is nil" do
|
43
|
-
mock_app {
|
44
|
-
get '/' do
|
45
|
-
nil
|
46
|
-
end
|
47
|
-
}
|
35
|
+
mock_app { get( '/') { nil } }
|
48
36
|
|
49
37
|
get '/'
|
50
38
|
assert ok?
|
@@ -53,9 +41,7 @@ class ResultTest < Test::Unit::TestCase
|
|
53
41
|
|
54
42
|
it "sets status, headers, and body when result is a Rack response tuple" do
|
55
43
|
mock_app {
|
56
|
-
get '/'
|
57
|
-
[203, {'Content-Type' => 'foo/bar'}, 'Hello World']
|
58
|
-
end
|
44
|
+
get('/') { [203, {'Content-Type' => 'foo/bar'}, 'Hello World'] }
|
59
45
|
}
|
60
46
|
|
61
47
|
get '/'
|
@@ -65,11 +51,7 @@ class ResultTest < Test::Unit::TestCase
|
|
65
51
|
end
|
66
52
|
|
67
53
|
it "sets status and body when result is a two-tuple" do
|
68
|
-
mock_app {
|
69
|
-
get '/' do
|
70
|
-
[409, 'formula of']
|
71
|
-
end
|
72
|
-
}
|
54
|
+
mock_app { get('/') { [409, 'formula of'] } }
|
73
55
|
|
74
56
|
get '/'
|
75
57
|
assert_equal 409, status
|
@@ -78,18 +60,14 @@ class ResultTest < Test::Unit::TestCase
|
|
78
60
|
|
79
61
|
it "raises a ArgumentError when result is a non two or three tuple Array" do
|
80
62
|
mock_app {
|
81
|
-
get
|
82
|
-
[409, 'formula of', 'something else', 'even more']
|
83
|
-
end
|
63
|
+
get('/') { [409, 'formula of', 'something else', 'even more'] }
|
84
64
|
}
|
85
65
|
|
86
66
|
assert_raise(ArgumentError) { get '/' }
|
87
67
|
end
|
88
68
|
|
89
69
|
it "sets status when result is a Fixnum status code" do
|
90
|
-
mock_app {
|
91
|
-
get('/') { 205 }
|
92
|
-
}
|
70
|
+
mock_app { get('/') { 205 } }
|
93
71
|
|
94
72
|
get '/'
|
95
73
|
assert_equal 205, status
|