paulcarey-relaxdb 0.1.1 → 0.1.2
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/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
|