paulcarey-relaxdb 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/docs/spec_results.html +93 -91
- data/lib/relaxdb/document.rb +2 -2
- data/spec/document_spec.rb +7 -0
- metadata +1 -1
data/Rakefile
CHANGED
data/docs/spec_results.html
CHANGED
@@ -212,14 +212,14 @@ a {
|
|
212
212
|
<div class="example_group">
|
213
213
|
<dl>
|
214
214
|
<dt id="example_group_4">RelaxDB::DesignDocument#save</dt>
|
215
|
-
<script type="text/javascript">moveProgressBar('10.
|
215
|
+
<script type="text/javascript">moveProgressBar('10.0');</script>
|
216
216
|
<dd class="spec passed"><span class="passed_spec_name">should create a corresponding document in CouchDB</span></dd>
|
217
217
|
</dl>
|
218
218
|
</div>
|
219
219
|
<div class="example_group">
|
220
220
|
<dl>
|
221
221
|
<dt id="example_group_5">RelaxDB::DesignDocument#destroy</dt>
|
222
|
-
<script type="text/javascript">moveProgressBar('11.
|
222
|
+
<script type="text/javascript">moveProgressBar('11.0');</script>
|
223
223
|
<dd class="spec passed"><span class="passed_spec_name">should delete the corresponding document from CouchDB</span></dd>
|
224
224
|
</dl>
|
225
225
|
</div>
|
@@ -231,132 +231,134 @@ a {
|
|
231
231
|
<div class="example_group">
|
232
232
|
<dl>
|
233
233
|
<dt id="example_group_7">RelaxDB::Document.new</dt>
|
234
|
-
<script type="text/javascript">moveProgressBar('12.
|
234
|
+
<script type="text/javascript">moveProgressBar('12.0');</script>
|
235
235
|
<dd class="spec passed"><span class="passed_spec_name">should create an object with an id</span></dd>
|
236
|
-
<script type="text/javascript">moveProgressBar('13.
|
236
|
+
<script type="text/javascript">moveProgressBar('13.0');</script>
|
237
237
|
<dd class="spec passed"><span class="passed_spec_name">should create an object with a nil revision</span></dd>
|
238
|
-
<script type="text/javascript">moveProgressBar('14.
|
238
|
+
<script type="text/javascript">moveProgressBar('14.0');</script>
|
239
239
|
<dd class="spec passed"><span class="passed_spec_name">should convert attributes that end in _at to dates</span></dd>
|
240
|
-
<script type="text/javascript">moveProgressBar('15.
|
240
|
+
<script type="text/javascript">moveProgressBar('15.0');</script>
|
241
241
|
<dd class="spec passed"><span class="passed_spec_name">will silently ignore parameters that don't specify class attributes</span></dd>
|
242
242
|
</dl>
|
243
243
|
</div>
|
244
244
|
<div class="example_group">
|
245
245
|
<dl>
|
246
246
|
<dt id="example_group_8">RelaxDB::Document#to_json</dt>
|
247
|
-
<script type="text/javascript">moveProgressBar('16.
|
247
|
+
<script type="text/javascript">moveProgressBar('16.0');</script>
|
248
248
|
<dd class="spec passed"><span class="passed_spec_name">should not output nil attributes</span></dd>
|
249
249
|
</dl>
|
250
250
|
</div>
|
251
251
|
<div class="example_group">
|
252
252
|
<dl>
|
253
253
|
<dt id="example_group_9">RelaxDB::Document#save</dt>
|
254
|
-
<script type="text/javascript">moveProgressBar('17.
|
254
|
+
<script type="text/javascript">moveProgressBar('17.0');</script>
|
255
255
|
<dd class="spec passed"><span class="passed_spec_name">should set an object's revision</span></dd>
|
256
|
-
<script type="text/javascript">moveProgressBar('18.
|
256
|
+
<script type="text/javascript">moveProgressBar('18.0');</script>
|
257
257
|
<dd class="spec passed"><span class="passed_spec_name">should result in an object considered saved</span></dd>
|
258
|
-
<script type="text/javascript">moveProgressBar('19.
|
258
|
+
<script type="text/javascript">moveProgressBar('19.0');</script>
|
259
259
|
<dd class="spec passed"><span class="passed_spec_name">should be invokable multiple times</span></dd>
|
260
|
-
<script type="text/javascript">moveProgressBar('20.
|
260
|
+
<script type="text/javascript">moveProgressBar('20.0');</script>
|
261
261
|
<dd class="spec passed"><span class="passed_spec_name">should set created_at when first saved</span></dd>
|
262
|
-
<script type="text/javascript">moveProgressBar('21.
|
262
|
+
<script type="text/javascript">moveProgressBar('21.0');</script>
|
263
263
|
<dd class="spec passed"><span class="passed_spec_name">should set created_at when first saved unless supplied to the constructor</span></dd>
|
264
264
|
</dl>
|
265
265
|
</div>
|
266
266
|
<div class="example_group">
|
267
267
|
<dl>
|
268
268
|
<dt id="example_group_10">RelaxDB::Document loaded objects</dt>
|
269
|
-
<script type="text/javascript">moveProgressBar('22.
|
269
|
+
<script type="text/javascript">moveProgressBar('22.0');</script>
|
270
270
|
<dd class="spec passed"><span class="passed_spec_name">should contain state as when saved</span></dd>
|
271
|
-
<script type="text/javascript">moveProgressBar('23.
|
271
|
+
<script type="text/javascript">moveProgressBar('23.0');</script>
|
272
272
|
<dd class="spec passed"><span class="passed_spec_name">should be saveable</span></dd>
|
273
273
|
</dl>
|
274
274
|
</div>
|
275
275
|
<div class="example_group">
|
276
276
|
<dl>
|
277
277
|
<dt id="example_group_11">RelaxDB::Document#destroy</dt>
|
278
|
-
<script type="text/javascript">moveProgressBar('24.
|
278
|
+
<script type="text/javascript">moveProgressBar('24.0');</script>
|
279
279
|
<dd class="spec passed"><span class="passed_spec_name">should delete the corresponding document from CouchDB</span></dd>
|
280
|
-
<script type="text/javascript">moveProgressBar('25.
|
280
|
+
<script type="text/javascript">moveProgressBar('25.0');</script>
|
281
281
|
<dd class="spec passed"><span class="passed_spec_name">should prevent the object from being resaved</span></dd>
|
282
|
-
<script type="text/javascript">moveProgressBar('26.
|
282
|
+
<script type="text/javascript">moveProgressBar('26.0');</script>
|
283
283
|
<dd class="spec passed"><span class="passed_spec_name">will result in undefined behaviour when invoked on unsaved objects</span></dd>
|
284
284
|
</dl>
|
285
285
|
</div>
|
286
286
|
<div class="example_group">
|
287
287
|
<dl>
|
288
288
|
<dt id="example_group_12">RelaxDB::Document#all.destroy!</dt>
|
289
|
-
<script type="text/javascript">moveProgressBar('27.
|
289
|
+
<script type="text/javascript">moveProgressBar('27.0');</script>
|
290
290
|
<dd class="spec passed"><span class="passed_spec_name">should delete from CouchDB all documents of the corresponding class</span></dd>
|
291
291
|
</dl>
|
292
292
|
</div>
|
293
293
|
<div class="example_group">
|
294
294
|
<dl>
|
295
295
|
<dt id="example_group_13">RelaxDB::Document ==</dt>
|
296
|
-
<script type="text/javascript">moveProgressBar('28.
|
296
|
+
<script type="text/javascript">moveProgressBar('28.0');</script>
|
297
297
|
<dd class="spec passed"><span class="passed_spec_name">should define equality based on CouchDB id</span></dd>
|
298
|
-
<script type="text/javascript">moveProgressBar('29.
|
298
|
+
<script type="text/javascript">moveProgressBar('29.0');</script>
|
299
299
|
<dd class="spec passed"><span class="passed_spec_name">should return false when passed a nil object</span></dd>
|
300
300
|
</dl>
|
301
301
|
</div>
|
302
302
|
<div class="example_group">
|
303
303
|
<dl>
|
304
304
|
<dt id="example_group_14">RelaxDB::Document#all</dt>
|
305
|
-
<script type="text/javascript">moveProgressBar('30.
|
305
|
+
<script type="text/javascript">moveProgressBar('30.0');</script>
|
306
306
|
<dd class="spec passed"><span class="passed_spec_name">should return all instances of that class</span></dd>
|
307
|
-
<script type="text/javascript">moveProgressBar('31.
|
307
|
+
<script type="text/javascript">moveProgressBar('31.0');</script>
|
308
308
|
<dd class="spec passed"><span class="passed_spec_name">should return an empty array when no instances exist</span></dd>
|
309
309
|
</dl>
|
310
310
|
</div>
|
311
311
|
<div class="example_group">
|
312
312
|
<dl>
|
313
313
|
<dt id="example_group_15">RelaxDB::Document#all.sorted_by</dt>
|
314
|
-
<script type="text/javascript">moveProgressBar('32.
|
314
|
+
<script type="text/javascript">moveProgressBar('32.0');</script>
|
315
315
|
<dd class="spec passed"><span class="passed_spec_name">should sort ascending by default</span></dd>
|
316
|
-
<script type="text/javascript">moveProgressBar('33.
|
316
|
+
<script type="text/javascript">moveProgressBar('33.0');</script>
|
317
317
|
<dd class="spec passed"><span class="passed_spec_name">should sort desc when specified</span></dd>
|
318
|
-
<script type="text/javascript">moveProgressBar('34.
|
318
|
+
<script type="text/javascript">moveProgressBar('34.0');</script>
|
319
319
|
<dd class="spec passed"><span class="passed_spec_name">should sort date attributes lexicographically</span></dd>
|
320
320
|
</dl>
|
321
321
|
</div>
|
322
322
|
<div class="example_group">
|
323
323
|
<dl>
|
324
324
|
<dt id="example_group_16">RelaxDB::Document#all.sorted_by results</dt>
|
325
|
-
<script type="text/javascript">moveProgressBar('35.
|
325
|
+
<script type="text/javascript">moveProgressBar('35.0');</script>
|
326
326
|
<dd class="spec passed"><span class="passed_spec_name">should be retrievable by exact criteria</span></dd>
|
327
|
-
<script type="text/javascript">moveProgressBar('36.
|
327
|
+
<script type="text/javascript">moveProgressBar('36.0');</script>
|
328
328
|
<dd class="spec passed"><span class="passed_spec_name">should be retrievable by relative criteria</span></dd>
|
329
|
-
<script type="text/javascript">moveProgressBar('37.
|
329
|
+
<script type="text/javascript">moveProgressBar('37.0');</script>
|
330
330
|
<dd class="spec passed"><span class="passed_spec_name">should be retrievable by combined criteria</span></dd>
|
331
|
-
<script type="text/javascript">moveProgressBar('38.
|
331
|
+
<script type="text/javascript">moveProgressBar('38.0');</script>
|
332
332
|
<dd class="spec passed"><span class="passed_spec_name">should be retrievable by combined criteria where not all docs contain all attributes</span></dd>
|
333
333
|
</dl>
|
334
334
|
</div>
|
335
335
|
<div class="example_group">
|
336
336
|
<dl>
|
337
337
|
<dt id="example_group_17">RelaxDB::Document defaults</dt>
|
338
|
-
<script type="text/javascript">moveProgressBar('39.
|
338
|
+
<script type="text/javascript">moveProgressBar('39.0');</script>
|
339
339
|
<dd class="spec passed"><span class="passed_spec_name">should be set on initialisation</span></dd>
|
340
|
-
<script type="text/javascript">moveProgressBar('40.
|
340
|
+
<script type="text/javascript">moveProgressBar('40.0');</script>
|
341
341
|
<dd class="spec passed"><span class="passed_spec_name">should be saved</span></dd>
|
342
|
-
<script type="text/javascript">moveProgressBar('41.
|
342
|
+
<script type="text/javascript">moveProgressBar('41.0');</script>
|
343
343
|
<dd class="spec passed"><span class="passed_spec_name">should be ignored once overwritten</span></dd>
|
344
|
-
<script type="text/javascript">moveProgressBar('42.
|
344
|
+
<script type="text/javascript">moveProgressBar('42.0');</script>
|
345
345
|
<dd class="spec passed"><span class="passed_spec_name">may be a simple value</span></dd>
|
346
|
-
<script type="text/javascript">moveProgressBar('43.
|
346
|
+
<script type="text/javascript">moveProgressBar('43.0');</script>
|
347
347
|
<dd class="spec passed"><span class="passed_spec_name">may be a proc</span></dd>
|
348
348
|
</dl>
|
349
349
|
</div>
|
350
350
|
<div class="example_group">
|
351
351
|
<dl>
|
352
352
|
<dt id="example_group_18">RelaxDB::Document validator</dt>
|
353
|
-
<script type="text/javascript">moveProgressBar('44.
|
353
|
+
<script type="text/javascript">moveProgressBar('44.0');</script>
|
354
354
|
<dd class="spec passed"><span class="passed_spec_name">should prevent an object from being saved if it evaluates to false</span></dd>
|
355
|
-
<script type="text/javascript">moveProgressBar('45.
|
355
|
+
<script type="text/javascript">moveProgressBar('45.0');</script>
|
356
|
+
<dd class="spec passed"><span class="passed_spec_name">should prevent an object from being saved if it throws an exception</span></dd>
|
357
|
+
<script type="text/javascript">moveProgressBar('46.0');</script>
|
356
358
|
<dd class="spec passed"><span class="passed_spec_name">should pass the property value to the validator</span></dd>
|
357
|
-
<script type="text/javascript">moveProgressBar('
|
359
|
+
<script type="text/javascript">moveProgressBar('47.0');</script>
|
358
360
|
<dd class="spec passed"><span class="passed_spec_name">should add the validation error message if supplied, on failure</span></dd>
|
359
|
-
<script type="text/javascript">moveProgressBar('
|
361
|
+
<script type="text/javascript">moveProgressBar('48.0');</script>
|
360
362
|
<dd class="spec passed"><span class="passed_spec_name">should perform all validations</span></dd>
|
361
363
|
</dl>
|
362
364
|
</div>
|
@@ -368,61 +370,61 @@ a {
|
|
368
370
|
<div class="example_group">
|
369
371
|
<dl>
|
370
372
|
<dt id="example_group_20">RelaxDB::HasManyProxy has_many</dt>
|
371
|
-
<script type="text/javascript">moveProgressBar('
|
373
|
+
<script type="text/javascript">moveProgressBar('49.0');</script>
|
372
374
|
<dd class="spec passed"><span class="passed_spec_name">should be considered enumerable</span></dd>
|
373
|
-
<script type="text/javascript">moveProgressBar('
|
375
|
+
<script type="text/javascript">moveProgressBar('50.0');</script>
|
374
376
|
<dd class="spec passed"><span class="passed_spec_name">should actually be enumerable</span></dd>
|
375
|
-
<script type="text/javascript">moveProgressBar('
|
377
|
+
<script type="text/javascript">moveProgressBar('51.0');</script>
|
376
378
|
<dd class="spec passed"><span class="passed_spec_name">should preserve the collection across the load / save boundary</span></dd>
|
377
379
|
</dl>
|
378
380
|
</div>
|
379
381
|
<div class="example_group">
|
380
382
|
<dl>
|
381
383
|
<dt id="example_group_21">RelaxDB::HasManyProxy has_many#<<</dt>
|
382
|
-
<script type="text/javascript">moveProgressBar('
|
384
|
+
<script type="text/javascript">moveProgressBar('52.0');</script>
|
383
385
|
<dd class="spec passed"><span class="passed_spec_name">should link the added item to the parent</span></dd>
|
384
|
-
<script type="text/javascript">moveProgressBar('
|
386
|
+
<script type="text/javascript">moveProgressBar('53.0');</script>
|
385
387
|
<dd class="spec passed"><span class="passed_spec_name">should return self</span></dd>
|
386
|
-
<script type="text/javascript">moveProgressBar('
|
388
|
+
<script type="text/javascript">moveProgressBar('54.0');</script>
|
387
389
|
<dd class="spec passed"><span class="passed_spec_name">should not created duplicates when invoked with same object more than once</span></dd>
|
388
|
-
<script type="text/javascript">moveProgressBar('
|
390
|
+
<script type="text/javascript">moveProgressBar('55.0');</script>
|
389
391
|
<dd class="spec passed"><span class="passed_spec_name">should return false when the child fails validation</span></dd>
|
390
392
|
</dl>
|
391
393
|
</div>
|
392
394
|
<div class="example_group">
|
393
395
|
<dl>
|
394
396
|
<dt id="example_group_22">RelaxDB::HasManyProxy has_many#=</dt>
|
395
|
-
<script type="text/javascript">moveProgressBar('
|
397
|
+
<script type="text/javascript">moveProgressBar('56.0');</script>
|
396
398
|
<dd class="spec passed"><span class="passed_spec_name">should fail</span></dd>
|
397
399
|
</dl>
|
398
400
|
</div>
|
399
401
|
<div class="example_group">
|
400
402
|
<dl>
|
401
403
|
<dt id="example_group_23">RelaxDB::HasManyProxy has_many#delete</dt>
|
402
|
-
<script type="text/javascript">moveProgressBar('
|
404
|
+
<script type="text/javascript">moveProgressBar('57.0');</script>
|
403
405
|
<dd class="spec passed"><span class="passed_spec_name">should nullify the belongs_to relationship</span></dd>
|
404
406
|
</dl>
|
405
407
|
</div>
|
406
408
|
<div class="example_group">
|
407
409
|
<dl>
|
408
410
|
<dt id="example_group_24">RelaxDB::HasManyProxy has_many#clear</dt>
|
409
|
-
<script type="text/javascript">moveProgressBar('
|
411
|
+
<script type="text/javascript">moveProgressBar('58.0');</script>
|
410
412
|
<dd class="spec passed"><span class="passed_spec_name">should result in an empty collection</span></dd>
|
411
|
-
<script type="text/javascript">moveProgressBar('
|
413
|
+
<script type="text/javascript">moveProgressBar('59.0');</script>
|
412
414
|
<dd class="spec passed"><span class="passed_spec_name">should nullify all child relationships</span></dd>
|
413
415
|
</dl>
|
414
416
|
</div>
|
415
417
|
<div class="example_group">
|
416
418
|
<dl>
|
417
419
|
<dt id="example_group_25">RelaxDB::HasManyProxy has_many owner</dt>
|
418
|
-
<script type="text/javascript">moveProgressBar('
|
420
|
+
<script type="text/javascript">moveProgressBar('60.0');</script>
|
419
421
|
<dd class="spec passed"><span class="passed_spec_name">should be able to form multiple relationships with the same class of child</span></dd>
|
420
422
|
</dl>
|
421
423
|
</div>
|
422
424
|
<div class="example_group">
|
423
425
|
<dl>
|
424
426
|
<dt id="example_group_26">RelaxDB::HasManyProxy has_many owner#destroy</dt>
|
425
|
-
<script type="text/javascript">moveProgressBar('
|
427
|
+
<script type="text/javascript">moveProgressBar('61.0');</script>
|
426
428
|
<dd class="spec passed"><span class="passed_spec_name">should nullify its child relationships</span></dd>
|
427
429
|
</dl>
|
428
430
|
</div>
|
@@ -434,38 +436,38 @@ a {
|
|
434
436
|
<div class="example_group">
|
435
437
|
<dl>
|
436
438
|
<dt id="example_group_28">RelaxDB::HasOneProxy has_one</dt>
|
437
|
-
<script type="text/javascript">moveProgressBar('
|
439
|
+
<script type="text/javascript">moveProgressBar('62.0');</script>
|
438
440
|
<dd class="spec passed"><span class="passed_spec_name">should return nil when accessed before assignment</span></dd>
|
439
|
-
<script type="text/javascript">moveProgressBar('
|
441
|
+
<script type="text/javascript">moveProgressBar('63.0');</script>
|
440
442
|
<dd class="spec passed"><span class="passed_spec_name">should be establishable via a constructor attribute</span></dd>
|
441
|
-
<script type="text/javascript">moveProgressBar('
|
443
|
+
<script type="text/javascript">moveProgressBar('64.0');</script>
|
442
444
|
<dd class="spec passed"><span class="passed_spec_name">should be establishable via assignment</span></dd>
|
443
|
-
<script type="text/javascript">moveProgressBar('
|
445
|
+
<script type="text/javascript">moveProgressBar('65.0');</script>
|
444
446
|
<dd class="spec passed"><span class="passed_spec_name">should return the same object on repeated invocations</span></dd>
|
445
|
-
<script type="text/javascript">moveProgressBar('
|
447
|
+
<script type="text/javascript">moveProgressBar('66.0');</script>
|
446
448
|
<dd class="spec passed"><span class="passed_spec_name">should be preserved across load / save boundary</span></dd>
|
447
|
-
<script type="text/javascript">moveProgressBar('
|
449
|
+
<script type="text/javascript">moveProgressBar('67.0');</script>
|
448
450
|
<dd class="spec passed"><span class="passed_spec_name">should be able reference itself via its child</span></dd>
|
449
451
|
</dl>
|
450
452
|
</div>
|
451
453
|
<div class="example_group">
|
452
454
|
<dl>
|
453
455
|
<dt id="example_group_29">RelaxDB::HasOneProxy has_one#=</dt>
|
454
|
-
<script type="text/javascript">moveProgressBar('
|
456
|
+
<script type="text/javascript">moveProgressBar('68.0');</script>
|
455
457
|
<dd class="spec passed"><span class="passed_spec_name">should create a reference from the child to the parent</span></dd>
|
456
|
-
<script type="text/javascript">moveProgressBar('
|
458
|
+
<script type="text/javascript">moveProgressBar('69.0');</script>
|
457
459
|
<dd class="spec passed"><span class="passed_spec_name">should save the assigned object</span></dd>
|
458
|
-
<script type="text/javascript">moveProgressBar('
|
460
|
+
<script type="text/javascript">moveProgressBar('70.0');</script>
|
459
461
|
<dd class="spec passed"><span class="passed_spec_name">will not save the parent</span></dd>
|
460
|
-
<script type="text/javascript">moveProgressBar('
|
462
|
+
<script type="text/javascript">moveProgressBar('71.0');</script>
|
461
463
|
<dd class="spec passed"><span class="passed_spec_name">should set the target to nil when nil is assigned</span></dd>
|
462
|
-
<script type="text/javascript">moveProgressBar('
|
464
|
+
<script type="text/javascript">moveProgressBar('72.0');</script>
|
463
465
|
<dd class="spec passed"><span class="passed_spec_name">should nullify any existing relationship in the database</span></dd>
|
464
|
-
<script type="text/javascript">moveProgressBar('
|
466
|
+
<script type="text/javascript">moveProgressBar('73.0');</script>
|
465
467
|
<dd class="spec passed"><span class="passed_spec_name">should nullify any existing relationship on a known in-memory object</span></dd>
|
466
|
-
<script type="text/javascript">moveProgressBar('
|
468
|
+
<script type="text/javascript">moveProgressBar('74.0');</script>
|
467
469
|
<dd class="spec passed"><span class="passed_spec_name">will not nullify any existing relationship on unknown in-memory objects</span></dd>
|
468
|
-
<script type="text/javascript">moveProgressBar('
|
470
|
+
<script type="text/javascript">moveProgressBar('75.0');</script>
|
469
471
|
<dd class="spec passed"><span class="passed_spec_name">will not throw an error when the rhs fails validation</span></dd>
|
470
472
|
</dl>
|
471
473
|
</div>
|
@@ -477,22 +479,22 @@ a {
|
|
477
479
|
<div class="example_group">
|
478
480
|
<dl>
|
479
481
|
<dt id="example_group_31">RelaxDB::Query#view_name</dt>
|
480
|
-
<script type="text/javascript">moveProgressBar('
|
482
|
+
<script type="text/javascript">moveProgressBar('76.0');</script>
|
481
483
|
<dd class="spec passed"><span class="passed_spec_name">should match a single key attribute</span></dd>
|
482
|
-
<script type="text/javascript">moveProgressBar('
|
484
|
+
<script type="text/javascript">moveProgressBar('77.0');</script>
|
483
485
|
<dd class="spec passed"><span class="passed_spec_name">should match key attributes</span></dd>
|
484
486
|
</dl>
|
485
487
|
</div>
|
486
488
|
<div class="example_group">
|
487
489
|
<dl>
|
488
490
|
<dt id="example_group_32">RelaxDB::Query#view_path</dt>
|
489
|
-
<script type="text/javascript">moveProgressBar('
|
491
|
+
<script type="text/javascript">moveProgressBar('78.0');</script>
|
490
492
|
<dd class="spec passed"><span class="passed_spec_name">should list design document and view name</span></dd>
|
491
|
-
<script type="text/javascript">moveProgressBar('
|
493
|
+
<script type="text/javascript">moveProgressBar('79.0');</script>
|
492
494
|
<dd class="spec passed"><span class="passed_spec_name">should contain URL and JSON encoded key when the key has been set</span></dd>
|
493
|
-
<script type="text/javascript">moveProgressBar('
|
495
|
+
<script type="text/javascript">moveProgressBar('80.0');</script>
|
494
496
|
<dd class="spec passed"><span class="passed_spec_name">should honour startkey, endkey and count</span></dd>
|
495
|
-
<script type="text/javascript">moveProgressBar('
|
497
|
+
<script type="text/javascript">moveProgressBar('81.0');</script>
|
496
498
|
<dd class="spec passed"><span class="passed_spec_name">should specify the key as the empty string if key was set to nil</span></dd>
|
497
499
|
</dl>
|
498
500
|
</div>
|
@@ -504,68 +506,68 @@ a {
|
|
504
506
|
<div class="example_group">
|
505
507
|
<dl>
|
506
508
|
<dt id="example_group_34">RelaxDB::ReferencesManyProxy references_many</dt>
|
507
|
-
<script type="text/javascript">moveProgressBar('
|
509
|
+
<script type="text/javascript">moveProgressBar('82.0');</script>
|
508
510
|
<dd class="spec passed"><span class="passed_spec_name">is now deprecated and will be removed in the near future</span></dd>
|
509
|
-
<script type="text/javascript">moveProgressBar('
|
511
|
+
<script type="text/javascript">moveProgressBar('83.0');</script>
|
510
512
|
<dd class="spec passed"><span class="passed_spec_name">should preserve the relationships across the save / load boundary</span></dd>
|
511
513
|
</dl>
|
512
514
|
</div>
|
513
515
|
<div class="example_group">
|
514
516
|
<dl>
|
515
517
|
<dt id="example_group_35">RelaxDB::ReferencesManyProxy references_many#=</dt>
|
516
|
-
<script type="text/javascript">moveProgressBar('
|
518
|
+
<script type="text/javascript">moveProgressBar('84.0');</script>
|
517
519
|
<dd class="spec passed"><span class="passed_spec_name">should not be invoked</span></dd>
|
518
520
|
</dl>
|
519
521
|
</div>
|
520
522
|
<div class="example_group">
|
521
523
|
<dl>
|
522
524
|
<dt id="example_group_36">RelaxDB::ReferencesManyProxy references_many#<<</dt>
|
523
|
-
<script type="text/javascript">moveProgressBar('
|
525
|
+
<script type="text/javascript">moveProgressBar('85.0');</script>
|
524
526
|
<dd class="spec passed"><span class="passed_spec_name">should set the relationship on both sides</span></dd>
|
525
|
-
<script type="text/javascript">moveProgressBar('
|
527
|
+
<script type="text/javascript">moveProgressBar('86.0');</script>
|
526
528
|
<dd class="spec passed"><span class="passed_spec_name">should not create duplicates when the same object is added more than once</span></dd>
|
527
|
-
<script type="text/javascript">moveProgressBar('
|
529
|
+
<script type="text/javascript">moveProgressBar('87.0');</script>
|
528
530
|
<dd class="spec passed"><span class="passed_spec_name">should not create duplicates when reciprocal objects are added from opposite sides</span></dd>
|
529
531
|
</dl>
|
530
532
|
</div>
|
531
533
|
<div class="example_group">
|
532
534
|
<dl>
|
533
535
|
<dt id="example_group_37">RelaxDB::ReferencesManyProxy references_many#delete</dt>
|
534
|
-
<script type="text/javascript">moveProgressBar('
|
536
|
+
<script type="text/javascript">moveProgressBar('88.0');</script>
|
535
537
|
<dd class="spec passed"><span class="passed_spec_name">should nullify relationship on both sides</span></dd>
|
536
538
|
</dl>
|
537
539
|
</div>
|
538
540
|
<div class="example_group">
|
539
541
|
<dl>
|
540
542
|
<dt id="example_group_38">RelaxDB::ReferencesManyProxy references_many owner#destroy</dt>
|
541
|
-
<script type="text/javascript">moveProgressBar('
|
543
|
+
<script type="text/javascript">moveProgressBar('89.0');</script>
|
542
544
|
<dd class="spec passed"><span class="passed_spec_name">will not remove its membership from its peers in memory</span></dd>
|
543
|
-
<script type="text/javascript">moveProgressBar('
|
545
|
+
<script type="text/javascript">moveProgressBar('90.0');</script>
|
544
546
|
<dd class="spec passed"><span class="passed_spec_name">should remove its membership from its peers in CouchDB</span></dd>
|
545
547
|
</dl>
|
546
548
|
</div>
|
547
549
|
<div class="example_group">
|
548
550
|
<dl>
|
549
551
|
<dt id="example_group_39">RelaxDB</dt>
|
550
|
-
<script type="text/javascript">moveProgressBar('
|
552
|
+
<script type="text/javascript">moveProgressBar('91.0');</script>
|
551
553
|
<dd class="spec passed"><span class="passed_spec_name">should offer an example where behaviour is different with caching enabled and caching disabled</span></dd>
|
552
554
|
</dl>
|
553
555
|
</div>
|
554
556
|
<div class="example_group">
|
555
557
|
<dl>
|
556
558
|
<dt id="example_group_40">RelaxDB.create_object</dt>
|
557
|
-
<script type="text/javascript">moveProgressBar('
|
559
|
+
<script type="text/javascript">moveProgressBar('92.0');</script>
|
558
560
|
<dd class="spec passed"><span class="passed_spec_name">should return an instance of a known object if passed a hash with a class key</span></dd>
|
559
|
-
<script type="text/javascript">moveProgressBar('
|
561
|
+
<script type="text/javascript">moveProgressBar('93.0');</script>
|
560
562
|
<dd class="spec passed"><span class="passed_spec_name">should return an instance of a dynamically created object if no class key is provided</span></dd>
|
561
563
|
</dl>
|
562
564
|
</div>
|
563
565
|
<div class="example_group">
|
564
566
|
<dl>
|
565
567
|
<dt id="example_group_41">RelaxDB.bulk_save</dt>
|
566
|
-
<script type="text/javascript">moveProgressBar('
|
568
|
+
<script type="text/javascript">moveProgressBar('94.0');</script>
|
567
569
|
<dd class="spec passed"><span class="passed_spec_name">should be invokable multiple times</span></dd>
|
568
|
-
<script type="text/javascript">moveProgressBar('
|
570
|
+
<script type="text/javascript">moveProgressBar('95.0');</script>
|
569
571
|
<dd class="spec passed"><span class="passed_spec_name">should succeed when passed no args</span></dd>
|
570
572
|
</dl>
|
571
573
|
</div>
|
@@ -577,25 +579,25 @@ a {
|
|
577
579
|
<div class="example_group">
|
578
580
|
<dl>
|
579
581
|
<dt id="example_group_43">RelaxDB::ViewObject.new</dt>
|
580
|
-
<script type="text/javascript">moveProgressBar('
|
582
|
+
<script type="text/javascript">moveProgressBar('96.0');</script>
|
581
583
|
<dd class="spec passed"><span class="passed_spec_name">should provide readers for the object passed in the hash</span></dd>
|
582
|
-
<script type="text/javascript">moveProgressBar('
|
584
|
+
<script type="text/javascript">moveProgressBar('97.0');</script>
|
583
585
|
<dd class="spec passed"><span class="passed_spec_name">should try to convert objects ending in _at to a time</span></dd>
|
584
586
|
</dl>
|
585
587
|
</div>
|
586
588
|
<div class="example_group">
|
587
589
|
<dl>
|
588
590
|
<dt id="example_group_44">RelaxDB::ViewObject.create</dt>
|
589
|
-
<script type="text/javascript">moveProgressBar('
|
591
|
+
<script type="text/javascript">moveProgressBar('98.0');</script>
|
590
592
|
<dd class="spec passed"><span class="passed_spec_name">should return an array of view objects when passed an array</span></dd>
|
591
|
-
<script type="text/javascript">moveProgressBar('
|
593
|
+
<script type="text/javascript">moveProgressBar('99.0');</script>
|
592
594
|
<dd class="spec passed"><span class="passed_spec_name">should return a view object when passed a hash</span></dd>
|
593
595
|
<script type="text/javascript">moveProgressBar('100.0');</script>
|
594
596
|
<dd class="spec passed"><span class="passed_spec_name">should return a simple value when passed a primitive</span></dd>
|
595
597
|
</dl>
|
596
598
|
</div>
|
597
|
-
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>
|
598
|
-
<script type="text/javascript">document.getElementById('totals').innerHTML = "
|
599
|
+
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>11.855995 seconds</strong>";</script>
|
600
|
+
<script type="text/javascript">document.getElementById('totals').innerHTML = "100 examples, 0 failures";</script>
|
599
601
|
</div>
|
600
602
|
</div>
|
601
603
|
</body>
|
data/lib/relaxdb/document.rb
CHANGED
@@ -138,8 +138,8 @@ module RelaxDB
|
|
138
138
|
properties.each do |prop|
|
139
139
|
if methods.include? "validate_#{prop}"
|
140
140
|
prop_val = instance_variable_get("@#{prop}")
|
141
|
-
|
142
|
-
|
141
|
+
success = send("validate_#{prop}", prop_val) rescue false
|
142
|
+
unless success
|
143
143
|
if methods.include? "#{prop}_validation_msg"
|
144
144
|
@errors["#{prop}".to_sym] = send("#{prop}_validation_msg")
|
145
145
|
end
|
data/spec/document_spec.rb
CHANGED
@@ -267,6 +267,13 @@ describe RelaxDB::Document do
|
|
267
267
|
end
|
268
268
|
r.new.save.should be_false
|
269
269
|
end
|
270
|
+
|
271
|
+
it "should prevent an object from being saved if it throws an exception" do
|
272
|
+
r = Class.new(RelaxDB::Document) do
|
273
|
+
property :thumbs_up, :validator => lambda { raise "foo" }
|
274
|
+
end
|
275
|
+
r.new.save.should be_false
|
276
|
+
end
|
270
277
|
|
271
278
|
it "should pass the property value to the validator" do
|
272
279
|
r = Class.new(RelaxDB::Document) do
|