olfactory 0.1.0 → 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.
- data/.travis.yml +9 -0
- data/LICENSE +1 -1
- data/README.md +144 -14
- data/Rakefile +30 -0
- data/lib/olfactory/dictionary.rb +13 -0
- data/lib/olfactory/sequence.rb +24 -0
- data/lib/olfactory/template.rb +33 -1
- data/lib/olfactory/template_definition.rb +27 -1
- data/lib/olfactory/version.rb +1 -1
- data/lib/olfactory.rb +61 -4
- data/olfactory.gemspec +3 -1
- data/spec/olfactory/dictionary_spec.rb +20 -0
- data/spec/olfactory/olfactory_spec.rb +0 -0
- data/spec/olfactory/sequence_spec.rb +83 -0
- data/spec/olfactory/template_spec.rb +508 -111
- data/spec/spec_helper.rb +0 -3
- metadata +44 -8
@@ -1,11 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Olfactory::Template do
|
4
|
-
before do
|
5
|
-
Olfactory.reload
|
6
|
-
end
|
7
4
|
context "has_one" do
|
8
|
-
before do
|
5
|
+
before(:context) do
|
9
6
|
Olfactory.template :widget do |t|
|
10
7
|
t.has_one :doodad
|
11
8
|
end
|
@@ -14,7 +11,7 @@ describe Olfactory::Template do
|
|
14
11
|
|
15
12
|
context "given a basic value" do
|
16
13
|
subject do
|
17
|
-
Olfactory.
|
14
|
+
Olfactory.build :widget do |t|
|
18
15
|
t.doodad value
|
19
16
|
end
|
20
17
|
end
|
@@ -24,7 +21,7 @@ describe Olfactory::Template do
|
|
24
21
|
end
|
25
22
|
context "given a block value" do
|
26
23
|
subject do
|
27
|
-
Olfactory.
|
24
|
+
Olfactory.build :widget do |t|
|
28
25
|
t.doodad { value }
|
29
26
|
end
|
30
27
|
end
|
@@ -33,14 +30,14 @@ describe Olfactory::Template do
|
|
33
30
|
end
|
34
31
|
end
|
35
32
|
context "with an alias" do
|
36
|
-
before do
|
33
|
+
before(:context) do
|
37
34
|
Olfactory.template :widget do |t|
|
38
35
|
t.has_one :doodad, :alias => :foo
|
39
36
|
end
|
40
37
|
end
|
41
38
|
context "given a basic value" do
|
42
39
|
subject do
|
43
|
-
Olfactory.
|
40
|
+
Olfactory.build :widget do |t|
|
44
41
|
t.foo value
|
45
42
|
end
|
46
43
|
end
|
@@ -50,7 +47,7 @@ describe Olfactory::Template do
|
|
50
47
|
end
|
51
48
|
context "given a block value" do
|
52
49
|
subject do
|
53
|
-
Olfactory.
|
50
|
+
Olfactory.build :widget do |t|
|
54
51
|
t.foo { value }
|
55
52
|
end
|
56
53
|
end
|
@@ -61,7 +58,7 @@ describe Olfactory::Template do
|
|
61
58
|
end
|
62
59
|
end
|
63
60
|
context "has_many" do
|
64
|
-
before do
|
61
|
+
before(:context) do
|
65
62
|
Olfactory.template :widget do |t|
|
66
63
|
t.has_many :doodad
|
67
64
|
end
|
@@ -69,7 +66,7 @@ describe Olfactory::Template do
|
|
69
66
|
let(:value) { "doodad" }
|
70
67
|
|
71
68
|
context "as generic collection" do
|
72
|
-
before do
|
69
|
+
before(:context) do
|
73
70
|
Olfactory.template :widget do |t|
|
74
71
|
t.has_many :doodads, :singular => :doodad
|
75
72
|
end
|
@@ -77,7 +74,7 @@ describe Olfactory::Template do
|
|
77
74
|
context "invoked as singular" do
|
78
75
|
context "given a basic value" do
|
79
76
|
subject do
|
80
|
-
Olfactory.
|
77
|
+
Olfactory.build :widget do |t|
|
81
78
|
t.doodad value
|
82
79
|
end
|
83
80
|
end
|
@@ -87,7 +84,7 @@ describe Olfactory::Template do
|
|
87
84
|
end
|
88
85
|
context "given a block value" do
|
89
86
|
subject do
|
90
|
-
Olfactory.
|
87
|
+
Olfactory.build :widget do |t|
|
91
88
|
t.doodad { value }
|
92
89
|
end
|
93
90
|
end
|
@@ -99,7 +96,7 @@ describe Olfactory::Template do
|
|
99
96
|
context "invoked as plural" do
|
100
97
|
context "given an integer & block value" do
|
101
98
|
subject do
|
102
|
-
Olfactory.
|
99
|
+
Olfactory.build :widget do |t|
|
103
100
|
t.doodads 2 do
|
104
101
|
value
|
105
102
|
end
|
@@ -111,7 +108,7 @@ describe Olfactory::Template do
|
|
111
108
|
end
|
112
109
|
context "given an array" do
|
113
110
|
subject do
|
114
|
-
Olfactory.
|
111
|
+
Olfactory.build :widget do |t|
|
115
112
|
t.doodads [value, value]
|
116
113
|
end
|
117
114
|
end
|
@@ -121,7 +118,7 @@ describe Olfactory::Template do
|
|
121
118
|
end
|
122
119
|
context "given a splattered set of arguments" do
|
123
120
|
subject do
|
124
|
-
Olfactory.
|
121
|
+
Olfactory.build :widget do |t|
|
125
122
|
t.doodads value, value
|
126
123
|
end
|
127
124
|
end
|
@@ -132,7 +129,7 @@ describe Olfactory::Template do
|
|
132
129
|
end
|
133
130
|
context "given sequential invocations" do
|
134
131
|
subject do
|
135
|
-
Olfactory.
|
132
|
+
Olfactory.build :widget do |t|
|
136
133
|
t.doodad value
|
137
134
|
t.doodads value, value
|
138
135
|
t.doodad value
|
@@ -143,14 +140,14 @@ describe Olfactory::Template do
|
|
143
140
|
end
|
144
141
|
end
|
145
142
|
context "with an alias" do
|
146
|
-
before do
|
143
|
+
before(:context) do
|
147
144
|
Olfactory.template :widget do |t|
|
148
145
|
t.has_many :doodads, :singular => :doodad, :alias => :foos
|
149
146
|
end
|
150
147
|
end
|
151
148
|
context "given a basic value" do
|
152
149
|
subject do
|
153
|
-
Olfactory.
|
150
|
+
Olfactory.build :widget do |t|
|
154
151
|
t.foos value
|
155
152
|
end
|
156
153
|
end
|
@@ -160,7 +157,7 @@ describe Olfactory::Template do
|
|
160
157
|
end
|
161
158
|
context "given a block value" do
|
162
159
|
subject do
|
163
|
-
Olfactory.
|
160
|
+
Olfactory.build :widget do |t|
|
164
161
|
t.foos { value }
|
165
162
|
end
|
166
163
|
end
|
@@ -172,7 +169,7 @@ describe Olfactory::Template do
|
|
172
169
|
end
|
173
170
|
end
|
174
171
|
context "as named collection" do
|
175
|
-
before do
|
172
|
+
before(:context) do
|
176
173
|
Olfactory.template :widget do |t|
|
177
174
|
t.has_many :doodads, :singular => :doodad, :named => :true
|
178
175
|
end
|
@@ -180,7 +177,7 @@ describe Olfactory::Template do
|
|
180
177
|
context "invoked as singular" do
|
181
178
|
context "given a name & basic value" do
|
182
179
|
subject do
|
183
|
-
Olfactory.
|
180
|
+
Olfactory.build :widget do |t|
|
184
181
|
t.doodad :foo, value
|
185
182
|
end
|
186
183
|
end
|
@@ -190,7 +187,7 @@ describe Olfactory::Template do
|
|
190
187
|
end
|
191
188
|
context "given a name & block value" do
|
192
189
|
subject do
|
193
|
-
Olfactory.
|
190
|
+
Olfactory.build :widget do |t|
|
194
191
|
t.doodad :foo do
|
195
192
|
value
|
196
193
|
end
|
@@ -202,7 +199,7 @@ describe Olfactory::Template do
|
|
202
199
|
end
|
203
200
|
context "given no name" do
|
204
201
|
subject do
|
205
|
-
Olfactory.
|
202
|
+
Olfactory.build :widget do |t|
|
206
203
|
t.doodad
|
207
204
|
end
|
208
205
|
end
|
@@ -212,7 +209,7 @@ describe Olfactory::Template do
|
|
212
209
|
end
|
213
210
|
context "given no name & numeric value" do
|
214
211
|
subject do
|
215
|
-
Olfactory.
|
212
|
+
Olfactory.build :widget do |t|
|
216
213
|
t.doodad 1
|
217
214
|
end
|
218
215
|
end
|
@@ -226,7 +223,7 @@ describe Olfactory::Template do
|
|
226
223
|
context "invoked as plural" do
|
227
224
|
context "given a hash value" do
|
228
225
|
subject do
|
229
|
-
Olfactory.
|
226
|
+
Olfactory.build :widget do |t|
|
230
227
|
t.doodads :a => value
|
231
228
|
end
|
232
229
|
end
|
@@ -236,7 +233,7 @@ describe Olfactory::Template do
|
|
236
233
|
end
|
237
234
|
context "given no name or value" do
|
238
235
|
subject do
|
239
|
-
Olfactory.
|
236
|
+
Olfactory.build :widget do |t|
|
240
237
|
t.doodads
|
241
238
|
end
|
242
239
|
end
|
@@ -247,7 +244,7 @@ describe Olfactory::Template do
|
|
247
244
|
end
|
248
245
|
context "given sequential invocations" do
|
249
246
|
subject do
|
250
|
-
Olfactory.
|
247
|
+
Olfactory.build :widget do |t|
|
251
248
|
t.doodad :a, value
|
252
249
|
t.doodads :b => value, :c => value
|
253
250
|
t.doodad :d, value
|
@@ -261,7 +258,7 @@ describe Olfactory::Template do
|
|
261
258
|
end
|
262
259
|
end
|
263
260
|
context "with an alias" do
|
264
|
-
before do
|
261
|
+
before(:context) do
|
265
262
|
Olfactory.template :widget do |t|
|
266
263
|
t.has_many :doodads, :singular => :doodad,
|
267
264
|
:named => :true,
|
@@ -270,7 +267,7 @@ describe Olfactory::Template do
|
|
270
267
|
end
|
271
268
|
context "given a hash" do
|
272
269
|
subject do
|
273
|
-
Olfactory.
|
270
|
+
Olfactory.build :widget do |t|
|
274
271
|
t.foos :a => value
|
275
272
|
end
|
276
273
|
end
|
@@ -280,7 +277,7 @@ describe Olfactory::Template do
|
|
280
277
|
end
|
281
278
|
context "given a name and basic value" do
|
282
279
|
subject do
|
283
|
-
Olfactory.
|
280
|
+
Olfactory.build :widget do |t|
|
284
281
|
t.foos :a, value
|
285
282
|
end
|
286
283
|
end
|
@@ -293,7 +290,7 @@ describe Olfactory::Template do
|
|
293
290
|
end
|
294
291
|
end
|
295
292
|
context "embeds_one" do
|
296
|
-
before do
|
293
|
+
before(:context) do
|
297
294
|
Olfactory.template :widget do |t|
|
298
295
|
t.embeds_one :doodad
|
299
296
|
end
|
@@ -305,7 +302,7 @@ describe Olfactory::Template do
|
|
305
302
|
|
306
303
|
context "given no value" do
|
307
304
|
subject do
|
308
|
-
Olfactory.
|
305
|
+
Olfactory.build :widget do |t|
|
309
306
|
t.doodad
|
310
307
|
end
|
311
308
|
end
|
@@ -314,7 +311,7 @@ describe Olfactory::Template do
|
|
314
311
|
end
|
315
312
|
end
|
316
313
|
context "given a symbol value" do
|
317
|
-
before do
|
314
|
+
before(:context) do
|
318
315
|
Olfactory.template :widget do |t|
|
319
316
|
t.embeds_one :doodad
|
320
317
|
end
|
@@ -327,7 +324,7 @@ describe Olfactory::Template do
|
|
327
324
|
end
|
328
325
|
context "that matches a defined preset" do
|
329
326
|
subject do
|
330
|
-
Olfactory.
|
327
|
+
Olfactory.build :widget do |t|
|
331
328
|
t.doodad :shiny
|
332
329
|
end
|
333
330
|
end
|
@@ -338,7 +335,7 @@ describe Olfactory::Template do
|
|
338
335
|
end
|
339
336
|
context "that does not match a defined preset" do
|
340
337
|
subject do
|
341
|
-
Olfactory.
|
338
|
+
Olfactory.build :widget do |t|
|
342
339
|
t.doodad :rusty
|
343
340
|
end
|
344
341
|
end
|
@@ -350,7 +347,7 @@ describe Olfactory::Template do
|
|
350
347
|
end
|
351
348
|
context "given a block value" do
|
352
349
|
subject do
|
353
|
-
Olfactory.
|
350
|
+
Olfactory.build :widget do |t|
|
354
351
|
t.doodad { |d| d.gizmo value }
|
355
352
|
end
|
356
353
|
end
|
@@ -359,7 +356,7 @@ describe Olfactory::Template do
|
|
359
356
|
end
|
360
357
|
end
|
361
358
|
context "with an alias" do
|
362
|
-
before do
|
359
|
+
before(:context) do
|
363
360
|
Olfactory.template :widget do |t|
|
364
361
|
t.embeds_one :doodad, :alias => :foo
|
365
362
|
end
|
@@ -369,7 +366,7 @@ describe Olfactory::Template do
|
|
369
366
|
end
|
370
367
|
context "given no value" do
|
371
368
|
subject do
|
372
|
-
Olfactory.
|
369
|
+
Olfactory.build :widget do |t|
|
373
370
|
t.foo
|
374
371
|
end
|
375
372
|
end
|
@@ -379,7 +376,7 @@ describe Olfactory::Template do
|
|
379
376
|
end
|
380
377
|
end
|
381
378
|
context "with template name" do
|
382
|
-
before do
|
379
|
+
before(:context) do
|
383
380
|
Olfactory.template :widget do |t|
|
384
381
|
t.embeds_one :doodad, :template => :thingamabob
|
385
382
|
end
|
@@ -389,7 +386,7 @@ describe Olfactory::Template do
|
|
389
386
|
end
|
390
387
|
context "given no value" do
|
391
388
|
subject do
|
392
|
-
Olfactory.
|
389
|
+
Olfactory.build :widget do |t|
|
393
390
|
t.doodad
|
394
391
|
end
|
395
392
|
end
|
@@ -400,7 +397,7 @@ describe Olfactory::Template do
|
|
400
397
|
end
|
401
398
|
end
|
402
399
|
context "embeds_many" do
|
403
|
-
before do
|
400
|
+
before(:context) do
|
404
401
|
Olfactory.template :widget do |t|
|
405
402
|
t.embeds_many :doodads
|
406
403
|
end
|
@@ -411,7 +408,7 @@ describe Olfactory::Template do
|
|
411
408
|
let(:value) { "gizmo" }
|
412
409
|
|
413
410
|
context "as generic collection" do
|
414
|
-
before do
|
411
|
+
before(:context) do
|
415
412
|
Olfactory.template :widget do |t|
|
416
413
|
t.embeds_many :doodads, :singular => :doodad
|
417
414
|
end
|
@@ -422,7 +419,7 @@ describe Olfactory::Template do
|
|
422
419
|
context "invoked as singular" do
|
423
420
|
context "given no value" do
|
424
421
|
subject do
|
425
|
-
Olfactory.
|
422
|
+
Olfactory.build :widget do |t|
|
426
423
|
t.doodad
|
427
424
|
end
|
428
425
|
end
|
@@ -431,7 +428,7 @@ describe Olfactory::Template do
|
|
431
428
|
end
|
432
429
|
end
|
433
430
|
context "given a symbol value" do
|
434
|
-
before do
|
431
|
+
before(:context) do
|
435
432
|
Olfactory.template :widget do |t|
|
436
433
|
t.embeds_many :doodads, :singular => :doodad
|
437
434
|
end
|
@@ -444,7 +441,7 @@ describe Olfactory::Template do
|
|
444
441
|
end
|
445
442
|
context "that matches a defined preset" do
|
446
443
|
subject do
|
447
|
-
Olfactory.
|
444
|
+
Olfactory.build :widget do |t|
|
448
445
|
t.doodad :shiny
|
449
446
|
end
|
450
447
|
end
|
@@ -455,7 +452,7 @@ describe Olfactory::Template do
|
|
455
452
|
end
|
456
453
|
context "that does not match a defined preset" do
|
457
454
|
subject do
|
458
|
-
Olfactory.
|
455
|
+
Olfactory.build :widget do |t|
|
459
456
|
t.doodad :rusty
|
460
457
|
end
|
461
458
|
end
|
@@ -467,7 +464,7 @@ describe Olfactory::Template do
|
|
467
464
|
end
|
468
465
|
context "given a block value" do
|
469
466
|
subject do
|
470
|
-
Olfactory.
|
467
|
+
Olfactory.build :widget do |t|
|
471
468
|
t.doodad { |d| d.gizmo value }
|
472
469
|
end
|
473
470
|
end
|
@@ -479,7 +476,7 @@ describe Olfactory::Template do
|
|
479
476
|
context "invoked as plural" do
|
480
477
|
context "given an integer value" do
|
481
478
|
subject do
|
482
|
-
Olfactory.
|
479
|
+
Olfactory.build :widget do |t|
|
483
480
|
t.doodads 2
|
484
481
|
end
|
485
482
|
end
|
@@ -488,7 +485,7 @@ describe Olfactory::Template do
|
|
488
485
|
end
|
489
486
|
end
|
490
487
|
context "given a symbol & integer value" do
|
491
|
-
before do
|
488
|
+
before(:context) do
|
492
489
|
Olfactory.template :widget do |t|
|
493
490
|
t.embeds_many :doodads, :singular => :doodad
|
494
491
|
end
|
@@ -501,7 +498,7 @@ describe Olfactory::Template do
|
|
501
498
|
end
|
502
499
|
context "that matches a defined preset" do
|
503
500
|
subject do
|
504
|
-
Olfactory.
|
501
|
+
Olfactory.build :widget do |t|
|
505
502
|
t.doodads :shiny, 2
|
506
503
|
end
|
507
504
|
end
|
@@ -512,7 +509,7 @@ describe Olfactory::Template do
|
|
512
509
|
end
|
513
510
|
context "that does not match a defined preset" do
|
514
511
|
subject do
|
515
|
-
Olfactory.
|
512
|
+
Olfactory.build :widget do |t|
|
516
513
|
t.doodads :rusty, 2
|
517
514
|
end
|
518
515
|
end
|
@@ -523,7 +520,7 @@ describe Olfactory::Template do
|
|
523
520
|
end
|
524
521
|
end
|
525
522
|
context "given an integer & symbol value" do
|
526
|
-
before do
|
523
|
+
before(:context) do
|
527
524
|
Olfactory.template :widget do |t|
|
528
525
|
t.embeds_many :doodads, :singular => :doodad
|
529
526
|
end
|
@@ -536,7 +533,7 @@ describe Olfactory::Template do
|
|
536
533
|
end
|
537
534
|
context "that matches a defined preset" do
|
538
535
|
subject do
|
539
|
-
Olfactory.
|
536
|
+
Olfactory.build :widget do |t|
|
540
537
|
t.doodads 2, :shiny
|
541
538
|
end
|
542
539
|
end
|
@@ -547,7 +544,7 @@ describe Olfactory::Template do
|
|
547
544
|
end
|
548
545
|
context "that does not match a defined preset" do
|
549
546
|
subject do
|
550
|
-
Olfactory.
|
547
|
+
Olfactory.build :widget do |t|
|
551
548
|
t.doodads 2, :rusty
|
552
549
|
end
|
553
550
|
end
|
@@ -559,7 +556,7 @@ describe Olfactory::Template do
|
|
559
556
|
end
|
560
557
|
context "given an integer and block value" do
|
561
558
|
subject do
|
562
|
-
Olfactory.
|
559
|
+
Olfactory.build :widget do |t|
|
563
560
|
t.doodads 2 do |d|
|
564
561
|
d.gizmo value
|
565
562
|
end
|
@@ -572,7 +569,7 @@ describe Olfactory::Template do
|
|
572
569
|
end
|
573
570
|
context "given sequential invocations" do
|
574
571
|
subject do
|
575
|
-
Olfactory.
|
572
|
+
Olfactory.build :widget do |t|
|
576
573
|
t.doodad
|
577
574
|
t.doodads 2
|
578
575
|
t.doodad
|
@@ -583,7 +580,7 @@ describe Olfactory::Template do
|
|
583
580
|
end
|
584
581
|
end
|
585
582
|
context "with an alias" do
|
586
|
-
before do
|
583
|
+
before(:context) do
|
587
584
|
Olfactory.template :widget do |t|
|
588
585
|
t.embeds_many :doodads, :singular => :doodad, :alias => :foos
|
589
586
|
end
|
@@ -593,7 +590,7 @@ describe Olfactory::Template do
|
|
593
590
|
end
|
594
591
|
context "given an integer value" do
|
595
592
|
subject do
|
596
|
-
Olfactory.
|
593
|
+
Olfactory.build :widget do |t|
|
597
594
|
t.foos 2
|
598
595
|
end
|
599
596
|
end
|
@@ -603,7 +600,7 @@ describe Olfactory::Template do
|
|
603
600
|
end
|
604
601
|
context "given a block value" do
|
605
602
|
subject do
|
606
|
-
Olfactory.
|
603
|
+
Olfactory.build :widget do |t|
|
607
604
|
t.foos { |f| f.gizmo value }
|
608
605
|
end
|
609
606
|
end
|
@@ -615,7 +612,7 @@ describe Olfactory::Template do
|
|
615
612
|
end
|
616
613
|
end
|
617
614
|
context "as named collection" do
|
618
|
-
before do
|
615
|
+
before(:context) do
|
619
616
|
Olfactory.template :widget do |t|
|
620
617
|
t.embeds_many :doodads, :singular => :doodad,
|
621
618
|
:named => true
|
@@ -627,7 +624,7 @@ describe Olfactory::Template do
|
|
627
624
|
context "invoked as singular" do
|
628
625
|
context "given a name & no value" do
|
629
626
|
subject do
|
630
|
-
Olfactory.
|
627
|
+
Olfactory.build :widget do |t|
|
631
628
|
t.doodad :a
|
632
629
|
end
|
633
630
|
end
|
@@ -636,7 +633,7 @@ describe Olfactory::Template do
|
|
636
633
|
end
|
637
634
|
end
|
638
635
|
context "given a name & symbol value" do
|
639
|
-
before do
|
636
|
+
before(:context) do
|
640
637
|
Olfactory.template :widget do |t|
|
641
638
|
t.embeds_many :doodads, :singular => :doodad,
|
642
639
|
:named => true
|
@@ -650,7 +647,7 @@ describe Olfactory::Template do
|
|
650
647
|
end
|
651
648
|
context "that matches a defined preset" do
|
652
649
|
subject do
|
653
|
-
Olfactory.
|
650
|
+
Olfactory.build :widget do |t|
|
654
651
|
t.doodad :a, :shiny
|
655
652
|
end
|
656
653
|
end
|
@@ -661,7 +658,7 @@ describe Olfactory::Template do
|
|
661
658
|
end
|
662
659
|
context "that does not match a defined preset" do
|
663
660
|
subject do
|
664
|
-
Olfactory.
|
661
|
+
Olfactory.build :widget do |t|
|
665
662
|
t.doodad :a, :rusty
|
666
663
|
end
|
667
664
|
end
|
@@ -673,7 +670,7 @@ describe Olfactory::Template do
|
|
673
670
|
end
|
674
671
|
context "given a name & block value" do
|
675
672
|
subject do
|
676
|
-
Olfactory.
|
673
|
+
Olfactory.build :widget do |t|
|
677
674
|
t.doodad :a do |d|
|
678
675
|
d.gizmo value
|
679
676
|
end
|
@@ -685,7 +682,7 @@ describe Olfactory::Template do
|
|
685
682
|
end
|
686
683
|
context "given a no name" do
|
687
684
|
subject do
|
688
|
-
Olfactory.
|
685
|
+
Olfactory.build :widget do |t|
|
689
686
|
t.doodad
|
690
687
|
end
|
691
688
|
end
|
@@ -695,7 +692,7 @@ describe Olfactory::Template do
|
|
695
692
|
end
|
696
693
|
context "given a no name & numeric value" do
|
697
694
|
subject do
|
698
|
-
Olfactory.
|
695
|
+
Olfactory.build :widget do |t|
|
699
696
|
t.doodad 1
|
700
697
|
end
|
701
698
|
end
|
@@ -707,7 +704,7 @@ describe Olfactory::Template do
|
|
707
704
|
context "invoked as plural" do
|
708
705
|
context "given a hash value" do
|
709
706
|
subject do
|
710
|
-
Olfactory.
|
707
|
+
Olfactory.build :widget do |t|
|
711
708
|
t.doodads :a => value
|
712
709
|
end
|
713
710
|
end
|
@@ -718,7 +715,7 @@ describe Olfactory::Template do
|
|
718
715
|
end
|
719
716
|
end
|
720
717
|
context "with template name" do
|
721
|
-
before do
|
718
|
+
before(:context) do
|
722
719
|
Olfactory.template :widget do |t|
|
723
720
|
t.embeds_many :doodads, :singular => :doodad,
|
724
721
|
:template => :thingamabob
|
@@ -729,7 +726,7 @@ describe Olfactory::Template do
|
|
729
726
|
end
|
730
727
|
context "given no value" do
|
731
728
|
subject do
|
732
|
-
Olfactory.
|
729
|
+
Olfactory.build :widget do |t|
|
733
730
|
t.doodad
|
734
731
|
end
|
735
732
|
end
|
@@ -739,8 +736,408 @@ describe Olfactory::Template do
|
|
739
736
|
end
|
740
737
|
end
|
741
738
|
end
|
739
|
+
context "sequence" do
|
740
|
+
context "with a scope" do
|
741
|
+
context "bound to the template" do
|
742
|
+
context do
|
743
|
+
before(:example) do
|
744
|
+
Olfactory.template :building do |t|
|
745
|
+
t.has_one :address
|
746
|
+
t.sequence :address, :scope => :template do |n, options|
|
747
|
+
"#{(n + (n % 2)) + 2} #{"#{options[:prefix]} " if options[:prefix]}BROADWAY"
|
748
|
+
end
|
749
|
+
end
|
750
|
+
end
|
751
|
+
context "given nothing" do
|
752
|
+
subject do
|
753
|
+
Olfactory.build :building do |building|
|
754
|
+
building.address building.generate(:address)
|
755
|
+
end
|
756
|
+
end
|
757
|
+
it { expect(subject[:address]).to eq("2 BROADWAY") }
|
758
|
+
end
|
759
|
+
context "given options" do
|
760
|
+
subject do
|
761
|
+
Olfactory.build :building do |building|
|
762
|
+
building.address building.generate(:address, :prefix => "WEST")
|
763
|
+
end
|
764
|
+
end
|
765
|
+
it { expect(subject[:address]).to eq("2 WEST BROADWAY") }
|
766
|
+
end
|
767
|
+
context "given a block" do
|
768
|
+
subject do
|
769
|
+
Olfactory.build :building do |building|
|
770
|
+
building.address do
|
771
|
+
building.generate(:address) do |n|
|
772
|
+
"#{(n + (n % 2)) + 2} JOHN STREET"
|
773
|
+
end
|
774
|
+
end
|
775
|
+
end
|
776
|
+
end
|
777
|
+
it { expect(subject[:address]).to eq("2 JOHN STREET") }
|
778
|
+
end
|
779
|
+
context "given options and a block" do
|
780
|
+
subject do
|
781
|
+
Olfactory.build :building do |building|
|
782
|
+
building.address do
|
783
|
+
building.generate(:address, :suffix => "ROAD") do |n, options|
|
784
|
+
"#{(n + (n % 2)) + 2} JOHN#{options[:suffix] ? " #{options[:suffix]}" : " STREET"}"
|
785
|
+
end
|
786
|
+
end
|
787
|
+
end
|
788
|
+
end
|
789
|
+
it { expect(subject[:address]).to eq("2 JOHN ROAD") }
|
790
|
+
end
|
791
|
+
end
|
792
|
+
context "given sequential invocations" do
|
793
|
+
before(:context) do
|
794
|
+
Olfactory.template :building do |t|
|
795
|
+
t.has_one :address
|
796
|
+
t.sequence :address, :scope => :template do |n, options|
|
797
|
+
"#{(n + (n % 2)) + 2} #{"#{options[:prefix]} " if options[:prefix]}BROADWAY"
|
798
|
+
end
|
799
|
+
end
|
800
|
+
end
|
801
|
+
let(:building_one) do
|
802
|
+
Olfactory.build :building do |building|
|
803
|
+
building.address { building.generate(:address) }
|
804
|
+
end
|
805
|
+
end
|
806
|
+
it { expect(building_one[:address]).to eq("2 BROADWAY") }
|
807
|
+
let(:building_two) do
|
808
|
+
Olfactory.build :building do |building|
|
809
|
+
building.address { building.generate(:address) }
|
810
|
+
end
|
811
|
+
end
|
812
|
+
it { expect(building_two[:address]).to eq("4 BROADWAY") }
|
813
|
+
end
|
814
|
+
end
|
815
|
+
context "bound to the instance" do
|
816
|
+
context do
|
817
|
+
before(:example) do
|
818
|
+
Olfactory.template :building do |t|
|
819
|
+
t.has_one :address
|
820
|
+
t.sequence :address, :scope => :instance do |n, options|
|
821
|
+
"#{(n + (n % 2)) + 2} #{"#{options[:prefix]} " if options[:prefix]}BROADWAY"
|
822
|
+
end
|
823
|
+
end
|
824
|
+
end
|
825
|
+
context "given nothing" do
|
826
|
+
subject do
|
827
|
+
Olfactory.build :building do |building|
|
828
|
+
building.address building.generate(:address)
|
829
|
+
end
|
830
|
+
end
|
831
|
+
it { expect(subject[:address]).to eq("2 BROADWAY") }
|
832
|
+
end
|
833
|
+
context "given options" do
|
834
|
+
subject do
|
835
|
+
Olfactory.build :building do |building|
|
836
|
+
building.address building.generate(:address, :prefix => "WEST")
|
837
|
+
end
|
838
|
+
end
|
839
|
+
it { expect(subject[:address]).to eq("2 WEST BROADWAY") }
|
840
|
+
end
|
841
|
+
context "given a block" do
|
842
|
+
subject do
|
843
|
+
Olfactory.build :building do |building|
|
844
|
+
building.address do
|
845
|
+
building.generate(:address) do |n|
|
846
|
+
"#{(n + (n % 2)) + 2} JOHN STREET"
|
847
|
+
end
|
848
|
+
end
|
849
|
+
end
|
850
|
+
end
|
851
|
+
it { expect(subject[:address]).to eq("2 JOHN STREET") }
|
852
|
+
end
|
853
|
+
context "given options and a block" do
|
854
|
+
subject do
|
855
|
+
Olfactory.build :building do |building|
|
856
|
+
building.address do
|
857
|
+
building.generate(:address, :suffix => "ROAD") do |n, options|
|
858
|
+
"#{(n + (n % 2)) + 2} JOHN#{options[:suffix] ? " #{options[:suffix]}" : " STREET"}"
|
859
|
+
end
|
860
|
+
end
|
861
|
+
end
|
862
|
+
end
|
863
|
+
it { expect(subject[:address]).to eq("2 JOHN ROAD") }
|
864
|
+
end
|
865
|
+
end
|
866
|
+
context "given sequential invocations" do
|
867
|
+
before(:context) do
|
868
|
+
Olfactory.template :building do |t|
|
869
|
+
t.has_one :address
|
870
|
+
t.has_one :other_address
|
871
|
+
t.sequence :address, :scope => :instance do |n, options|
|
872
|
+
"#{(n + (n % 2)) + 2} #{"#{options[:prefix]} " if options[:prefix]}BROADWAY"
|
873
|
+
end
|
874
|
+
end
|
875
|
+
end
|
876
|
+
let(:building_one) do
|
877
|
+
Olfactory.build :building do |building|
|
878
|
+
building.address building.generate(:address)
|
879
|
+
building.other_address building.generate(:address)
|
880
|
+
end
|
881
|
+
end
|
882
|
+
it { expect(building_one[:address]).to eq("2 BROADWAY") }
|
883
|
+
it { expect(building_one[:other_address]).to eq("4 BROADWAY") }
|
884
|
+
let(:building_two) do
|
885
|
+
Olfactory.build :building do |building|
|
886
|
+
building.address building.generate(:address)
|
887
|
+
building.other_address building.generate(:address)
|
888
|
+
end
|
889
|
+
end
|
890
|
+
it { expect(building_two[:address]).to eq("2 BROADWAY") }
|
891
|
+
it { expect(building_two[:other_address]).to eq("4 BROADWAY") }
|
892
|
+
end
|
893
|
+
end
|
894
|
+
end
|
895
|
+
context "after being invoked" do
|
896
|
+
before(:context) do
|
897
|
+
Olfactory.template :numbers do |t|
|
898
|
+
t.has_one :even_count
|
899
|
+
t.has_one :odd_count
|
900
|
+
t.sequence :even, :scope => :template do |n|
|
901
|
+
(n + (n % 2)) + 2
|
902
|
+
end
|
903
|
+
t.sequence :odd, :scope => :template do |n|
|
904
|
+
(n + (n % 2)) + 1
|
905
|
+
end
|
906
|
+
end
|
907
|
+
end
|
908
|
+
let(:first_set) do
|
909
|
+
Olfactory.build :numbers do |n|
|
910
|
+
n.even_count n.generate(:even)
|
911
|
+
n.even_count n.generate(:even)
|
912
|
+
n.odd_count n.generate(:odd)
|
913
|
+
n.odd_count n.generate(:odd)
|
914
|
+
end
|
915
|
+
end
|
916
|
+
it do
|
917
|
+
expect(first_set[:even_count]).to eq(4)
|
918
|
+
expect(first_set[:odd_count]).to eq(3)
|
919
|
+
end
|
920
|
+
context "and called to reset" do
|
921
|
+
before(:context) do
|
922
|
+
Olfactory.reset_template_sequences(:numbers)
|
923
|
+
end
|
924
|
+
let(:second_set) do
|
925
|
+
Olfactory.build :numbers do |n|
|
926
|
+
n.even_count n.generate(:even)
|
927
|
+
n.even_count n.generate(:even)
|
928
|
+
n.odd_count n.generate(:odd)
|
929
|
+
n.odd_count n.generate(:odd)
|
930
|
+
end
|
931
|
+
end
|
932
|
+
it do
|
933
|
+
expect(second_set[:even_count]).to eq(4)
|
934
|
+
expect(second_set[:odd_count]).to eq(3)
|
935
|
+
end
|
936
|
+
end
|
937
|
+
end
|
938
|
+
end
|
939
|
+
context "dictionary" do
|
940
|
+
context "with a scope" do
|
941
|
+
context "bound to the template" do
|
942
|
+
context do
|
943
|
+
before(:context) do
|
944
|
+
Olfactory.template :address do |t|
|
945
|
+
t.has_one :street_code
|
946
|
+
t.dictionary :street_codes, :scope => :template
|
947
|
+
end
|
948
|
+
end
|
949
|
+
subject do
|
950
|
+
Olfactory.build :address do |address|
|
951
|
+
address.street_code do
|
952
|
+
address.street_codes["BROADWAY"] ||= 10001
|
953
|
+
end
|
954
|
+
end
|
955
|
+
end
|
956
|
+
it { expect(subject[:street_code]).to eq(10001) }
|
957
|
+
end
|
958
|
+
context "given sequential invocations" do
|
959
|
+
before(:context) do
|
960
|
+
Olfactory.template :address do |t|
|
961
|
+
t.has_one :street_code
|
962
|
+
t.dictionary :street_codes, :scope => :template
|
963
|
+
t.sequence :street_code, :scope => :template, :seed => 1 do |n|
|
964
|
+
(10000 + n)
|
965
|
+
end
|
966
|
+
end
|
967
|
+
end
|
968
|
+
let!(:address_one) do
|
969
|
+
Olfactory.build :address do |address|
|
970
|
+
address.street_code { address.street_codes["BROADWAY"] ||= address.generate(:street_code) }
|
971
|
+
end
|
972
|
+
end
|
973
|
+
let!(:address_two) do
|
974
|
+
Olfactory.build :address do |address|
|
975
|
+
address.street_code { address.street_codes["BROADWAY"] ||= address.generate(:street_code) }
|
976
|
+
end
|
977
|
+
end
|
978
|
+
let!(:address_three) do
|
979
|
+
Olfactory.build :address do |address|
|
980
|
+
address.street_code { address.street_codes["JOHN STREET"] ||= address.generate(:street_code) }
|
981
|
+
end
|
982
|
+
end
|
983
|
+
|
984
|
+
it { expect(address_one[:street_code]).to eq(10001) }
|
985
|
+
it { expect(address_two[:street_code]).to eq(10001) }
|
986
|
+
it { expect(address_three[:street_code]).to eq(10002) }
|
987
|
+
end
|
988
|
+
end
|
989
|
+
context "bound to the instance" do
|
990
|
+
context do
|
991
|
+
before(:context) do
|
992
|
+
Olfactory.template :address do |t|
|
993
|
+
t.has_one :street_code
|
994
|
+
t.has_one :other_street_code
|
995
|
+
t.has_one :another_street_code
|
996
|
+
t.dictionary :street_codes, :scope => :instance
|
997
|
+
end
|
998
|
+
end
|
999
|
+
subject do
|
1000
|
+
Olfactory.build :address do |address|
|
1001
|
+
address.street_code { address.street_codes["BROADWAY"] ||= 10001 }
|
1002
|
+
address.other_street_code { address.street_codes["BROADWAY"] ||= 10002 }
|
1003
|
+
address.another_street_code { address.street_codes["JOHN STREET"] ||= 10003 }
|
1004
|
+
end
|
1005
|
+
end
|
1006
|
+
it { expect(subject[:street_code]).to eq(10001) }
|
1007
|
+
it { expect(subject[:other_street_code]).to eq(10001) }
|
1008
|
+
it { expect(subject[:another_street_code]).to eq(10003) }
|
1009
|
+
end
|
1010
|
+
context "given sequential invocations" do
|
1011
|
+
before(:context) do
|
1012
|
+
Olfactory.template :address do |t|
|
1013
|
+
t.has_one :street_code
|
1014
|
+
t.has_one :other_street_code
|
1015
|
+
t.has_one :another_street_code
|
1016
|
+
t.dictionary :street_codes, :scope => :instance
|
1017
|
+
t.sequence :street_code, :scope => :instance, :seed => 1 do |n|
|
1018
|
+
(10000 + n)
|
1019
|
+
end
|
1020
|
+
end
|
1021
|
+
end
|
1022
|
+
let!(:address_one) do
|
1023
|
+
Olfactory.build :address do |address|
|
1024
|
+
address.street_code { address.street_codes["BROADWAY"] ||= address.generate(:street_code) }
|
1025
|
+
address.other_street_code { address.street_codes["BROADWAY"] ||= address.generate(:street_code) }
|
1026
|
+
address.another_street_code { address.street_codes["JOHN STREET"] ||= address.generate(:street_code) }
|
1027
|
+
end
|
1028
|
+
end
|
1029
|
+
let!(:address_two) do
|
1030
|
+
Olfactory.build :address do |address|
|
1031
|
+
address.street_code { address.street_codes["BROADWAY"] ||= address.generate(:street_code) }
|
1032
|
+
address.other_street_code { address.street_codes["BROADWAY"] ||= address.generate(:street_code) }
|
1033
|
+
address.another_street_code { address.street_codes["JOHN STREET"] ||= address.generate(:street_code) }
|
1034
|
+
end
|
1035
|
+
end
|
1036
|
+
it { expect(address_one[:street_code]).to eq(10001) }
|
1037
|
+
it { expect(address_one[:other_street_code]).to eq(10001) }
|
1038
|
+
it { expect(address_one[:another_street_code]).to eq(10002) }
|
1039
|
+
it { expect(address_two[:street_code]).to eq(10001) }
|
1040
|
+
it { expect(address_two[:other_street_code]).to eq(10001) }
|
1041
|
+
it { expect(address_two[:another_street_code]).to eq(10002) }
|
1042
|
+
end
|
1043
|
+
end
|
1044
|
+
end
|
1045
|
+
context "after being invoked" do
|
1046
|
+
before(:context) do
|
1047
|
+
Olfactory.template :stuff do |t|
|
1048
|
+
t.has_one :widget
|
1049
|
+
t.has_one :another_widget
|
1050
|
+
t.has_one :doodad
|
1051
|
+
t.has_one :another_doodad
|
1052
|
+
t.dictionary :widget_catalog, :scope => :template
|
1053
|
+
t.dictionary :doodad_catalog, :scope => :template
|
1054
|
+
end
|
1055
|
+
end
|
1056
|
+
let(:first_set) do
|
1057
|
+
Olfactory.build :stuff do |n|
|
1058
|
+
n.widget do
|
1059
|
+
if n.widget_catalog["Widget"]
|
1060
|
+
"Existing widget!"
|
1061
|
+
else
|
1062
|
+
n.widget_catalog["Widget"] = "New widget!"
|
1063
|
+
end
|
1064
|
+
end
|
1065
|
+
n.another_widget do
|
1066
|
+
if n.widget_catalog["Widget"]
|
1067
|
+
"Existing widget!"
|
1068
|
+
else
|
1069
|
+
n.widget_catalog["Widget"] = "New widget!"
|
1070
|
+
end
|
1071
|
+
end
|
1072
|
+
n.doodad do
|
1073
|
+
if n.doodad_catalog["Doodad"]
|
1074
|
+
"Existing doodad!"
|
1075
|
+
else
|
1076
|
+
n.doodad_catalog["Doodad"] = "New doodad!"
|
1077
|
+
end
|
1078
|
+
end
|
1079
|
+
n.another_doodad do
|
1080
|
+
if n.doodad_catalog["Doodad"]
|
1081
|
+
"Existing doodad!"
|
1082
|
+
else
|
1083
|
+
n.doodad_catalog["Doodad"] = "New doodad!"
|
1084
|
+
end
|
1085
|
+
end
|
1086
|
+
end
|
1087
|
+
end
|
1088
|
+
it do
|
1089
|
+
expect(first_set[:widget]).to eq("New widget!")
|
1090
|
+
expect(first_set[:another_widget]).to eq("Existing widget!")
|
1091
|
+
expect(first_set[:doodad]).to eq("New doodad!")
|
1092
|
+
expect(first_set[:another_doodad]).to eq("Existing doodad!")
|
1093
|
+
end
|
1094
|
+
context "and called to reset" do
|
1095
|
+
before(:context) do
|
1096
|
+
Olfactory.reset_template_dictionaries(:stuff)
|
1097
|
+
end
|
1098
|
+
let(:second_set) do
|
1099
|
+
Olfactory.build :stuff do |n|
|
1100
|
+
n.widget do
|
1101
|
+
if n.widget_catalog["Widget"]
|
1102
|
+
"Existing widget!"
|
1103
|
+
else
|
1104
|
+
n.widget_catalog["Widget"] = "New widget!"
|
1105
|
+
end
|
1106
|
+
end
|
1107
|
+
n.another_widget do
|
1108
|
+
if n.widget_catalog["Widget"]
|
1109
|
+
"Existing widget!"
|
1110
|
+
else
|
1111
|
+
n.widget_catalog["Widget"] = "New widget!"
|
1112
|
+
end
|
1113
|
+
end
|
1114
|
+
n.doodad do
|
1115
|
+
if n.doodad_catalog["Doodad"]
|
1116
|
+
"Existing doodad!"
|
1117
|
+
else
|
1118
|
+
n.doodad_catalog["Doodad"] = "New doodad!"
|
1119
|
+
end
|
1120
|
+
end
|
1121
|
+
n.another_doodad do
|
1122
|
+
if n.doodad_catalog["Doodad"]
|
1123
|
+
"Existing doodad!"
|
1124
|
+
else
|
1125
|
+
n.doodad_catalog["Doodad"] = "New doodad!"
|
1126
|
+
end
|
1127
|
+
end
|
1128
|
+
end
|
1129
|
+
end
|
1130
|
+
it do
|
1131
|
+
expect(second_set[:widget]).to eq("New widget!")
|
1132
|
+
expect(second_set[:another_widget]).to eq("Existing widget!")
|
1133
|
+
expect(second_set[:doodad]).to eq("New doodad!")
|
1134
|
+
expect(second_set[:another_doodad]).to eq("Existing doodad!")
|
1135
|
+
end
|
1136
|
+
end
|
1137
|
+
end
|
1138
|
+
end
|
742
1139
|
context "macros" do
|
743
|
-
before do
|
1140
|
+
before(:context) do
|
744
1141
|
Olfactory.template :widget do |t|
|
745
1142
|
t.has_one :doodad
|
746
1143
|
t.macro :make_shiny do |m, v|
|
@@ -751,7 +1148,7 @@ describe Olfactory::Template do
|
|
751
1148
|
let(:value) { "doodad" }
|
752
1149
|
|
753
1150
|
subject do
|
754
|
-
Olfactory.
|
1151
|
+
Olfactory.build :widget do |t|
|
755
1152
|
t.doodad value
|
756
1153
|
t.make_shiny
|
757
1154
|
end
|
@@ -761,7 +1158,7 @@ describe Olfactory::Template do
|
|
761
1158
|
end
|
762
1159
|
|
763
1160
|
context "with parameters" do
|
764
|
-
before do
|
1161
|
+
before(:context) do
|
765
1162
|
Olfactory.template :widget do |t|
|
766
1163
|
t.has_one :doodad
|
767
1164
|
t.macro :make do |m, adj, adj2|
|
@@ -770,7 +1167,7 @@ describe Olfactory::Template do
|
|
770
1167
|
end
|
771
1168
|
end
|
772
1169
|
subject do
|
773
|
-
Olfactory.
|
1170
|
+
Olfactory.build :widget do |t|
|
774
1171
|
t.doodad value
|
775
1172
|
t.make :very, :shiny
|
776
1173
|
end
|
@@ -781,7 +1178,7 @@ describe Olfactory::Template do
|
|
781
1178
|
end
|
782
1179
|
end
|
783
1180
|
context "transients" do
|
784
|
-
before do
|
1181
|
+
before(:context) do
|
785
1182
|
Olfactory.template :widget do |t|
|
786
1183
|
t.has_one :doodad
|
787
1184
|
end
|
@@ -789,7 +1186,7 @@ describe Olfactory::Template do
|
|
789
1186
|
let(:value) { "temporary value"}
|
790
1187
|
context "when set" do
|
791
1188
|
subject do
|
792
|
-
Olfactory.
|
1189
|
+
Olfactory.build :widget do |t|
|
793
1190
|
t.transient :foo, value
|
794
1191
|
end
|
795
1192
|
end
|
@@ -799,7 +1196,7 @@ describe Olfactory::Template do
|
|
799
1196
|
end
|
800
1197
|
context "when read" do
|
801
1198
|
subject do
|
802
|
-
Olfactory.
|
1199
|
+
Olfactory.build :widget do |t|
|
803
1200
|
t.transient :foo, value
|
804
1201
|
t.doodad "#{t.transients[:foo]}"
|
805
1202
|
end
|
@@ -809,7 +1206,7 @@ describe Olfactory::Template do
|
|
809
1206
|
end
|
810
1207
|
end
|
811
1208
|
context "when inherited" do
|
812
|
-
before do
|
1209
|
+
before(:context) do
|
813
1210
|
Olfactory.template :widget do |t|
|
814
1211
|
t.embeds_one :doodad
|
815
1212
|
end
|
@@ -818,7 +1215,7 @@ describe Olfactory::Template do
|
|
818
1215
|
end
|
819
1216
|
end
|
820
1217
|
subject do
|
821
|
-
Olfactory.
|
1218
|
+
Olfactory.build :widget do |t|
|
822
1219
|
t.transient :foo, value
|
823
1220
|
t.doodad
|
824
1221
|
end
|
@@ -832,7 +1229,7 @@ describe Olfactory::Template do
|
|
832
1229
|
let(:value) { "doodad" }
|
833
1230
|
let(:default_value) { "default doodad" }
|
834
1231
|
context "before" do
|
835
|
-
before do
|
1232
|
+
before(:context) do
|
836
1233
|
Olfactory.template :widget do |t|
|
837
1234
|
t.has_one :doodad
|
838
1235
|
t.has_one :other_doodad
|
@@ -843,7 +1240,7 @@ describe Olfactory::Template do
|
|
843
1240
|
end
|
844
1241
|
end
|
845
1242
|
subject do
|
846
|
-
Olfactory.
|
1243
|
+
Olfactory.build :widget do |t|
|
847
1244
|
t.doodad value
|
848
1245
|
end
|
849
1246
|
end
|
@@ -855,7 +1252,7 @@ describe Olfactory::Template do
|
|
855
1252
|
end
|
856
1253
|
end
|
857
1254
|
context "after" do
|
858
|
-
before do
|
1255
|
+
before(:context) do
|
859
1256
|
Olfactory.template :widget do |t|
|
860
1257
|
t.has_one :doodad
|
861
1258
|
t.has_one :other_doodad
|
@@ -866,7 +1263,7 @@ describe Olfactory::Template do
|
|
866
1263
|
end
|
867
1264
|
end
|
868
1265
|
subject do
|
869
|
-
Olfactory.
|
1266
|
+
Olfactory.build :widget do |t|
|
870
1267
|
t.doodad value
|
871
1268
|
end
|
872
1269
|
end
|
@@ -881,14 +1278,14 @@ describe Olfactory::Template do
|
|
881
1278
|
context "when created" do
|
882
1279
|
let(:value) { "saveable string" }
|
883
1280
|
context "containing a saveable object" do
|
884
|
-
before do
|
1281
|
+
before(:context) do
|
885
1282
|
Olfactory.template :widget do |t|
|
886
1283
|
t.has_one :doodad
|
887
1284
|
end
|
888
1285
|
end
|
889
1286
|
|
890
1287
|
subject do
|
891
|
-
Olfactory.
|
1288
|
+
Olfactory.create :widget do |w|
|
892
1289
|
w.doodad SaveableString.new(value)
|
893
1290
|
end
|
894
1291
|
end
|
@@ -897,13 +1294,13 @@ describe Olfactory::Template do
|
|
897
1294
|
end
|
898
1295
|
end
|
899
1296
|
context "containing a generic collection of saveable objects" do
|
900
|
-
before do
|
1297
|
+
before(:context) do
|
901
1298
|
Olfactory.template :widget do |t|
|
902
1299
|
t.has_many :doodads
|
903
1300
|
end
|
904
1301
|
end
|
905
1302
|
subject do
|
906
|
-
Olfactory.
|
1303
|
+
Olfactory.create :widget do |w|
|
907
1304
|
w.doodads SaveableString.new(value), SaveableString.new(value)
|
908
1305
|
end
|
909
1306
|
end
|
@@ -911,13 +1308,13 @@ describe Olfactory::Template do
|
|
911
1308
|
it { expect(subject[:doodads].last.saved?).to be true }
|
912
1309
|
end
|
913
1310
|
context "containing a named collection of saveable objects" do
|
914
|
-
before do
|
1311
|
+
before(:context) do
|
915
1312
|
Olfactory.template :widget do |t|
|
916
1313
|
t.has_many :doodads, :named => true
|
917
1314
|
end
|
918
1315
|
end
|
919
1316
|
subject do
|
920
|
-
Olfactory.
|
1317
|
+
Olfactory.create :widget do |w|
|
921
1318
|
w.doodads :a => SaveableString.new(value), :b => SaveableString.new(value)
|
922
1319
|
end
|
923
1320
|
end
|
@@ -925,32 +1322,32 @@ describe Olfactory::Template do
|
|
925
1322
|
it { expect(subject[:doodads][:b].saved?).to be true }
|
926
1323
|
end
|
927
1324
|
context "with an embedded template" do
|
928
|
-
before do
|
1325
|
+
before(:context) do
|
929
1326
|
Olfactory.template :widget do |t|
|
930
1327
|
t.embeds_one :doodad
|
931
1328
|
end
|
932
1329
|
end
|
933
1330
|
context "containing a saveable object" do
|
934
|
-
before do
|
1331
|
+
before(:context) do
|
935
1332
|
Olfactory.template :doodad do |t|
|
936
1333
|
t.has_one :gizmo
|
937
1334
|
end
|
938
1335
|
end
|
939
1336
|
subject do
|
940
|
-
Olfactory.
|
1337
|
+
Olfactory.create :widget do |w|
|
941
1338
|
w.doodad { |d| d.gizmo SaveableString.new(value) }
|
942
1339
|
end
|
943
1340
|
end
|
944
1341
|
it { expect(subject[:doodad][:gizmo].saved?).to be true }
|
945
1342
|
end
|
946
1343
|
context "containing a generic collection of saveable objects" do
|
947
|
-
before do
|
1344
|
+
before(:context) do
|
948
1345
|
Olfactory.template :doodad do |t|
|
949
1346
|
t.has_many :gizmos
|
950
1347
|
end
|
951
1348
|
end
|
952
1349
|
subject do
|
953
|
-
Olfactory.
|
1350
|
+
Olfactory.create :widget do |w|
|
954
1351
|
w.doodad { |d| d.gizmos SaveableString.new(value), SaveableString.new(value) }
|
955
1352
|
end
|
956
1353
|
end
|
@@ -958,13 +1355,13 @@ describe Olfactory::Template do
|
|
958
1355
|
it { expect(subject[:doodad][:gizmos].last.saved?).to be true }
|
959
1356
|
end
|
960
1357
|
context "containing a named collection of saveable objects" do
|
961
|
-
before do
|
1358
|
+
before(:context) do
|
962
1359
|
Olfactory.template :doodad do |t|
|
963
1360
|
t.has_many :gizmos, :named => true
|
964
1361
|
end
|
965
1362
|
end
|
966
1363
|
subject do
|
967
|
-
Olfactory.
|
1364
|
+
Olfactory.create :widget do |w|
|
968
1365
|
w.doodad { |d| d.gizmos :a => SaveableString.new(value), :b => SaveableString.new(value) }
|
969
1366
|
end
|
970
1367
|
end
|
@@ -973,32 +1370,32 @@ describe Olfactory::Template do
|
|
973
1370
|
end
|
974
1371
|
end
|
975
1372
|
context "with a generic collection of embedded templates" do
|
976
|
-
before do
|
1373
|
+
before(:context) do
|
977
1374
|
Olfactory.template :widget do |t|
|
978
1375
|
t.embeds_many :doodads, :singular => :doodad
|
979
1376
|
end
|
980
1377
|
end
|
981
1378
|
context "containing a saveable object" do
|
982
|
-
before do
|
1379
|
+
before(:context) do
|
983
1380
|
Olfactory.template :doodad do |t|
|
984
1381
|
t.has_one :gizmo
|
985
1382
|
end
|
986
1383
|
end
|
987
1384
|
subject do
|
988
|
-
Olfactory.
|
1385
|
+
Olfactory.create :widget do |w|
|
989
1386
|
w.doodad { |d| d.gizmo SaveableString.new(value) }
|
990
1387
|
end
|
991
1388
|
end
|
992
1389
|
it { expect(subject[:doodads].first[:gizmo].saved?).to be true }
|
993
1390
|
end
|
994
1391
|
context "containing a generic collection of saveable objects" do
|
995
|
-
before do
|
1392
|
+
before(:context) do
|
996
1393
|
Olfactory.template :doodad do |t|
|
997
1394
|
t.has_many :gizmos
|
998
1395
|
end
|
999
1396
|
end
|
1000
1397
|
subject do
|
1001
|
-
Olfactory.
|
1398
|
+
Olfactory.create :widget do |w|
|
1002
1399
|
w.doodad { |d| d.gizmos SaveableString.new(value), SaveableString.new(value) }
|
1003
1400
|
end
|
1004
1401
|
end
|
@@ -1006,13 +1403,13 @@ describe Olfactory::Template do
|
|
1006
1403
|
it { expect(subject[:doodads].first[:gizmos].last.saved?).to be true }
|
1007
1404
|
end
|
1008
1405
|
context "containing a named collection of saveable objects" do
|
1009
|
-
before do
|
1406
|
+
before(:context) do
|
1010
1407
|
Olfactory.template :doodad do |t|
|
1011
1408
|
t.has_many :gizmos, :named => true
|
1012
1409
|
end
|
1013
1410
|
end
|
1014
1411
|
subject do
|
1015
|
-
Olfactory.
|
1412
|
+
Olfactory.create :widget do |w|
|
1016
1413
|
w.doodad { |d| d.gizmos :a => SaveableString.new(value), :b => SaveableString.new(value) }
|
1017
1414
|
end
|
1018
1415
|
end
|
@@ -1021,19 +1418,19 @@ describe Olfactory::Template do
|
|
1021
1418
|
end
|
1022
1419
|
end
|
1023
1420
|
context "with a named collection of embedded templates" do
|
1024
|
-
before do
|
1421
|
+
before(:context) do
|
1025
1422
|
Olfactory.template :widget do |t|
|
1026
1423
|
t.embeds_many :doodads, :singular => :doodad, :named => true
|
1027
1424
|
end
|
1028
1425
|
end
|
1029
1426
|
context "containing a saveable object" do
|
1030
|
-
before do
|
1427
|
+
before(:context) do
|
1031
1428
|
Olfactory.template :doodad do |t|
|
1032
1429
|
t.has_one :gizmo
|
1033
1430
|
end
|
1034
1431
|
end
|
1035
1432
|
subject do
|
1036
|
-
Olfactory.
|
1433
|
+
Olfactory.create :widget do |w|
|
1037
1434
|
w.doodad :one do |d|
|
1038
1435
|
d.gizmo SaveableString.new(value)
|
1039
1436
|
end
|
@@ -1042,13 +1439,13 @@ describe Olfactory::Template do
|
|
1042
1439
|
it { expect(subject[:doodads][:one][:gizmo].saved?).to be true }
|
1043
1440
|
end
|
1044
1441
|
context "containing a generic collection of saveable objects" do
|
1045
|
-
before do
|
1442
|
+
before(:context) do
|
1046
1443
|
Olfactory.template :doodad do |t|
|
1047
1444
|
t.has_many :gizmos
|
1048
1445
|
end
|
1049
1446
|
end
|
1050
1447
|
subject do
|
1051
|
-
Olfactory.
|
1448
|
+
Olfactory.create :widget do |w|
|
1052
1449
|
w.doodad :one do |d|
|
1053
1450
|
d.gizmos SaveableString.new(value), SaveableString.new(value)
|
1054
1451
|
end
|
@@ -1058,13 +1455,13 @@ describe Olfactory::Template do
|
|
1058
1455
|
it { expect(subject[:doodads][:one][:gizmos].last.saved?).to be true }
|
1059
1456
|
end
|
1060
1457
|
context "containing a named collection of saveable objects" do
|
1061
|
-
before do
|
1458
|
+
before(:context) do
|
1062
1459
|
Olfactory.template :doodad do |t|
|
1063
1460
|
t.has_many :gizmos, :named => true
|
1064
1461
|
end
|
1065
1462
|
end
|
1066
1463
|
subject do
|
1067
|
-
Olfactory.
|
1464
|
+
Olfactory.create :widget do |w|
|
1068
1465
|
w.doodad :one do |d|
|
1069
1466
|
d.gizmos :a => SaveableString.new(value), :b => SaveableString.new(value)
|
1070
1467
|
end
|