presenting 2.0.0 → 2.0.1
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/LICENSE +20 -20
- data/README +10 -10
- data/Rakefile +22 -22
- data/app/assets/javascripts/search.js +13 -13
- data/app/assets/stylesheets/details-color.css +7 -7
- data/app/assets/stylesheets/details.css +10 -10
- data/app/assets/stylesheets/form.css +1 -1
- data/app/assets/stylesheets/grid-color.css +71 -71
- data/app/assets/stylesheets/grid.css +64 -64
- data/app/assets/stylesheets/search-color.css +16 -16
- data/app/assets/stylesheets/search.css +45 -45
- data/app/controllers/presentation/assets_controller.rb +42 -42
- data/app/views/presentations/_details.erb +11 -11
- data/app/views/presentations/_field_search.erb +14 -14
- data/app/views/presentations/_form.erb +20 -20
- data/app/views/presentations/_grid.erb +70 -70
- data/app/views/presentations/_search.erb +7 -7
- data/lib/presentation/base.rb +31 -31
- data/lib/presentation/details.rb +21 -21
- data/lib/presentation/field_search.rb +67 -67
- data/lib/presentation/form.rb +149 -149
- data/lib/presentation/grid.rb +162 -160
- data/lib/presentation/search.rb +9 -9
- data/lib/presenting/attribute.rb +51 -51
- data/lib/presenting/configurable.rb +10 -10
- data/lib/presenting/defaults.rb +10 -10
- data/lib/presenting/field_set.rb +26 -26
- data/lib/presenting/form_helpers.rb +51 -51
- data/lib/presenting/helpers.rb +114 -114
- data/lib/presenting/sanitize.rb +19 -19
- data/lib/presenting/search.rb +185 -185
- data/lib/presenting/sorting.rb +87 -87
- data/test/attribute_test.rb +61 -61
- data/test/configurable_test.rb +20 -20
- data/test/details_test.rb +68 -68
- data/test/field_search_test.rb +102 -102
- data/test/field_set_test.rb +46 -46
- data/test/grid_test.rb +246 -239
- data/test/helpers_test.rb +72 -72
- data/test/presenting_test.rb +15 -15
- data/test/r3/Gemfile +7 -7
- data/test/r3/Gemfile.lock +86 -82
- data/test/r3/config/application.rb +12 -12
- data/test/r3/config/boot.rb +6 -6
- data/test/r3/config/database.yml +22 -22
- data/test/r3/config/environment.rb +5 -5
- data/test/r3/config/environments/test.rb +35 -35
- data/test/r3/db/test.sqlite3 +0 -0
- data/test/r3/log/test.log +336 -0
- data/test/r3/public/javascripts/presenting/grid.js +0 -0
- data/test/r3/public/javascripts/presenting/search.js +13 -13
- data/test/r3/public/stylesheets/presenting/details-color.css +7 -7
- data/test/r3/public/stylesheets/presenting/details.css +10 -10
- data/test/r3/public/stylesheets/presenting/form.css +1 -1
- data/test/r3/public/stylesheets/presenting/grid-color.css +71 -71
- data/test/r3/public/stylesheets/presenting/grid.css +64 -64
- data/test/r3/public/stylesheets/presenting/search-color.css +16 -16
- data/test/r3/public/stylesheets/presenting/search.css +45 -45
- data/test/sanitize_test.rb +15 -15
- data/test/search_conditions_test.rb +137 -137
- data/test/search_test.rb +30 -30
- data/test/sorting_test.rb +63 -63
- metadata +74 -74
data/test/grid_test.rb
CHANGED
@@ -1,239 +1,246 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
2
|
-
|
3
|
-
class GridTest < Presenting::Test
|
4
|
-
def setup
|
5
|
-
@g = Presentation::Grid.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_default_title
|
9
|
-
@g.id = "something_or_other"
|
10
|
-
assert_equal "Something Or Other", @g.title
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_adding_a_field_by_name
|
14
|
-
@g.fields = ["foo"]
|
15
|
-
assert_equal "foo", @g.fields.first.name, "name is stringified"
|
16
|
-
assert_equal "foo", @g.fields.first.value, "value is assumed to be a method"
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_adding_a_field_by_name_and_value
|
20
|
-
@g.fields = [{"foo" => :bar}]
|
21
|
-
assert_equal "foo", @g.fields.first.name, "key is name"
|
22
|
-
assert_equal :bar, @g.fields.first.value, "value is value"
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_adding_a_field_by_name_and_options
|
26
|
-
@g.fields = [{"foo" => {:value => :bar}}]
|
27
|
-
assert_equal "foo", @g.fields.first.name, "key is name"
|
28
|
-
assert_equal :bar, @g.fields.first.value, "value is found and saved"
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_adding_links_as_strings
|
32
|
-
@g.links = ['<a href="/foo">foo</a>']
|
33
|
-
assert_equal 1, @g.links.size
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_adding_links_as_procs
|
37
|
-
assert_raises ArgumentError do
|
38
|
-
@g.links = [proc{|record| link_to(record.name, record)}]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_adding_record_links_as_procs
|
43
|
-
@g.record_links = [proc{|record| link_to(record.name, record)}]
|
44
|
-
assert_equal 1, @g.record_links.size
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_adding_nil_record_links
|
48
|
-
assert_nothing_raised do
|
49
|
-
# this would happen if a link sometimes did not appear
|
50
|
-
@g.record_links = [nil]
|
51
|
-
end
|
52
|
-
assert @g.record_links.empty?
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_adding_record_links_as_strings
|
56
|
-
assert_raises ArgumentError do
|
57
|
-
@g.record_links = ['<a href="/foo">foo</a>']
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_arrays_will_not_paginate
|
62
|
-
@g.presentable = []
|
63
|
-
assert !@g.paginate?
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_paginated_collections_will_paginate
|
67
|
-
@g.presentable = WillPaginate::Collection.new(1, 1)
|
68
|
-
assert @g.paginate?
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_unpaged_relations_will_not_paginate
|
72
|
-
klass = Class.new(ActiveRecord::Base)
|
73
|
-
table = Arel::Table.new('users')
|
74
|
-
@g.presentable = ActiveRecord::Relation.new(klass, table)
|
75
|
-
assert !@g.paginate?
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_paginated_relations_will_paginate
|
79
|
-
klass = Class.new(ActiveRecord::Base)
|
80
|
-
table = Arel::Table.new('users')
|
81
|
-
@g.presentable = ActiveRecord::Relation.new(klass, table).page(1)
|
82
|
-
assert @g.paginate?
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
class GridFieldTest < Presenting::Test
|
88
|
-
def setup
|
89
|
-
@f = Presentation::Grid::Field.new
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_default_sorting_for_field
|
93
|
-
@f.name = "First Name"
|
94
|
-
assert @f.sortable?
|
95
|
-
assert_equal "first_name", @f.sort_name
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_sortable_field
|
99
|
-
@f.name = "First Name"
|
100
|
-
@f.sortable = true
|
101
|
-
assert @f.sortable?
|
102
|
-
assert_equal "first_name", @f.sort_name
|
103
|
-
end
|
104
|
-
|
105
|
-
def
|
106
|
-
@f.
|
107
|
-
@f.
|
108
|
-
assert @f.sortable?
|
109
|
-
assert_equal
|
110
|
-
end
|
111
|
-
|
112
|
-
def
|
113
|
-
@f.
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
def
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
@presentation
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
assert_select
|
158
|
-
assert_select
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class GridTest < Presenting::Test
|
4
|
+
def setup
|
5
|
+
@g = Presentation::Grid.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_default_title
|
9
|
+
@g.id = "something_or_other"
|
10
|
+
assert_equal "Something Or Other", @g.title
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_adding_a_field_by_name
|
14
|
+
@g.fields = ["foo"]
|
15
|
+
assert_equal "foo", @g.fields.first.name, "name is stringified"
|
16
|
+
assert_equal "foo", @g.fields.first.value, "value is assumed to be a method"
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_adding_a_field_by_name_and_value
|
20
|
+
@g.fields = [{"foo" => :bar}]
|
21
|
+
assert_equal "foo", @g.fields.first.name, "key is name"
|
22
|
+
assert_equal :bar, @g.fields.first.value, "value is value"
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_adding_a_field_by_name_and_options
|
26
|
+
@g.fields = [{"foo" => {:value => :bar}}]
|
27
|
+
assert_equal "foo", @g.fields.first.name, "key is name"
|
28
|
+
assert_equal :bar, @g.fields.first.value, "value is found and saved"
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_adding_links_as_strings
|
32
|
+
@g.links = ['<a href="/foo">foo</a>']
|
33
|
+
assert_equal 1, @g.links.size
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_adding_links_as_procs
|
37
|
+
assert_raises ArgumentError do
|
38
|
+
@g.links = [proc{|record| link_to(record.name, record)}]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_adding_record_links_as_procs
|
43
|
+
@g.record_links = [proc{|record| link_to(record.name, record)}]
|
44
|
+
assert_equal 1, @g.record_links.size
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_adding_nil_record_links
|
48
|
+
assert_nothing_raised do
|
49
|
+
# this would happen if a link sometimes did not appear
|
50
|
+
@g.record_links = [nil]
|
51
|
+
end
|
52
|
+
assert @g.record_links.empty?
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_adding_record_links_as_strings
|
56
|
+
assert_raises ArgumentError do
|
57
|
+
@g.record_links = ['<a href="/foo">foo</a>']
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_arrays_will_not_paginate
|
62
|
+
@g.presentable = []
|
63
|
+
assert !@g.paginate?
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_paginated_collections_will_paginate
|
67
|
+
@g.presentable = WillPaginate::Collection.new(1, 1)
|
68
|
+
assert @g.paginate?
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_unpaged_relations_will_not_paginate
|
72
|
+
klass = Class.new(ActiveRecord::Base)
|
73
|
+
table = Arel::Table.new('users')
|
74
|
+
@g.presentable = ActiveRecord::Relation.new(klass, table)
|
75
|
+
assert !@g.paginate?
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_paginated_relations_will_paginate
|
79
|
+
klass = Class.new(ActiveRecord::Base)
|
80
|
+
table = Arel::Table.new('users')
|
81
|
+
@g.presentable = ActiveRecord::Relation.new(klass, table).page(1)
|
82
|
+
assert @g.paginate?
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
class GridFieldTest < Presenting::Test
|
88
|
+
def setup
|
89
|
+
@f = Presentation::Grid::Field.new
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_default_sorting_for_field
|
93
|
+
@f.name = "First Name"
|
94
|
+
assert @f.sortable?
|
95
|
+
assert_equal "first_name", @f.sort_name
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_sortable_field
|
99
|
+
@f.name = "First Name"
|
100
|
+
@f.sortable = true
|
101
|
+
assert @f.sortable?
|
102
|
+
assert_equal "first_name", @f.sort_name
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_sortable_field_with_delayed_name
|
106
|
+
@f.sortable = true
|
107
|
+
@f.name = 'First Name'
|
108
|
+
assert @f.sortable?
|
109
|
+
assert_equal 'first_name', @f.sort_name
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_specified_sort_name
|
113
|
+
@f.name = "First Name"
|
114
|
+
@f.sortable = "foo"
|
115
|
+
assert @f.sortable?
|
116
|
+
assert_equal "foo", @f.sort_name
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_unsortable_field
|
120
|
+
@f.sortable = false
|
121
|
+
assert !@f.sortable?
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
class GridRenderTest < Presentation::RenderTest
|
126
|
+
def setup
|
127
|
+
Rails.application.routes.draw do resources :users end
|
128
|
+
@presentation = Presentation::Grid.new(:id => "users", :fields => [:name, :email])
|
129
|
+
@records = [
|
130
|
+
stub('user', :name => 'foo', :email => 'foo@example.com'),
|
131
|
+
stub('user', :name => 'bar', :email => 'bar@example.com')
|
132
|
+
]
|
133
|
+
@presentation.presentable = @records
|
134
|
+
@presentation.controller = ActionView::TestCase::TestController.new
|
135
|
+
@presentation.controller.params = {:controller => 'users', :action => 'index'} # WillPaginate reuses existing params
|
136
|
+
end
|
137
|
+
|
138
|
+
def teardown
|
139
|
+
Rails.application.reload_routes!
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_rendering_the_title
|
143
|
+
assert_select "#users table caption", 'Users'
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_rendering_links
|
147
|
+
@presentation.links = ['<a href="/foo" class="foo">bar</a>'.html_safe]
|
148
|
+
|
149
|
+
assert_select '#users caption ul.actions' do
|
150
|
+
assert_select 'li a.foo', 'bar'
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_rendering_record_links
|
155
|
+
@presentation.record_links = [proc{|r| "<a href='/foo' class='record-link'>#{r.name}</a>".html_safe}]
|
156
|
+
|
157
|
+
assert_select '#users tbody tr td ul.actions' do
|
158
|
+
assert_select 'li a.record-link', 'foo'
|
159
|
+
assert_select 'li a.record-link', 'bar'
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_rendering_column_headers
|
164
|
+
assert_select "#users" do
|
165
|
+
assert_select "thead" do
|
166
|
+
assert_select "th.name", "Name"
|
167
|
+
assert_select "th.email", "Email"
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_rendering_rows
|
173
|
+
assert_select "#users tbody" do
|
174
|
+
assert_select "tr:nth-child(1)" do
|
175
|
+
assert_select 'td.name', 'foo'
|
176
|
+
assert_select 'td.email', 'foo@example.com'
|
177
|
+
end
|
178
|
+
assert_select "tr:nth-child(2)" do
|
179
|
+
assert_select 'td.name', 'bar'
|
180
|
+
assert_select 'td.email', 'bar@example.com'
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_rendering_no_rows
|
186
|
+
@presentation.presentable = []
|
187
|
+
assert_select "#users tbody" do
|
188
|
+
assert_select "tr", 1
|
189
|
+
assert_select "tr td", "No records found."
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_rendering_sanitized_data
|
194
|
+
@presentation.fields['Name'].sanitize = true
|
195
|
+
@presentation.fields['Email'].sanitize = false
|
196
|
+
@records << stub('row', :name => '&', :email => '&')
|
197
|
+
|
198
|
+
assert_select "#users tbody tr" do
|
199
|
+
assert_select 'td.name', '&'
|
200
|
+
assert_select 'td.email', '&'
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_rendering_sanitized_arrays
|
205
|
+
@records << stub('row', :name => ['bob', '&', 'lucy'], :email => '')
|
206
|
+
|
207
|
+
assert_select "#users tbody tr" do
|
208
|
+
assert_select 'td.name' do
|
209
|
+
assert_select 'ol li:nth-child(2)', '&'
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_rendering_with_pagination
|
215
|
+
@presentation.presentable = WillPaginate::Collection.new(1, 1, 2)
|
216
|
+
assert_select '#users tfoot .pagination'
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_rendering_sortable_columns
|
220
|
+
@presentation.fields.each{|f| f.sortable = true}
|
221
|
+
|
222
|
+
assert_select "#users thead" do
|
223
|
+
assert_select "th a.sortable", "Name"
|
224
|
+
assert_select "th a.sortable", "Email"
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_rendering_unsortable_columns
|
229
|
+
@presentation.fields.each{|f| f.sortable = false}
|
230
|
+
|
231
|
+
assert_select "#users thead" do
|
232
|
+
assert_select "th", "Name"
|
233
|
+
assert_select "th", "Email"
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
def test_rendering_a_sorted_column
|
238
|
+
@presentation.fields.each{|f| f.sortable = true}
|
239
|
+
@presentation.controller.request.env['QUERY_STRING'] = 'sort[name]=desc'
|
240
|
+
|
241
|
+
assert_select "#users thead" do
|
242
|
+
assert_select "th a.sortable[href='?sort[name]=asc']", "Name"
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
data/test/helpers_test.rb
CHANGED
@@ -1,72 +1,72 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
2
|
-
require 'action_view/test_case'
|
3
|
-
|
4
|
-
class Presenting::HelpersTest < ActionView::TestCase
|
5
|
-
|
6
|
-
def test_presenting_a_boolean
|
7
|
-
assert_equal 'False', present(false)
|
8
|
-
assert_equal 'True', present(true)
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_presenting_a_nil
|
12
|
-
assert_equal "", present(nil)
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_presenting_an_array_creates_an_ordered_list
|
16
|
-
assert present(['hello', 'world']) =~ %r|^<ol>.*</ol>$|
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_presenting_an_array_presents_the_members
|
20
|
-
assert present([true]).include?("<li>True</li>")
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_presenting_a_hash_creates_a_definition_list
|
24
|
-
assert present({1 => 'a'}) =~ %r|^<dl>.*</dl>$|
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_presenting_a_hash_sorts_by_hash_keys
|
28
|
-
assert present({1 => 'a', 4 => 'd', 3 => 'c', 2 => 'b'}) =~ /^.*a.*b.*c.*d.*$/
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_presenting_a_hash_presents_the_values
|
32
|
-
assert present({1 => true}).include?("<dd>True</dd>")
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_presenting_a_time
|
36
|
-
assert_equal 'Fri, 13 Feb 2009 02:31:00 +0000', present(Time.parse('02/13/2009 02:31 AM UTC').to_time)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_presenting_a_date
|
40
|
-
assert_equal '2009-02-13', present(Time.parse('02/13/2009 02:31 AM').to_date)
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_presenting_a_string
|
44
|
-
assert_equal "hello world", present("hello world")
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_presenting_a_named_method
|
48
|
-
assert_equal "<span>hello world</span>", present('hello world', :in_a_span)
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_presenting_a_symbol
|
52
|
-
assert_equal "<span></span>", present(:in_a_span)
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_presenting_a_named_presentation
|
56
|
-
self.expects(:controller).returns(ActionView::TestCase::TestController.new)
|
57
|
-
Presentation::Grid.any_instance.expects(:render)
|
58
|
-
present('hello', :grid)
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_presenting_an_unknown_presentation
|
62
|
-
assert_raises ArgumentError do
|
63
|
-
present(@users, :unknown)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
protected
|
68
|
-
|
69
|
-
def present_in_a_span(str, options = {})
|
70
|
-
"<span>#{str}</span>"
|
71
|
-
end
|
72
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require 'action_view/test_case'
|
3
|
+
|
4
|
+
class Presenting::HelpersTest < ActionView::TestCase
|
5
|
+
|
6
|
+
def test_presenting_a_boolean
|
7
|
+
assert_equal 'False', present(false)
|
8
|
+
assert_equal 'True', present(true)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_presenting_a_nil
|
12
|
+
assert_equal "", present(nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_presenting_an_array_creates_an_ordered_list
|
16
|
+
assert present(['hello', 'world']) =~ %r|^<ol>.*</ol>$|
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_presenting_an_array_presents_the_members
|
20
|
+
assert present([true]).include?("<li>True</li>")
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_presenting_a_hash_creates_a_definition_list
|
24
|
+
assert present({1 => 'a'}) =~ %r|^<dl>.*</dl>$|
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_presenting_a_hash_sorts_by_hash_keys
|
28
|
+
assert present({1 => 'a', 4 => 'd', 3 => 'c', 2 => 'b'}) =~ /^.*a.*b.*c.*d.*$/
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_presenting_a_hash_presents_the_values
|
32
|
+
assert present({1 => true}).include?("<dd>True</dd>")
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_presenting_a_time
|
36
|
+
assert_equal 'Fri, 13 Feb 2009 02:31:00 +0000', present(Time.parse('02/13/2009 02:31 AM UTC').to_time)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_presenting_a_date
|
40
|
+
assert_equal '2009-02-13', present(Time.parse('02/13/2009 02:31 AM').to_date)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_presenting_a_string
|
44
|
+
assert_equal "hello world", present("hello world")
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_presenting_a_named_method
|
48
|
+
assert_equal "<span>hello world</span>", present('hello world', :in_a_span)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_presenting_a_symbol
|
52
|
+
assert_equal "<span></span>", present(:in_a_span)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_presenting_a_named_presentation
|
56
|
+
self.expects(:controller).returns(ActionView::TestCase::TestController.new)
|
57
|
+
Presentation::Grid.any_instance.expects(:render)
|
58
|
+
present('hello', :grid)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_presenting_an_unknown_presentation
|
62
|
+
assert_raises ArgumentError do
|
63
|
+
present(@users, :unknown)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
protected
|
68
|
+
|
69
|
+
def present_in_a_span(str, options = {})
|
70
|
+
"<span>#{str}</span>"
|
71
|
+
end
|
72
|
+
end
|
data/test/presenting_test.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
2
|
-
|
3
|
-
class PresentationTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def test_rendering
|
6
|
-
# TODO: create a "hello world" test-only setup so i can test rendering
|
7
|
-
@p = Presentation::Grid.new(:id => "hello_world")
|
8
|
-
@p.presentable = []
|
9
|
-
@p.controller = ActionView::TestCase::TestController.new
|
10
|
-
assert_nothing_raised do
|
11
|
-
assert @p.render
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class PresentationTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_rendering
|
6
|
+
# TODO: create a "hello world" test-only setup so i can test rendering
|
7
|
+
@p = Presentation::Grid.new(:id => "hello_world")
|
8
|
+
@p.presentable = []
|
9
|
+
@p.controller = ActionView::TestCase::TestController.new
|
10
|
+
assert_nothing_raised do
|
11
|
+
assert @p.render
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|