attrtastic 0.1.3 → 0.2.0

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.
@@ -2,104 +2,432 @@ require 'helper'
2
2
 
3
3
  class TestAttributes < Test::Unit::TestCase
4
4
 
5
- def setup
6
- setup_fixtures
7
- end
5
+ context "attributes" do
8
6
 
9
- def test__attributes__shoul_run_block
10
- block_run = false
11
- @user_builder.attributes do
12
- block_run = true
7
+ setup do
8
+ setup_fixtures
13
9
  end
14
10
 
15
- assert block_run
16
- end
11
+ should "run block" do
12
+ block_run = false
13
+ @user_builder.attributes do
14
+ block_run = true
15
+ end
17
16
 
18
- def test__attributes__output_without_block
19
- expected = html <<-EOHTML
20
- <div class="attributes">
21
- </div>
22
- EOHTML
17
+ assert block_run
18
+ end
23
19
 
24
- @user_builder.attributes
25
- actual = @template.output_buffer.to_s
20
+ should "generate output even when no block given" do
21
+ expected = html <<-EOHTML
22
+ <div class="attributes">
23
+ </div>
24
+ EOHTML
26
25
 
27
- assert_equal expected, actual
28
- end
26
+ @user_builder.attributes
27
+ actual = @template.output_buffer.to_s
29
28
 
30
- def test__attributes__output
31
- expected = html <<-EOHTML
32
- <div class="attributes">
33
- <ol>
34
- </ol>
35
- </div>
36
- EOHTML
29
+ assert_equal expected, actual
30
+ end
37
31
 
38
- @user_builder.attributes do end
39
- actual = @template.output_buffer.to_s
32
+ should "generate output with block given" do
33
+ expected = html <<-EOHTML
34
+ <div class="attributes">
35
+ <ol>
36
+ </ol>
37
+ </div>
38
+ EOHTML
40
39
 
41
- assert_equal expected, actual
42
- end
40
+ @user_builder.attributes do end
41
+ actual = @template.output_buffer.to_s
43
42
 
44
- def test__attributes__with_header
45
- expected = html <<-EOHTML
46
- <div class="attributes">
47
- <div class="legend">Legend</div>
48
- <ol>
49
- </ol>
50
- </div>
51
- EOHTML
52
-
53
- @user_builder.attributes "Legend" do end
54
- actual = @template.output_buffer.to_s
55
- assert_equal expected, actual
56
- end
43
+ assert_equal expected, actual
44
+ end
57
45
 
58
- def test__attributes__with_fields_list
59
- expected = html <<-EOHTML
60
- <div class="attributes">
61
- <ol>
62
- <li class="attribute">
63
- <span class="label">Full name</span>
64
- <span class="value">Doe, John</span>
65
- </li>
66
- <li class="attribute">
67
- <span class="label">Email</span>
68
- <span class="value">john@doe.com</span>
69
- </li>
70
- </ol>
71
- </div>
72
- EOHTML
73
-
74
- @user_builder.attributes :full_name, :email
75
- actual = @template.output_buffer.to_s
76
- assert_equal expected, actual
77
- end
46
+ should "show header" do
47
+ expected = html <<-EOHTML
48
+ <div class="attributes">
49
+ <div class="legend">Legend</div>
50
+ <ol>
51
+ </ol>
52
+ </div>
53
+ EOHTML
78
54
 
