attrtastic 0.1.3 → 0.2.0

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