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.
Files changed (63) hide show
  1. data/LICENSE +20 -20
  2. data/README +10 -10
  3. data/Rakefile +22 -22
  4. data/app/assets/javascripts/search.js +13 -13
  5. data/app/assets/stylesheets/details-color.css +7 -7
  6. data/app/assets/stylesheets/details.css +10 -10
  7. data/app/assets/stylesheets/form.css +1 -1
  8. data/app/assets/stylesheets/grid-color.css +71 -71
  9. data/app/assets/stylesheets/grid.css +64 -64
  10. data/app/assets/stylesheets/search-color.css +16 -16
  11. data/app/assets/stylesheets/search.css +45 -45
  12. data/app/controllers/presentation/assets_controller.rb +42 -42
  13. data/app/views/presentations/_details.erb +11 -11
  14. data/app/views/presentations/_field_search.erb +14 -14
  15. data/app/views/presentations/_form.erb +20 -20
  16. data/app/views/presentations/_grid.erb +70 -70
  17. data/app/views/presentations/_search.erb +7 -7
  18. data/lib/presentation/base.rb +31 -31
  19. data/lib/presentation/details.rb +21 -21
  20. data/lib/presentation/field_search.rb +67 -67
  21. data/lib/presentation/form.rb +149 -149
  22. data/lib/presentation/grid.rb +162 -160
  23. data/lib/presentation/search.rb +9 -9
  24. data/lib/presenting/attribute.rb +51 -51
  25. data/lib/presenting/configurable.rb +10 -10
  26. data/lib/presenting/defaults.rb +10 -10
  27. data/lib/presenting/field_set.rb +26 -26
  28. data/lib/presenting/form_helpers.rb +51 -51
  29. data/lib/presenting/helpers.rb +114 -114
  30. data/lib/presenting/sanitize.rb +19 -19
  31. data/lib/presenting/search.rb +185 -185
  32. data/lib/presenting/sorting.rb +87 -87
  33. data/test/attribute_test.rb +61 -61
  34. data/test/configurable_test.rb +20 -20
  35. data/test/details_test.rb +68 -68
  36. data/test/field_search_test.rb +102 -102
  37. data/test/field_set_test.rb +46 -46
  38. data/test/grid_test.rb +246 -239
  39. data/test/helpers_test.rb +72 -72
  40. data/test/presenting_test.rb +15 -15
  41. data/test/r3/Gemfile +7 -7
  42. data/test/r3/Gemfile.lock +86 -82
  43. data/test/r3/config/application.rb +12 -12
  44. data/test/r3/config/boot.rb +6 -6
  45. data/test/r3/config/database.yml +22 -22
  46. data/test/r3/config/environment.rb +5 -5
  47. data/test/r3/config/environments/test.rb +35 -35
  48. data/test/r3/db/test.sqlite3 +0 -0
  49. data/test/r3/log/test.log +336 -0
  50. data/test/r3/public/javascripts/presenting/grid.js +0 -0
  51. data/test/r3/public/javascripts/presenting/search.js +13 -13
  52. data/test/r3/public/stylesheets/presenting/details-color.css +7 -7
  53. data/test/r3/public/stylesheets/presenting/details.css +10 -10
  54. data/test/r3/public/stylesheets/presenting/form.css +1 -1
  55. data/test/r3/public/stylesheets/presenting/grid-color.css +71 -71
  56. data/test/r3/public/stylesheets/presenting/grid.css +64 -64
  57. data/test/r3/public/stylesheets/presenting/search-color.css +16 -16
  58. data/test/r3/public/stylesheets/presenting/search.css +45 -45
  59. data/test/sanitize_test.rb +15 -15
  60. data/test/search_conditions_test.rb +137 -137
  61. data/test/search_test.rb +30 -30
  62. data/test/sorting_test.rb +63 -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 test_specified_sort_name
