paulcarey / relaxdb

RelaxDB provides a simple Ruby interface to CouchDB

relaxdb / docs / spec_results.html
100644 1060 lines (1036 sloc) 55.6 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>RSpec results</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Expires" content="-1" />
  <meta http-equiv="Pragma" content="no-cache" />
  <style type="text/css">
  body {
    margin: 0;
    padding: 0;
    background: #fff;
    font-size: 80%;
  }
  </style>
</head>
<body>
<div class="rspec-report">
  <script type="text/javascript">
    // <![CDATA[
function moveProgressBar(percentDone) {
  document.getElementById("rspec-header").style.width = percentDone +"%";
}
function makeRed(element_id) {
  document.getElementById(element_id).style.background = '#C40D0D';
  document.getElementById(element_id).style.color = '#FFFFFF';
}
 
function makeYellow(element_id) {
  if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
  {
    document.getElementById(element_id).style.background = '#FAF834';
    document.getElementById(element_id).style.color = '#000000';
  }
  else
  {
    document.getElementById(element_id).style.background = '#FAF834';
    document.getElementById(element_id).style.color = '#000000';
  }
}
 
    // ]]>
  </script>
  <style type="text/css">
#rspec-header {
  background: #65C400; color: #fff;
}
 
.rspec-report h1 {
  margin: 0px 10px 0px 10px;
  padding: 10px;
  font-family: "Lucida Grande", Helvetica, sans-serif;
  font-size: 1.8em;
}
 
#summary {
  margin: 0; padding: 5px 10px;
  font-family: "Lucida Grande", Helvetica, sans-serif;
  text-align: right;
  position: absolute;
  top: 0px;
  right: 0px;
}
 
#summary p {
  margin: 0 0 0 2px;
}
 
#summary #totals {
  font-size: 1.2em;
}
 
.example_group {
  margin: 0 10px 5px;
  background: #fff;
}
 
dl {
  margin: 0; padding: 0 0 5px;
  font: normal 11px "Lucida Grande", Helvetica, sans-serif;
}
 
dt {
  padding: 3px;
  background: #65C400;
  color: #fff;
  font-weight: bold;
}
 
dd {
  margin: 5px 0 5px 5px;
  padding: 3px 3px 3px 18px;
}
 
dd.spec.passed {
  border-left: 5px solid #65C400;
  border-bottom: 1px solid #65C400;
  background: #DBFFB4; color: #3D7700;
}
 
dd.spec.failed {
  border-left: 5px solid #C20000;
  border-bottom: 1px solid #C20000;
  color: #C20000; background: #FFFBD3;
}
 
dd.spec.not_implemented {
  border-left: 5px solid #FAF834;
  border-bottom: 1px solid #FAF834;
  background: #FCFB98; color: #131313;
}
 
dd.spec.pending_fixed {
  border-left: 5px solid #0000C2;
  border-bottom: 1px solid #0000C2;
  color: #0000C2; background: #D3FBFF;
}
 
.backtrace {
  color: #000;
  font-size: 12px;
}
 
a {
  color: #BE5C00;
}
 
/* Ruby code, style similar to vibrant ink */
.ruby {
  font-size: 12px;
  font-family: monospace;
  color: white;
  background-color: black;
  padding: 0.1em 0 0.2em 0;
}
 
