forked from sinatra/sinatra
-
Notifications
You must be signed in to change notification settings - Fork 28
/
erb_test.rb
116 lines (77 loc) · 2.07 KB
/
erb_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
require File.dirname(__FILE__) + '/helper'
context "Erb" do
setup do
Sinatra.application = nil
end
context "without layouts" do
setup do
Sinatra.application = nil
end
specify "should render" do
get '/no_layout' do
erb '<%= 1 + 1 %>'
end
get_it '/no_layout'
should.be.ok
body.should == '2'
end
end
context "with layouts" do
setup do
Sinatra.application = nil
end
specify "can be inline" do
layout do
%Q{This is <%= yield %>!}
end
get '/lay' do
erb 'Blake'
end
get_it '/lay'
should.be.ok
body.should.equal 'This is Blake!'
end
specify "can use named layouts" do
layout :pretty do
%Q{<h1><%= yield %></h1>}
end
get '/pretty' do
erb 'Foo', :layout => :pretty
end
get '/not_pretty' do
erb 'Bar'
end
get_it '/pretty'
body.should.equal '<h1>Foo</h1>'
get_it '/not_pretty'
body.should.equal 'Bar'
end
specify "can be read from a file if they're not inlined" do
get '/foo' do
@title = 'Welcome to the Hello Program'
erb 'Blake', :layout => :foo_layout,
:views_directory => File.dirname(__FILE__) + "/views"
end
get_it '/foo'
body.should.equal "Welcome to the Hello Program\nHi Blake\n"
end
end
context "Templates (in general)" do
specify "are read from files if Symbols" do
get '/from_file' do
@name = 'Alena'
erb :foo, :views_directory => File.dirname(__FILE__) + "/views"
end
get_it '/from_file'
body.should.equal 'You rock Alena!'
end
specify "use layout.ext by default if available" do
get '/layout_from_file' do
erb :foo, :views_directory => File.dirname(__FILE__) + "/views/layout_test"
end
get_it '/layout_from_file'
should.be.ok
body.should.equal "x This is foo! x \n"
end
end
end