79
- def test__attributes__with_fields_list_header_and_options
80
- expected = html <<-EOHTML
81
- <div class="attributes contact">
82
- <div class="legend">Contact</div>
83
- <ol>
84
- <li class="attribute">
85
- <span class="label">Full name</span>
86
- <span class="value">Doe, John</span>
87
- </li>
88
- <li class="attribute">
89
- <span class="label">Title</span>
90
- <span class="value"></span>
91
- </li>
92
- <li class="attribute">
93
- <span class="label">Email</span>
94
- <span class="value">john@doe.com</span>
95
- </li>
96
- </ol>
97
- </div>
98
- EOHTML
99
-
100
- @user_builder.attributes "Contact", :full_name, :title, :email, :html => {:class => "contact"}, :display_empty => true
101
- actual = @template.output_buffer.to_s
102
- assert_equal expected, actual
103
- end
55
+ @user_builder.attributes "Legend" do end
56
+ actual = @template.output_buffer.to_s
57
+ assert_equal expected, actual
58
+
59
+ @template.output_buffer.clear
60
+ @user_builder.attributes :name => "Legend" do end
61
+ actual = @template.output_buffer.to_s
62
+ assert_equal expected, actual
63
+ end
64
+
65
+ context "with fields list" do
66
+
67
+ should "generate output" do
68
+ expected = html <<-EOHTML
69
+ <div class="attributes">
70
+ <ol>
71
+ <li class="attribute">
72
+ <span class="label">Full name</span>
73
+ <span class="value">Doe, John</span>
74
+ </li>
75
+ <li class="attribute">
76
+ <span class="label">Email</span>
77
+ <span class="value">john@doe.com</span>
78
+ </li>
79
+ </ol>
80
+ </div>
81
+ EOHTML
82
+
83
+ @user_builder.attributes :full_name, :email
84
+ actual = @template.output_buffer.to_s
85
+ assert_equal expected, actual
86
+ end
87
+
88
+ should "show header" do
89
+ expected = html <<-EOHTML
90
+ <div class="attributes contact">
91
+ <div class="legend">Contact</div>
92
+ <ol>
93
+ <li class="attribute">
94
+ <span class="label">Full name</span>
95
+ <span class="value">Doe, John</span>
96
+ </li>
97
+ <li class="attribute">
98
+ <span class="label">Title</span>
99
+ <span class="value"></span>
100
+ </li>
101
+ <li class="attribute">
102
+ <span class="label">Email</span>
103
+ <span class="value">john@doe.com</span>
104
+ </li>
105
+ </ol>
106
+ </div>
107
+ EOHTML
108
+
109
+ @user_builder.attributes "Contact", :full_name, :title, :email, :html => {:class => "contact"}, :display_empty => true
110
+ actual = @template.output_buffer.to_s
111
+ assert_equal expected, actual
112
+ end
113
+
114
+ end
115
+
116
+ context "with :for option" do
117
+ should "yield block" do
118
+ block_run = false
119
+ @blog_builder.attributes :for => nil do |author|
120
+ block_run = true
121
+ end
122
+
123
+ assert block_run
124
+ end
125
+
126
+ end
127
+
128
+ context "with :for => :method_name pointing to single object" do
129
+
130
+ should "allow to access inner object" do
131
+ @blog_builder.attributes :for => :author do |author|
132
+
133
+ assert_equal @blog.author, author.record
134
+
135
+ end
136
+ end
137
+
138
+ should "generate output for given inner object" do
139
+ @blog_builder.attributes :for => :author do |author|
140
+
141
+ expected = html <<-EOHTML
142
+ <li class="attribute">
143
+ <span class="label">Full name</span>
144
+ <span class="value">Doe, John</span>
145
+ </li>
146
+ EOHTML
147
+
148
+ actual = author.attribute :full_name
149
+ assert_equal expected, actual
150
+
151
+ end
152
+
153
+ expected = html <<-EOHTML
154
+ <div class="attributes">
155
+ <ol>
156
+ </ol>
157
+ </div>
158
+ EOHTML
159
+
160
+ actual = @template.output_buffer
161
+ assert_equal expected, actual
162
+ end
163
+
164
+ should "show header" do
165
+ @blog_builder.attributes "Author", :for => :author do |author|
166
+ end
167
+
168
+ expected = html <<-EOHTML
169
+ <div class="attributes">
170
+ <div class="legend">Author</div>
171
+ <ol>
172
+ </ol>
173
+ </div>
174
+ EOHTML
175
+
176
+ actual = @template.output_buffer
177
+ assert_equal expected, actual
178
+ end
179
+
180
+ should "work with field list" do
181
+ expected = html <<-EOHTML
182
+ <div class="attributes">
183
+ <ol>
184
+ <li class="attribute">
185
+ <span class="label">Full name</span>
186
+ <span class="value">Doe, John</span>
187
+ </li>
188
+ </ol>
189
+ </div>
190
+ EOHTML
191
+
192
+ @blog_builder.attributes :full_name, :for => :author
193
+
194
+ actual = @template.output_buffer
195
+ assert_equal expected, actual
196
+ end
197
+ end
198
+
199
+ context "with :for => object" do
200
+
201
+ should "allow to acces given object" do
202
+ @blog_builder.attributes :for => @user do |author|
203
+
204
+ assert_equal @user, author.record
205
+
206
+ end
207
+ end
208
+
209
+ should "generate output for given inner object" do
210
+ @blog_builder.attributes :for => @user do |author|
104
211
 
