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 CHANGED
@@ -4,7 +4,7 @@ require 'spec/rake/spectask'
4
4
 
5
5
  PLUGIN = "relaxdb"
6
6
  NAME = "relaxdb"
7
- GEM_VERSION = "0.1.1"
7
+ GEM_VERSION = "0.1.2"
8
8
  AUTHOR = "Paul Carey"
9
9
  EMAIL = "paul.p.carey@gmail.com"
10
10
  HOMEPAGE = "http://github.com/paulcarey/relaxdb/"
@@ -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.1');</script>
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.1');</script>
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.1');</script>
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.1');</script>
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.1');</script>
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.1');</script>
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.1');</script>
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.1');</script>
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.1');</script>
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.1');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.2');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.3');</script>
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.4');</script>
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.4');</script>
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.4');</script>
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.4');</script>
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.4');</script>
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.4');</script>
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('46.4');</script>
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('47.4');</script>
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('48.4');</script>
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('49.4');</script>
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('50.5');</script>
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#&lt;&lt;</dt>
382
- <script type="text/javascript">moveProgressBar('51.5');</script>
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('52.5');</script>
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('53.5');</script>
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('54.5');</script>
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('55.5');</script>
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('56.5');</script>
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('57.5');</script>
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('58.5');</script>
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('59.5');</script>
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('60.6');</script>
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('61.6');</script>
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('62.6');</script>
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('63.6');</script>
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('64.6');</script>
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('65.6');</script>
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('66.6');</script>
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('67.6');</script>
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('68.6');</script>
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('69.6');</script>
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('70.7');</script>
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('71.7');</script>
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('72.7');</script>
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('73.7');</script>
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('74.7');</script>
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('75.7');</script>
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('76.7');</script>
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('77.7');</script>
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('78.7');</script>
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('79.7');</script>
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('80.8');</script>
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('81.8');</script>
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('82.8');</script>
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('83.8');</script>
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#&lt;&lt;</dt>
523
- <script type="text/javascript">moveProgressBar('84.8');</script>
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('85.8');</script>
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('86.8');</script>
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('87.8');</script>
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('88.8');</script>
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('89.8');</script>
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('90.9');</script>
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('91.9');</script>
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('92.9');</script>
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('93.9');</script>
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('94.9');</script>
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('95.9');</script>
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('96.9');</script>
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('97.9');</script>
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('98.9');</script>
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>10.229154 seconds</strong>";</script>
598
- <script type="text/javascript">document.getElementById('totals').innerHTML = "99 examples, 0 failures";</script>
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>
@@ -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
- unless send("validate_#{prop}", prop_val)
142
- success = false
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
@@ -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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paulcarey-relaxdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Carey