.ruby .keyword { color: #FF6600; }
.ruby .constant { color: #339999; }
.ruby .attribute { color: white; }
.ruby .global { color: white; }
.ruby .module { color: white; }
.ruby .class { color: white; }
.ruby .string { color: #66FF00; }
.ruby .ident { color: white; }
.ruby .method { color: #FFCC00; }
.ruby .number { color: white; }
.ruby .char { color: white; }
.ruby .comment { color: #9933CC; }
.ruby .symbol { color: white; }
.ruby .regex { color: #44B4CC; }
.ruby .punct { color: white; }
.ruby .escape { color: white; }
.ruby .interp { color: white; }
.ruby .expr { color: white; }
 
.ruby .offending { background-color: gray; }
.ruby .linenum {
  width: 75px;
  padding: 0.1em 1em 0.2em 0;
  color: #000000;
  background-color: #FFFBD3;
}
 
  </style>
 
<div id="rspec-header">
  <h1>RSpec Results</h1>
 
  <div id="summary">
    <p id="totals">&nbsp;</p>
    <p id="duration">&nbsp;</p>
  </div>
</div>
 
<div class="results">
<div class="example_group">
  <dl>
  <dt id="example_group_1">RelaxDB::BelongsToProxy</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_2">RelaxDB::BelongsToProxy belongs_to</dt>
    <script type="text/javascript">moveProgressBar('0.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return nil when accessed before assignment</span></dd>
    <script type="text/javascript">moveProgressBar('0.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be establishable via constructor attribute</span></dd>
    <script type="text/javascript">moveProgressBar('1.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be establishable via constructor id</span></dd>
    <script type="text/javascript">moveProgressBar('1.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should establish the parent relationship when supplied a parent and saved</span></dd>
    <script type="text/javascript">moveProgressBar('2.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should establish the parent relationship when supplied a parent id and saved</span></dd>
    <script type="text/javascript">moveProgressBar('2.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return the same object on repeated invocations</span></dd>
    <script type="text/javascript">moveProgressBar('3.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be nullified when the parent is destroyed</span></dd>
    <script type="text/javascript">moveProgressBar('3.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be preserved across save / load boundary</span></dd>
    <script type="text/javascript">moveProgressBar('4.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be able to reference itself via its parent</span></dd>
    <script type="text/javascript">moveProgressBar('4.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be used reciprocally</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_3">RelaxDB::BelongsToProxy belongs_to validator</dt>
    <script type="text/javascript">moveProgressBar('5.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be passed the _id and object</span></dd>
    <script type="text/javascript">moveProgressBar('5.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be used with a predefined validator</span></dd>
    <script type="text/javascript">moveProgressBar('6.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be provided with a default error message when validation fails</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_4">RelaxDB::Document callbacks</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_5">RelaxDB::Document callbacks before_save</dt>
    <script type="text/javascript">moveProgressBar('6.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be run before the object is saved</span></dd>
    <script type="text/javascript">moveProgressBar('6.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should prevent the object from being saved if it returns false</span></dd>
    <script type="text/javascript">moveProgressBar('7.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should add a description to errors when false is returned</span></dd>
    <script type="text/javascript">moveProgressBar('7.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not prevent the object from being saved if it returns nil</span></dd>
    <script type="text/javascript">moveProgressBar('8.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a proc</span></dd>
    <script type="text/javascript">moveProgressBar('8.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a method</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_6">RelaxDB::Document callbacks after_save</dt>
    <script type="text/javascript">moveProgressBar('9.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be run after the object is saved</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_7">RelaxDB::Document derived properties</dt>
    <script type="text/javascript">moveProgressBar('9.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should have its value updated when the source is updated</span></dd>
    <script type="text/javascript">moveProgressBar('10.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should have its value persisted</span></dd>
    <script type="text/javascript">moveProgressBar('10.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should have its value updated when the source_id is updated for a saved event</span></dd>
    <script type="text/javascript">moveProgressBar('11.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">will not raise an exception when the source is nil</span></dd>
    <script type="text/javascript">moveProgressBar('11.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should only be updated for registered properties</span></dd>
    <script type="text/javascript">moveProgressBar('12.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should have the existing value passed to the first lambda param</span></dd>
    <script type="text/javascript">moveProgressBar('12.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should contintue to be derived post load</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_8">RelaxDB::Document derived properties multiple properties</dt>
    <script type="text/javascript">moveProgressBar('12.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be derivable from the same source</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_9">RelaxDB::DesignDocument</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_10">RelaxDB::DesignDocument#save</dt>
    <script type="text/javascript">moveProgressBar('13.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create a corresponding document in CouchDB</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_11">RelaxDB::DesignDocument#destroy</dt>
    <script type="text/javascript">moveProgressBar('13.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should delete the corresponding document from CouchDB</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_12">Inheritance</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_13">Inheritance properties</dt>
    <script type="text/javascript">moveProgressBar('14.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should by inherited from a parent document</span></dd>
    <script type="text/javascript">moveProgressBar('14.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should store its own properties</span></dd>
    <script type="text/javascript">moveProgressBar('15.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">validators should behave as normal</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_14">Inheritance _all views</dt>
    <script type="text/javascript">moveProgressBar('15.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be rewritten</span></dd>
    <script type="text/javascript">moveProgressBar('16.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should function with inheritance trees</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_15">Inheritance _by views</dt>
    <script type="text/javascript">moveProgressBar('16.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be rewritten for ancestors and generated for descendants</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_16">Inheritance derived properties</dt>
    <script type="text/javascript">moveProgressBar('17.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be stored</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_17">Inheritance references</dt>
    <script type="text/javascript">moveProgressBar('17.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should function as normal</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_18">RelaxDB::Document</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_19">RelaxDB::Document.new</dt>
    <script type="text/javascript">moveProgressBar('18.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create an object with an id</span></dd>
    <script type="text/javascript">moveProgressBar('18.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create an object with a nil revision</span></dd>
    <script type="text/javascript">moveProgressBar('18.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should convert attributes that end in _at to Times</span></dd>
    <script type="text/javascript">moveProgressBar('19.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">will silently ignore parameters that don't specify class attributes</span></dd>
    <script type="text/javascript">moveProgressBar('19.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create a document with a non conflicing state</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_20">RelaxDB::Document#initialize</dt>
    <script type="text/javascript">moveProgressBar('20.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be overridden by inheriting classes</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_21">RelaxDB::Document#to_json</dt>
    <script type="text/javascript">moveProgressBar('20.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not output nil attributes</span></dd>
    <script type="text/javascript">moveProgressBar('21.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should convert times to '%Y/%m/%d %H:%M:%S +0000' format</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_22">RelaxDB::Document#save</dt>
    <script type="text/javascript">moveProgressBar('21.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should set an object's revision</span></dd>
    <script type="text/javascript">moveProgressBar('22.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should result in an object considered saved</span></dd>
    <script type="text/javascript">moveProgressBar('22.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be invokable multiple times</span></dd>
    <script type="text/javascript">moveProgressBar('23.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should set created_at when first saved</span></dd>
    <script type="text/javascript">moveProgressBar('23.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should set created_at when first saved unless supplied to the constructor</span></dd>
    <script type="text/javascript">moveProgressBar('24.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should set document conflict state on conflicting save</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_23">RelaxDB::Document#save!</dt>
    <script type="text/javascript">moveProgressBar('24.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should save objects</span></dd>
    <script type="text/javascript">moveProgressBar('25.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should raise ValidationFailure on validation failure</span></dd>
    <script type="text/javascript">moveProgressBar('25.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should raise UpdateConflict on an update conflict</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_24">RelaxDB::Document user defined property reader</dt>
    <script type="text/javascript">moveProgressBar('25.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not effect normal operation</span></dd>
    <script type="text/javascript">moveProgressBar('26.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not modify internal state</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_25">RelaxDB::Document user defined property writer</dt>
    <script type="text/javascript">moveProgressBar('26.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not be used</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_26">RelaxDB::Document loaded objects</dt>
    <script type="text/javascript">moveProgressBar('27.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should contain state as when saved</span></dd>
    <script type="text/javascript">moveProgressBar('27.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be saveable</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_27">RelaxDB::Document#destroy</dt>
    <script type="text/javascript">moveProgressBar('28.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should delete the corresponding document from CouchDB</span></dd>
    <script type="text/javascript">makeRed('rspec-header');</script>
    <script type="text/javascript">makeRed('example_group_27');</script>
    <script type="text/javascript">moveProgressBar('28.7');</script>
    <dd class="spec failed">
      <span class="failed_spec_name">should prevent the object from being resaved</span>
      <div class="failure" id="failure_1">
        <div class="message"><pre>expected Exception but nothing was raised</pre></div>
        <div class="backtrace"><pre>./spec/document_spec.rb:189:</pre></div>
    <pre class="ruby"><code><span class="linenum">187</span> <span class="ident">p</span> <span class="punct">=</span> <span class="constant">Atom</span><span class="punct">.</span><span class="ident">new</span><span class="punct">.</span><span class="ident">save</span><span class="punct">.</span><span class="ident">destroy!</span>
<span class="linenum">188</span> <span class="comment"># Exepcted failure - see http://issues.apache.org/jira/browse/COUCHDB-292 </span>
<span class="offending"><span class="linenum">189</span> <span class="ident">lambda</span> <span class="punct">{</span> <span class="ident">p</span><span class="punct">.</span><span class="ident">save!</span> <span class="punct">}.</span><span class="ident">should</span> <span class="ident">raise_error</span></span>
<span class="linenum">190</span> <span class="keyword">end</span>
<span class="linenum">191</span> </code></pre>
      </div>
    </dd>
    <script type="text/javascript">moveProgressBar('29.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">will result in undefined behaviour when invoked on unsaved objects</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_28">RelaxDB::Document#all.destroy!</dt>
    <script type="text/javascript">moveProgressBar('29.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should delete from CouchDB all documents of the corresponding class</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_29">RelaxDB::Document ==</dt>
    <script type="text/javascript">moveProgressBar('30.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should define equality based on CouchDB id</span></dd>
    <script type="text/javascript">moveProgressBar('30.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return false when passed a nil object</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_30">RelaxDB::Document.all</dt>
    <script type="text/javascript">moveProgressBar('31.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return all instances of that class</span></dd>
    <script type="text/javascript">moveProgressBar('31.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return an empty array when no instances exist</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_31">RelaxDB::Document.all.size</dt>
    <script type="text/javascript">moveProgressBar('31.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return the total number of docs in a single query</span></dd>
    <script type="text/javascript">moveProgressBar('32.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return 0 when no docs exist</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_32">RelaxDB::Document by_</dt>
    <script type="text/javascript">moveProgressBar('32.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should sort ascending by default</span></dd>
    <script type="text/javascript">moveProgressBar('33.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should sort desc when specified</span></dd>
    <script type="text/javascript">moveProgressBar('33.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should sort date attributes lexicographically</span></dd>
    <script type="text/javascript">moveProgressBar('34.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return the count when queried with reduce=true</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_33">RelaxDB::Document by_ results</dt>
    <script type="text/javascript">moveProgressBar('34.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be an empty array when no docs match</span></dd>
    <script type="text/javascript">moveProgressBar('35.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be retrievable by exact criteria</span></dd>
    <script type="text/javascript">moveProgressBar('35.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be retrievable by relative criteria</span></dd>
    <script type="text/javascript">moveProgressBar('36.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be retrievable by combined criteria</span></dd>
    <script type="text/javascript">moveProgressBar('36.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be retrievable by combined criteria where not all docs contain all attributes</span></dd>
    <script type="text/javascript">moveProgressBar('37.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be retrievable by a multi key post</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_34">RelaxDB::Document defaults</dt>
    <script type="text/javascript">moveProgressBar('37.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be set on initialisation</span></dd>
    <script type="text/javascript">moveProgressBar('37.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be saved</span></dd>
    <script type="text/javascript">moveProgressBar('38.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be ignored once overwritten</span></dd>
    <script type="text/javascript">moveProgressBar('38.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a simple value</span></dd>
    <script type="text/javascript">moveProgressBar('39.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a proc</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_35">RelaxDB::Document validator</dt>
    <script type="text/javascript">moveProgressBar('39.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should prevent an object from being saved if it evaluates to false</span></dd>
    <script type="text/javascript">moveProgressBar('40.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should prevent an object from being saved if it throws an exception</span></dd>
    <script type="text/javascript">moveProgressBar('40.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should pass the property value to the validator</span></dd>
    <script type="text/javascript">moveProgressBar('41.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should pass the property value and object to the validator</span></dd>
    <script type="text/javascript">moveProgressBar('41.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should perform all validations</span></dd>
    <script type="text/javascript">moveProgressBar('42.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should prevent saving unless all validations pass</span></dd>
    <script type="text/javascript">moveProgressBar('42.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should add a default error message if none is specified</span></dd>
    <script type="text/javascript">moveProgressBar('43.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a proc</span></dd>
    <script type="text/javascript">moveProgressBar('43.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a method</span></dd>
    <script type="text/javascript">moveProgressBar('43.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be skipped by passing the property symbol to save</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_36">RelaxDB::Document validation message</dt>
    <script type="text/javascript">moveProgressBar('44.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be set on failure</span></dd>
    <script type="text/javascript">moveProgressBar('44.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a proc accepting the prop only</span></dd>
    <script type="text/javascript">moveProgressBar('45.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">may be a proc accepting the prop and object</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_37">RelaxDB::Document predefined validator</dt>
    <script type="text/javascript">moveProgressBar('45.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be invoked when a symbol clash exists</span></dd>
    <script type="text/javascript">moveProgressBar('46.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should prevent an object from being saved if validation fails</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_38">RelaxDB::HasManyProxy</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_39">RelaxDB::HasManyProxy has_many</dt>
    <script type="text/javascript">moveProgressBar('46.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be considered enumerable</span></dd>
    <script type="text/javascript">moveProgressBar('47.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should actually be enumerable</span></dd>
    <script type="text/javascript">moveProgressBar('47.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should preserve the collection across the load / save boundary</span></dd>
    <script type="text/javascript">moveProgressBar('48.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should work with MultiWordClassNames</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_40">RelaxDB::HasManyProxy has_many#&lt;&lt;</dt>
    <script type="text/javascript">moveProgressBar('48.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should link the added item to the parent</span></dd>
    <script type="text/javascript">moveProgressBar('49.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return self</span></dd>
    <script type="text/javascript">moveProgressBar('49.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not created duplicates when invoked with same object more than once</span></dd>
    <script type="text/javascript">moveProgressBar('50.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return false when the child fails validation</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_41">RelaxDB::HasManyProxy has_many#=</dt>
    <script type="text/javascript">moveProgressBar('50.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not attempt to save the child objects when the relationship is established</span></dd>
    <script type="text/javascript">moveProgressBar('50.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should preserve given relationships across save/load boundary</span></dd>
    <script type="text/javascript">moveProgressBar('51.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should invoke the derived properties writer</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_42">RelaxDB::HasManyProxy has_many#delete</dt>
    <script type="text/javascript">moveProgressBar('51.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should nullify the belongs_to relationship</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_43">RelaxDB::HasManyProxy has_many#clear</dt>
    <script type="text/javascript">moveProgressBar('52.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should result in an empty collection</span></dd>
    <script type="text/javascript">moveProgressBar('52.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should nullify all child relationships</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_44">RelaxDB::HasManyProxy has_many owner</dt>
    <script type="text/javascript">moveProgressBar('53.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be able to form multiple relationships with the same class of child</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_45">RelaxDB::HasManyProxy has_many owner#destroy</dt>
    <script type="text/javascript">moveProgressBar('53.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should nullify its child relationships</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_46">RelaxDB::HasOneProxy</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_47">RelaxDB::HasOneProxy has_one</dt>
    <script type="text/javascript">moveProgressBar('54.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return nil when accessed before assignment</span></dd>
    <script type="text/javascript">moveProgressBar('54.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be establishable via a constructor attribute</span></dd>
    <script type="text/javascript">moveProgressBar('55.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be establishable via assignment</span></dd>
    <script type="text/javascript">moveProgressBar('55.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return the same object on repeated invocations</span></dd>
    <script type="text/javascript">moveProgressBar('56.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be preserved across load / save boundary</span></dd>
    <script type="text/javascript">moveProgressBar('56.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be able reference itself via its child</span></dd>
    <script type="text/javascript">moveProgressBar('56.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should work with MultiWordClassNames</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_48">RelaxDB::HasOneProxy has_one#=</dt>
    <script type="text/javascript">moveProgressBar('57.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create a reference from the child to the parent</span></dd>
    <script type="text/javascript">moveProgressBar('57.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should save the assigned object</span></dd>
    <script type="text/javascript">moveProgressBar('58.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">will not save the parent</span></dd>
    <script type="text/javascript">moveProgressBar('58.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should set the target to nil when nil is assigned</span></dd>
    <script type="text/javascript">moveProgressBar('59.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should nullify any existing relationship in the database</span></dd>
    <script type="text/javascript">moveProgressBar('59.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should nullify any existing relationship on a known in-memory object</span></dd>
    <script type="text/javascript">moveProgressBar('60.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">will not nullify any existing relationship on unknown in-memory objects</span></dd>
    <script type="text/javascript">moveProgressBar('60.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">will not throw an error when the rhs fails validation</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_49">RelaxDB::PaginateParams</dt>
    <script type="text/javascript">moveProgressBar('61.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be invalid if hasn't been initialized with both a startkey and endkey</span></dd>
    <script type="text/javascript">moveProgressBar('61.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be valid if initialized with both a startkey and endkey</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_50">RelaxDB Pagination</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_51">RelaxDB Pagination functional tests</dt>
    <script type="text/javascript">moveProgressBar('62.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should navigate through a series</span></dd>
    <script type="text/javascript">moveProgressBar('62.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should navigate through b series with descending false</span></dd>
    <script type="text/javascript">moveProgressBar('62.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should navigate through b series with descending true</span></dd>
    <script type="text/javascript">moveProgressBar('63.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not display pagination options for c series</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_52">RelaxDB Pagination next_query</dt>
    <script type="text/javascript">moveProgressBar('63.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should emit a url encoded and json encoded string with query name page_params</span></dd>
    <script type="text/javascript">moveProgressBar('64.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be treated as next_param by the paginator</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_53">RelaxDB Pagination prev_query</dt>
    <script type="text/javascript">moveProgressBar('64.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be treated as prev_query by the paginator</span></dd>
    <script type="text/javascript">moveProgressBar('65.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should emit a url encoded and json encoded string with query name page_params</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_54">RelaxDB Pagination multiple keys per document, simple (non array) keys</dt>
    <script type="text/javascript">moveProgressBar('65.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should work when descending is false</span></dd>
    <script type="text/javascript">moveProgressBar('66.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should work when descending is true</span></dd>
    <script type="text/javascript">moveProgressBar('66.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not get stuck when the number of keys exceeds the limit</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_55">RelaxDB Pagination.paginate_by</dt>
    <script type="text/javascript">moveProgressBar('67.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should throw an error unless both startkey and endkey are specified</span></dd>
    <script type="text/javascript">moveProgressBar('67.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return an empty array when no documents exist</span></dd>
    <script type="text/javascript">moveProgressBar('68.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return an array that responds negatively to next_query and prev_query when no documents exist</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_56">RelaxDB Pagination.paginate_view functional tests</dt>
    <script type="text/javascript">moveProgressBar('68.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should pass</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_57">RelaxDB::Query</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_58">RelaxDB::Query#view_name</dt>
    <script type="text/javascript">moveProgressBar('68.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should match a single key attribute</span></dd>
    <script type="text/javascript">moveProgressBar('69.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should match key attributes</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_59">RelaxDB::Query#view_path</dt>
    <script type="text/javascript">moveProgressBar('69.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should list design document and view name and default reduce to false</span></dd>
    <script type="text/javascript">moveProgressBar('70.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should contain URL and JSON encoded key when the key has been set</span></dd>
    <script type="text/javascript">moveProgressBar('70.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should honour startkey, endkey and limit</span></dd>
    <script type="text/javascript">moveProgressBar('71.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should specify a null key if key was set to nil</span></dd>
    <script type="text/javascript">moveProgressBar('71.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should specify a null startkey if startkey was set to nil</span></dd>
    <script type="text/javascript">moveProgressBar('72.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should specify a null endkey if endkey was set to nil</span></dd>
    <script type="text/javascript">moveProgressBar('72.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not JSON encode the startkey_docid</span></dd>
    <script type="text/javascript">moveProgressBar('73.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not JSON encode the endkey_docid</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_60">RelaxDB::Query#keys</dt>
    <script type="text/javascript">moveProgressBar('73.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return a JSON encoded hash</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_61">RelaxDB::ReferencesManyProxy</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_62">RelaxDB::ReferencesManyProxy references_many</dt>
    <script type="text/javascript">moveProgressBar('74.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should preserve the relationships across the save / load boundary</span></dd>
    <script type="text/javascript">moveProgressBar('74.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should issue only a single request to resolve the relationship</span></dd>
    <script type="text/javascript">moveProgressBar('75.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not resolve the relationship when an object is instantiated</span></dd>
    <script type="text/javascript">moveProgressBar('75.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should make the ids available as a property</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_63">RelaxDB::ReferencesManyProxy references_many#=</dt>
    <script type="text/javascript">moveProgressBar('75.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not be invoked</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_64">RelaxDB::ReferencesManyProxy references_many#&lt;&lt;</dt>
    <script type="text/javascript">moveProgressBar('76.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should set the relationship on both sides</span></dd>
    <script type="text/javascript">moveProgressBar('76.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not create duplicates when the same object is added more than once</span></dd>
    <script type="text/javascript">moveProgressBar('77.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not create duplicates when reciprocal objects are added from opposite sides</span></dd>
    <script type="text/javascript">moveProgressBar('77.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">will resolve the reciprocal relationship</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_65">RelaxDB::ReferencesManyProxy references_many#delete</dt>
    <script type="text/javascript">moveProgressBar('78.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should nullify relationship on both sides</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_66">RelaxDB::ReferencesManyProxy references_many owner#destroy</dt>
    <script type="text/javascript">moveProgressBar('78.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should remove its membership from its peers in memory</span></dd>
    <script type="text/javascript">moveProgressBar('79.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should remove its membership from its peers in CouchDB</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_67">RelaxDB</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_68">RelaxDB.create_object</dt>
    <script type="text/javascript">moveProgressBar('79.6');</script>
    <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>
    <script type="text/javascript">moveProgressBar('80.0');</script>
    <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>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_69">RelaxDB.bulk_save</dt>
    <script type="text/javascript">moveProgressBar('80.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be invokable multiple times</span></dd>
    <script type="text/javascript">moveProgressBar('81.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return the objects it was passed</span></dd>
    <script type="text/javascript">moveProgressBar('81.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should succeed when passed no args</span></dd>
    <script type="text/javascript">moveProgressBar('81.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return false on failure</span></dd>
    <script type="text/javascript">moveProgressBar('82.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not attempt to save if a pre-save stage fails</span></dd>
    <script type="text/javascript">moveProgressBar('82.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should invoke the after-save stage after a successful save</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_70">RelaxDB.bulk_save!</dt>
    <script type="text/javascript">moveProgressBar('83.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should raise an exception if a obj fails validation</span></dd>
    <script type="text/javascript">moveProgressBar('83.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">will not raise an exception if a document update conflict occurs on save</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_71">RelaxDB.replicate_db</dt>
    <script type="text/javascript">moveProgressBar('84.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should replicate the named database</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_72">RelaxDB.load</dt>
    <script type="text/javascript">moveProgressBar('84.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should load a single document</span></dd>
    <script type="text/javascript">moveProgressBar('85.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should load an arbitrary number of documents</span></dd>
    <script type="text/javascript">moveProgressBar('85.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return nil when given a id for a non existant doc</span></dd>
    <script type="text/javascript">moveProgressBar('86.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return an array with correctly placed nils when given a list containing non existant doc ids</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_73">RelaxDB.load!</dt>
    <script type="text/javascript">moveProgressBar('86.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should load a single document</span></dd>
    <script type="text/javascript">moveProgressBar('87.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should load multiple documents</span></dd>
    <script type="text/javascript">moveProgressBar('87.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should throw an exception if given a single id for a non-existant doc</span></dd>
    <script type="text/javascript">moveProgressBar('87.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should throw an exception if any of a list of doc ids is for a non-existant doc</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_74">RelaxDB.view</dt>
    <script type="text/javascript">moveProgressBar('88.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should request a view and return an array</span></dd>
    <script type="text/javascript">moveProgressBar('88.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">may accept query params</span></dd>
    <script type="text/javascript">moveProgressBar('89.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should be queryable with a multi key post</span></dd>
    <script type="text/javascript">moveProgressBar('89.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return nil for a reduce view with no results</span></dd>
    <script type="text/javascript">moveProgressBar('90.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return a single value for a reduce view with a single result</span></dd>
    <script type="text/javascript">moveProgressBar('90.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return an array for a reduce view with multiple results</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_75">RelaxDB.merge</dt>
    <script type="text/javascript">moveProgressBar('91.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should merge rows sharing a common merge key into a single ViewObject</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_76">RelaxDB create_views disabled</dt>
    <script type="text/javascript">moveProgressBar('91.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should not create any views</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_77">RelaxDB create_views enabled</dt>
    <script type="text/javascript">moveProgressBar('92.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create all views</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_78">RelaxDB</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_79">RelaxDB GET</dt>
    <script type="text/javascript">moveProgressBar('92.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should raise a HTTP_404 for a non existant doc</span></dd>
    <script type="text/javascript">moveProgressBar('93.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should raise a RuntimeError for non specific errors</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_80">view_by</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_81">view_by view_by</dt>
    <script type="text/javascript">moveProgressBar('93.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create corresponding views</span></dd>
    <script type="text/javascript">moveProgressBar('93.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create a by_ att list method</span></dd>
    <script type="text/javascript">moveProgressBar('94.4');</script>
    <dd class="spec passed"><span class="passed_spec_name">should create a paginate_by_ att list method</span></dd>
    <script type="text/javascript">moveProgressBar('94.9');</script>
    <dd class="spec passed"><span class="passed_spec_name">should apply query defaults to by_</span></dd>
    <script type="text/javascript">moveProgressBar('95.3');</script>
    <dd class="spec passed"><span class="passed_spec_name">should allow a single arg to be passed to by_</span></dd>
    <script type="text/javascript">moveProgressBar('95.8');</script>
    <dd class="spec passed"><span class="passed_spec_name">should apply query defaults to paginate_by_</span></dd>
    <script type="text/javascript">moveProgressBar('96.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should allow query defaults to be overridden for paginate_by_</span></dd>
    <script type="text/javascript">moveProgressBar('96.7');</script>
    <dd class="spec passed"><span class="passed_spec_name">should allow query defaults to be overridden for by_</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_82">RelaxDB::ViewObject</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_83">RelaxDB::ViewObject.new</dt>
    <script type="text/javascript">moveProgressBar('97.2');</script>
    <dd class="spec passed"><span class="passed_spec_name">should provide readers for the object passed in the hash</span></dd>
    <script type="text/javascript">moveProgressBar('97.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should try to convert objects ending in _at to a time</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_84">RelaxDB::ViewObject.create</dt>
    <script type="text/javascript">moveProgressBar('98.1');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return an array of view objects when passed an array</span></dd>
    <script type="text/javascript">moveProgressBar('98.6');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return a view object when passed a hash</span></dd>
    <script type="text/javascript">moveProgressBar('99.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return a simple value when passed a primitive</span></dd>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_85">RelaxDB::View</dt>
  </dl>
</div>
<div class="example_group">
  <dl>
  <dt id="example_group_86">RelaxDB::View exists</dt>
    <script type="text/javascript">moveProgressBar('99.5');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return nil if a view doesnt exist</span></dd>
    <script type="text/javascript">moveProgressBar('100.0');</script>
    <dd class="spec passed"><span class="passed_spec_name">should return the view if it exits</span></dd>
  </dl>
</div>
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>32.605052 seconds</strong>";</script>
<script type="text/javascript">document.getElementById('totals').innerHTML = "216 examples, 1 failure";</script>
</div>
</div>
</body>
</html>