212
+ expected = html <<-EOHTML
213
+ <li class="attribute">
214
+ <span class="label">Full name</span>
215
+ <span class="value">Doe, John</span>
216
+ </li>
217
+ EOHTML
218
+
219
+ actual = author.attribute :full_name
220
+ assert_equal expected, actual
221
+
222
+ end
223
+
224
+ expected = html <<-EOHTML
225
+ <div class="attributes">
226
+ <ol>
227
+ </ol>
228
+ </div>
229
+ EOHTML
230
+
231
+ actual = @template.output_buffer
232
+ assert_equal expected, actual
233
+ end
234
+
235
+ should "show header" do
236
+ @blog_builder.attributes "Author", :for => @user do |author|
237
+ end
238
+
239
+ expected = html <<-EOHTML
240
+ <div class="attributes">
241
+ <div class="legend">Author</div>
242
+ <ol>
243
+ </ol>
244
+ </div>
245
+ EOHTML
246
+
247
+ actual = @template.output_buffer
248
+ assert_equal expected, actual
249
+ end
250
+
251
+ should "work with field list" do
252
+ expected = html <<-EOHTML
253
+ <div class="attributes">
254
+ <ol>
255
+ <li class="attribute">
256
+ <span class="label">Full name</span>
257
+ <span class="value">Doe, John</span>
258
+ </li>
259
+ </ol>
260
+ </div>
261
+ EOHTML
262
+
263
+ @blog_builder.attributes :full_name, :for => @user
264
+
265
+ actual = @template.output_buffer
266
+ assert_equal expected, actual
267
+ end
268
+ end
269
+
270
+ context "with :for => :method_name pointing to collection" do
271
+
272
+ should "allow to access inner objects one by one" do
273
+ posts = []
274
+
275
+ @blog_builder.attributes :for => :posts do |post|
276
+
277
+ posts << post.record
278
+
279
+ end
280
+
281
+ assert_equal @blog.posts, posts
282
+ end
283
+
284
+ should "generate output for given objects" do
285
+ @blog_builder.attributes :for => :posts do |post|
286
+ end
287
+
288
+ expected = html <<-EOHTML
289
+ <div class="attributes">
290
+ <ol>
291
+ </ol>
292
+ </div>
293
+ <div class="attributes">
294
+ <ol>
295
+ </ol>
296
+ </div>
297
+ EOHTML
298
+
299
+ actual = @template.output_buffer
300
+ assert_equal expected, actual
301
+ end
302
+
303
+ should "show header" do
304
+ @blog_builder.attributes "Post", :for => :posts do |post|
305
+ end
306
+
307
+ expected = html <<-EOHTML
308
+ <div class="attributes">
309
+ <div class="legend">Post</div>
310
+ <ol>
311
+ </ol>
312
+ </div>
313
+ <div class="attributes">
314
+ <div class="legend">Post</div>
315
+ <ol>
316
+ </ol>
317
+ </div>
318
+ EOHTML
319
+
320
+ actual = @template.output_buffer
321
+ assert_equal expected, actual
322
+ end
323
+
324
+ should "work with field list" do
325
+ expected = html <<-EOHTML
326
+ <div class="attributes">
327
+ <ol>
328
+ <li class="attribute">
329
+ <span class="label">Title</span>
330
+ <span class="value">Hello World!</span>
331
+ </li>
332
+ </ol>
333
+ </div>
334
+ <div class="attributes">
335
+ <ol>
336
+ <li class="attribute">
337
+ <span class="label">Title</span>
338
+ <span class="value">Sorry</span>
339
+ </li>
340
+ </ol>
341
+ </div>
342
+ EOHTML
343
+
344
+ @blog_builder.attributes :title, :for => :posts
345
+
346
+ actual = @template.output_buffer
347
+ assert_equal expected, actual
348
+ end
349
+ end
350
+
351
+ context "with :for => collection" do
352
+
353
+ should "allow to access inner objects one by one" do
354
+ posts = []
355
+
356
+ @blog_builder.attributes :for => @blog.posts do |post|
357
+
358
+ posts << post.record
359
+
360
+ end
361
+
362
+ assert_equal @blog.posts, posts
363
+ end
364
+
365
+ should "generate output for given objects" do
366
+ @blog_builder.attributes :for => @blog.posts do |post|
367
+ end
368
+
369
+ expected = html <<-EOHTML
370
+ <div class="attributes">
371
+ <ol>
372
+ </ol>
373
+ </div>
374
+ <div class="attributes">
375
+ <ol>
376
+ </ol>
377
+ </div>
378
+ EOHTML
379
+
380
+ actual = @template.output_buffer
381
+ assert_equal expected, actual
382
+ end
383
+
384
+ should "show header" do
385
+ @blog_builder.attributes "Post", :for => @blog.posts do |post|
386
+ end
387
+
388
+ expected = html <<-EOHTML
389
+ <div class="attributes">
390
+ <div class="legend">Post</div>
391
+ <ol>
392
+ </ol>
393
+ </div>
394
+ <div class="attributes">
395
+ <div class="legend">Post</div>
396
+ <ol>
397
+ </ol>
398
+ </div>
399
+ EOHTML
400
+
401
+ actual = @template.output_buffer
402
+ assert_equal expected, actual
403
+ end
404
+
405
+ should "work with field list" do
406
+ expected = html <<-EOHTML
407
+ <div class="attributes">
408
+ <ol>
409
+ <li class="attribute">
410
+ <span class="label">Title</span>
411
+ <span class="value">Hello World!</span>
412
+ </li>
413
+ </ol>
414
+ </div>
415
+ <div class="attributes">
416
+ <ol>
417
+ <li class="attribute">
418
+ <span class="label">Title</span>
419
+ <span class="value">Sorry</span>
420
+ </li>
421
+ </ol>
422
+ </div>
423
+ EOHTML
424
+
425
+ @blog_builder.attributes :title, :for => @blog.posts
426
+
427
+ actual = @template.output_buffer
428
+ assert_equal expected, actual
429
+ end
430
+ end
431
+
432
+ end
105
433
  end