106
- @f.name = "First Name"
107
- @f.sortable = "foo"
108
- assert @f.sortable?
109
- assert_equal "foo", @f.sort_name
110
- end
111
-
112
- def test_unsortable_field
113
- @f.sortable = false
114
- assert !@f.sortable?
115
- end
116
- end
117
-
118
- class GridRenderTest < Presentation::RenderTest
119
- def setup
120
- Rails.application.routes.draw do resources :users end
121
- @presentation = Presentation::Grid.new(:id => "users", :fields => [:name, :email])
122
- @records = [
123
- stub('user', :name => 'foo', :email => 'foo@example.com'),
124
- stub('user', :name => 'bar', :email => 'bar@example.com')
125
- ]
126
- @presentation.presentable = @records
127
- @presentation.controller = ActionView::TestCase::TestController.new
128
- @presentation.controller.params = {:controller => 'users', :action => 'index'} # WillPaginate reuses existing params
129
- end
130
-
131
- def teardown
132
- Rails.application.reload_routes!
133
- end
134
-
135
- def test_rendering_the_title
136
- assert_select "#users table caption", 'Users'
137
- end
138
-
139
- def test_rendering_links
140
- @presentation.links = ['<a href="/foo" class="foo">bar</a>'.html_safe]
141
-
142
- assert_select '#users caption ul.actions' do
143
- assert_select 'li a.foo', 'bar'
144
- end
145
- end
146
-
147
- def test_rendering_record_links
148
- @presentation.record_links = [proc{|r| "<a href='/foo' class='record-link'>#{r.name}</a>".html_safe}]
149
-
150
- assert_select '#users tbody tr td ul.actions' do
151
- assert_select 'li a.record-link', 'foo'
152
- assert_select 'li a.record-link', 'bar'
153
- end
154
- end
155
-
156
- def test_rendering_column_headers
157
- assert_select "#users" do
158
- assert_select "thead" do
159
- assert_select "th.name", "Name"
160
- assert_select "th.email", "Email"
161
- end
162
- end
163
- end
164
-
165
- def test_rendering_rows
166
- assert_select "#users tbody" do
167
- assert_select "tr:nth-child(1)" do
168
- assert_select 'td.name', 'foo'
169
- assert_select 'td.email', 'foo@example.com'
170
- end
171
- assert_select "tr:nth-child(2)" do
172
- assert_select 'td.name', 'bar'
173
- assert_select 'td.email', 'bar@example.com'
174
- end
175
- end
176
- end
177
-
178
- def test_rendering_no_rows
179
- @presentation.presentable = []
180
- assert_select "#users tbody" do
181
- assert_select "tr", 1
182
- assert_select "tr td", "No records found."
183
- end
184
- end
185
-
186
- def test_rendering_sanitized_data
187
- @presentation.fields['Name'].sanitize = true
188
- @presentation.fields['Email'].sanitize = false
189
- @records << stub('row', :name => '&', :email => '&')
190
-
191
- assert_select "#users tbody tr" do
192
- assert_select 'td.name', '&amp;'
193
- assert_select 'td.email', '&'
194
- end
195
- end
196
-
197
- def test_rendering_sanitized_arrays
198
- @records << stub('row', :name => ['bob', '&', 'lucy'], :email => '')
199
-
200
- assert_select "#users tbody tr" do
201
- assert_select 'td.name' do
202
- assert_select 'ol li:nth-child(2)', '&amp;'
203
- end
204
- end
205
- end
206
-
207
- def test_rendering_with_pagination
208
- @presentation.presentable = WillPaginate::Collection.new(1, 1, 2)
209
- assert_select '#users tfoot .pagination'
210
- end
211
-
212
- def test_rendering_sortable_columns
213
- @presentation.fields.each{|f| f.sortable = true}
214
-
215
- assert_select "#users thead" do
216
- assert_select "th a.sortable", "Name"
217
- assert_select "th a.sortable", "Email"
218
- end
219
- end
220
-
221
- def test_rendering_unsortable_columns
222
- @presentation.fields.each{|f| f.sortable = false}
223
-
224
- assert_select "#users thead" do
225
- assert_select "th", "Name"
226
- assert_select "th", "Email"
227
- end
228
- end
229
-
230
- def test_rendering_a_sorted_column
231
- @presentation.fields.each{|f| f.sortable = true}
232
- @presentation.controller.request.env['QUERY_STRING'] = 'sort[name]=desc'
233
-
234
- assert_select "#users thead" do
235
- assert_select "th a.sortable[href='?sort[name]=asc']", "Name"
236
- end
237
- end
238
- end
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', '&amp;'
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)', '&amp;'
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
@@ -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