presenting 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
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