@@ -2,87 +2,91 @@ require 'helper'
2
2
 
3
3
  class TestAttrtastic < Test::Unit::TestCase
4
4
 
5
- def setup
6
- setup_fixtures
7
- end
5
+ context "Attrtastic" do
8
6
 
9
- def test_attrtastic_verbose
10
- expected = html <<-EOHTML
11
- <div class="attrtastic user">
12
- <div class="attributes">
13
- <div class="legend">User</div>
14
- <ol>
15
- <li class="attribute strong">
16
- <span class="label">First name</span>
17
- <span class="value">John</span>
18
- </li>
19
- <li class="attribute">
20
- <span class="label">Last name</span>
21
- <span class="value">Doe</span>
22
- </li>
23
- </ol>
24
- </div>
7
+ setup do
8
+ setup_fixtures
9
+ end
25
10
 
26
- <div class="attributes">
27
- <div class="legend">Contact</div>
28
- <ol>
29
- <li class="attribute">
30
- <span class="label">Email</span>
31
- <span class="value">john@doe.com</span>
32
- </li>
33
- </ol>
11
+ should "work with verbose syntax version" do
12
+ expected = html <<-EOHTML
13
+ <div class="attrtastic user">
14
+ <div class="attributes">
15
+ <div class="legend">User</div>
16
+ <ol>
17
+ <li class="attribute strong">
18
+ <span class="label">First name</span>
19
+ <span class="value">John</span>
20
+ </li>
21
+ <li class="attribute">
22
+ <span class="label">Last name</span>
23
+ <span class="value">Doe</span>
24
+ </li>
25
+ </ol>
26
+ </div>
27
+
28
+ <div class="attributes">
29
+ <div class="legend">Contact</div>
30
+ <ol>
31
+ <li class="attribute">
32
+ <span class="label">Email</span>
33
+ <span class="value">john@doe.com</span>
34
+ </li>
35
+ </ol>
36
+ </div>
34
37
  </div>
35
- </div>
36
- EOHTML
38
+ EOHTML
37
39
 
38
- @template.semantic_attributes_for(@user) do |attr|
39
- attr.attributes "User" do
40
- @template.output_buffer << (attr.attribute :first_name, :html => {:class => :strong}).to_s
41
- @template.output_buffer << (attr.attribute :last_name).to_s
42
- @template.output_buffer << (attr.attribute :title).to_s
43
- end
44
- attr.attributes "Contact" do
45
- @template.output_buffer << (attr.attribute :email).to_s
40
+ @template.semantic_attributes_for(@user) do |attr|
41
+ attr.attributes "User" do
42
+ @template.output_buffer << (attr.attribute :first_name, :html => {:class => :strong}).to_s
43
+ @template.output_buffer << (attr.attribute :last_name).to_s
44
+ @template.output_buffer << (attr.attribute :title).to_s
45
+ end
46
+ attr.attributes :name => "Contact" do
47
+ @template.output_buffer << (attr.attribute :email).to_s
48
+ end
46
49
  end
47
- end
48
50
 
49
- actual = @template.output_buffer.to_s
50
- assert_equal expected, actual
51
- end
51
+ actual = @template.output_buffer.to_s
52
+ assert_equal expected, actual
53
+ end
52
54
 
53
- def test_attrtastic_compct
54
- expected = html <<-EOHTML
55
- <div class="attrtastic user">
56
- <div class="attributes">
57
- <div class="legend">User</div>
58
- <ol>
59
- <li class="attribute">
60
- <span class="label">First name</span>
61
- <span class="value">John</span>
62
- </li>
63
- <li class="attribute">
64
- <span class="label">Last name</span>
65
- <span class="value">Doe</span>
66
- </li>
67
- </ol>
68
- </div>
55
+ should "work with compact syntax version" do
56
+ expected = html <<-EOHTML
57
+ <div class="attrtastic user">
58
+ <div class="attributes">
59
+ <div class="legend">User</div>
60
+ <ol>
61
+ <li class="attribute">
62
+ <span class="label">First name</span>
63
+ <span class="value">John</span>
64
+ </li>
65
+ <li class="attribute">
66
+ <span class="label">Last name</span>
67
+ <span class="value">Doe</span>
68
+ </li>
69
+ </ol>
70
+ </div>
69
71
 
70
- <div class="attributes">
71
- <div class="legend">Contact</div>
72
- <ol>
73
- <li class="attribute">
74
- <span class="label">Email</span>
75
- <span class="value">john@doe.com</span>
76
- </li>
77
- </ol>
72
+ <div class="attributes">
73
+ <div class="legend">Contact</div>
74
+ <ol>
75
+ <li class="attribute">
76
+ <span class="label">Email</span>
77
+ <span class="value">john@doe.com</span>
78
+ </li>
79
+ </ol>
80
+ </div>
78
81
  </div>
79
- </div>
80
- EOHTML
82
+ EOHTML
81
83
 
82
- @template.semantic_attributes_for(@user) do |attr|
83
- attr.attributes "User", :first_name, :last_name, :title
84
- attr.attributes "Contact", :email
84
+ @template.semantic_attributes_for(@user) do |attr|
85
+ attr.attributes "User", :first_name, :last_name, :title
86
+ attr.attributes "Contact", :email
87
+ end
85
88
  end
89
+
86
90
  end
87
91
 
88
92
  end