paulcarey-relaxdb 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -184,420 +184,875 @@ a {
184
184
  <div class="example_group">
185
185
  <dl>
186
186
  <dt id="example_group_2">RelaxDB::BelongsToProxy belongs_to</dt>
187
- <script type="text/javascript">moveProgressBar('1.0');</script>
187
+ <script type="text/javascript">moveProgressBar('0.4');</script>
188
188
  <dd class="spec passed"><span class="passed_spec_name">should return nil when accessed before assignment</span></dd>
189
- <script type="text/javascript">moveProgressBar('2.0');</script>
189
+ <script type="text/javascript">moveProgressBar('0.9');</script>
190
190
  <dd class="spec passed"><span class="passed_spec_name">should be establishable via constructor attribute</span></dd>
191
- <script type="text/javascript">moveProgressBar('3.0');</script>
191
+ <script type="text/javascript">moveProgressBar('1.3');</script>
192
192
  <dd class="spec passed"><span class="passed_spec_name">should be establishable via constructor id</span></dd>
193
- <script type="text/javascript">moveProgressBar('4.0');</script>
193
+ <script type="text/javascript">moveProgressBar('1.8');</script>
194
194
  <dd class="spec passed"><span class="passed_spec_name">should establish the parent relationship when supplied a parent and saved</span></dd>
195
- <script type="text/javascript">moveProgressBar('5.0');</script>
195
+ <script type="text/javascript">moveProgressBar('2.3');</script>
196
196
  <dd class="spec passed"><span class="passed_spec_name">should establish the parent relationship when supplied a parent id and saved</span></dd>
197
- <script type="text/javascript">moveProgressBar('6.0');</script>
197
+ <script type="text/javascript">moveProgressBar('2.7');</script>
198
198
  <dd class="spec passed"><span class="passed_spec_name">should return the same object on repeated invocations</span></dd>
199
- <script type="text/javascript">moveProgressBar('7.0');</script>
199
+ <script type="text/javascript">moveProgressBar('3.2');</script>
200
200
  <dd class="spec passed"><span class="passed_spec_name">should be nullified when the parent is destroyed</span></dd>
201
- <script type="text/javascript">moveProgressBar('8.0');</script>
201
+ <script type="text/javascript">moveProgressBar('3.7');</script>
202
202
  <dd class="spec passed"><span class="passed_spec_name">should be preserved across save / load boundary</span></dd>
203
- <script type="text/javascript">moveProgressBar('9.0');</script>
203
+ <script type="text/javascript">moveProgressBar('4.1');</script>
204
204
  <dd class="spec passed"><span class="passed_spec_name">should be able to reference itself via its parent</span></dd>
205
+ <script type="text/javascript">moveProgressBar('4.6');</script>
206
+ <dd class="spec passed"><span class="passed_spec_name">may be used reciprocally</span></dd>
207
+ </dl>
208
+ </div>
209
+ <div class="example_group">
210
+ <dl>
211
+ <dt id="example_group_3">RelaxDB::BelongsToProxy belongs_to validator</dt>
212
+ <script type="text/javascript">moveProgressBar('5.0');</script>
213
+ <dd class="spec passed"><span class="passed_spec_name">should be passed the _id and object</span></dd>
214
+ <script type="text/javascript">moveProgressBar('5.5');</script>
215
+ <dd class="spec passed"><span class="passed_spec_name">may be used with a predefined validator</span></dd>
216
+ <script type="text/javascript">moveProgressBar('6.0');</script>
217
+ <dd class="spec passed"><span class="passed_spec_name">should be provided with a default error message when validation fails</span></dd>
218
+ </dl>
219
+ </div>
220
+ <div class="example_group">
221
+ <dl>
222
+ <dt id="example_group_4">RelaxDB::Document callbacks</dt>
223
+ </dl>
224
+ </div>
225
+ <div class="example_group">
226
+ <dl>
227
+ <dt id="example_group_5">RelaxDB::Document callbacks before_save</dt>
228
+ <script type="text/javascript">moveProgressBar('6.4');</script>
229
+ <dd class="spec passed"><span class="passed_spec_name">should be run before the object is saved</span></dd>
230
+ <script type="text/javascript">moveProgressBar('6.9');</script>
231
+ <dd class="spec passed"><span class="passed_spec_name">should prevent the object from being saved if it returns false</span></dd>
232
+ <script type="text/javascript">moveProgressBar('7.4');</script>
233
+ <dd class="spec passed"><span class="passed_spec_name">should add a description to errors when false is returned</span></dd>
234
+ <script type="text/javascript">moveProgressBar('7.8');</script>
235
+ <dd class="spec passed"><span class="passed_spec_name">should not prevent the object from being saved if it returns nil</span></dd>
236
+ <script type="text/javascript">moveProgressBar('8.3');</script>
237
+ <dd class="spec passed"><span class="passed_spec_name">may be a proc</span></dd>
238
+ <script type="text/javascript">moveProgressBar('8.7');</script>
239
+ <dd class="spec passed"><span class="passed_spec_name">may be a method</span></dd>
240
+ </dl>
241
+ </div>
242
+ <div class="example_group">
243
+ <dl>
244
+ <dt id="example_group_6">RelaxDB::Document callbacks after_save</dt>
245
+ <script type="text/javascript">moveProgressBar('9.2');</script>
246
+ <dd class="spec passed"><span class="passed_spec_name">should be run after the object is saved</span></dd>
205
247
  </dl>
206
248
  </div>
207
249
  <div class="example_group">
208
250
  <dl>
209
- <dt id="example_group_3">RelaxDB::DesignDocument</dt>
251
+ <dt id="example_group_7">RelaxDB::Document derived properties</dt>
252
+ <script type="text/javascript">moveProgressBar('9.7');</script>
253
+ <dd class="spec passed"><span class="passed_spec_name">should have its value updated when the source is updated</span></dd>
254
+ <script type="text/javascript">moveProgressBar('10.1');</script>
255
+ <dd class="spec passed"><span class="passed_spec_name">should have its value persisted</span></dd>
256
+ <script type="text/javascript">moveProgressBar('10.6');</script>
257
+ <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>
258
+ <script type="text/javascript">moveProgressBar('11.1');</script>
259
+ <dd class="spec passed"><span class="passed_spec_name">will not raise an exception when the source is nil</span></dd>
260
+ <script type="text/javascript">moveProgressBar('11.5');</script>
261
+ <dd class="spec passed"><span class="passed_spec_name">should only be updated for registered properties</span></dd>
262
+ <script type="text/javascript">moveProgressBar('12.0');</script>
263
+ <dd class="spec passed"><span class="passed_spec_name">should have the existing value passed to the first lambda param</span></dd>
264
+ <script type="text/javascript">moveProgressBar('12.5');</script>
265
+ <dd class="spec passed"><span class="passed_spec_name">should contintue to be derived post load</span></dd>
210
266
  </dl>
211
267
  </div>
212
268
  <div class="example_group">
213
269
  <dl>
214
- <dt id="example_group_4">RelaxDB::DesignDocument#save</dt>
215
- <script type="text/javascript">moveProgressBar('10.0');</script>
270
+ <dt id="example_group_8">RelaxDB::Document derived properties multiple properties</dt>
271
+ <script type="text/javascript">moveProgressBar('12.9');</script>
272
+ <dd class="spec passed"><span class="passed_spec_name">should be derivable from the same source</span></dd>
273
+ </dl>
274
+ </div>
275
+ <div class="example_group">
276
+ <dl>
277
+ <dt id="example_group_9">RelaxDB::DesignDocument</dt>
278
+ </dl>
279
+ </div>
280
+ <div class="example_group">
281
+ <dl>
282
+ <dt id="example_group_10">RelaxDB::DesignDocument#save</dt>
283
+ <script type="text/javascript">moveProgressBar('13.4');</script>
216
284
  <dd class="spec passed"><span class="passed_spec_name">should create a corresponding document in CouchDB</span></dd>
217
285
  </dl>
218
286
  </div>
219
287
  <div class="example_group">
220
288
  <dl>
221
- <dt id="example_group_5">RelaxDB::DesignDocument#destroy</dt>
222
- <script type="text/javascript">moveProgressBar('11.0');</script>
289
+ <dt id="example_group_11">RelaxDB::DesignDocument#destroy</dt>
290
+ <script type="text/javascript">moveProgressBar('13.8');</script>
223
291
  <dd class="spec passed"><span class="passed_spec_name">should delete the corresponding document from CouchDB</span></dd>
224
292
  </dl>
225
293
  </div>
226
294
  <div class="example_group">
227
295
  <dl>
228
- <dt id="example_group_6">RelaxDB::Document</dt>
296
+ <dt id="example_group_12">Inheritance</dt>
229
297
  </dl>
230
298
  </div>
231
299
  <div class="example_group">
232
300
  <dl>
233
- <dt id="example_group_7">RelaxDB::Document.new</dt>
234
- <script type="text/javascript">moveProgressBar('12.0');</script>
301
+ <dt id="example_group_13">Inheritance properties</dt>
302
+ <script type="text/javascript">moveProgressBar('14.3');</script>
303
+ <dd class="spec passed"><span class="passed_spec_name">should by inherited from a parent document</span></dd>
304
+ <script type="text/javascript">moveProgressBar('14.8');</script>
305
+ <dd class="spec passed"><span class="passed_spec_name">should store its own properties</span></dd>
306
+ <script type="text/javascript">moveProgressBar('15.2');</script>
307
+ <dd class="spec passed"><span class="passed_spec_name">validators should behave as normal</span></dd>
308
+ </dl>
309
+ </div>
310
+ <div class="example_group">
311
+ <dl>
312
+ <dt id="example_group_14">Inheritance _all views</dt>
313
+ <script type="text/javascript">moveProgressBar('15.7');</script>
314
+ <dd class="spec passed"><span class="passed_spec_name">should be rewritten</span></dd>
315
+ <script type="text/javascript">moveProgressBar('16.2');</script>
316
+ <dd class="spec passed"><span class="passed_spec_name">should function with inheritance trees</span></dd>
317
+ </dl>
318
+ </div>
319
+ <div class="example_group">
320
+ <dl>
321
+ <dt id="example_group_15">Inheritance _by views</dt>
322
+ <script type="text/javascript">moveProgressBar('16.6');</script>
323
+ <dd class="spec passed"><span class="passed_spec_name">should be rewritten for ancestors and generated for descendants</span></dd>
324
+ </dl>
325
+ </div>
326
+ <div class="example_group">
327
+ <dl>
328
+ <dt id="example_group_16">Inheritance derived properties</dt>
329
+ <script type="text/javascript">moveProgressBar('17.1');</script>
330
+ <dd class="spec passed"><span class="passed_spec_name">should be stored</span></dd>
331
+ </dl>
332
+ </div>
333
+ <div class="example_group">
334
+ <dl>
335
+ <dt id="example_group_17">Inheritance references</dt>
336
+ <script type="text/javascript">moveProgressBar('17.5');</script>
337
+ <dd class="spec passed"><span class="passed_spec_name">should function as normal</span></dd>
338
+ </dl>
339
+ </div>
340
+ <div class="example_group">
341
+ <dl>
342
+ <dt id="example_group_18">RelaxDB::Document</dt>
343
+ </dl>
344
+ </div>
345
+ <div class="example_group">
346
+ <dl>
347
+ <dt id="example_group_19">RelaxDB::Document.new</dt>
348
+ <script type="text/javascript">moveProgressBar('18.0');</script>
235
349
  <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.0');</script>
350
+ <script type="text/javascript">moveProgressBar('18.5');</script>
237
351
  <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.0');</script>
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.0');</script>
352
+ <script type="text/javascript">moveProgressBar('18.9');</script>
353
+ <dd class="spec passed"><span class="passed_spec_name">should convert attributes that end in _at to Times</span></dd>
354
+ <script type="text/javascript">moveProgressBar('19.4');</script>
241
355
  <dd class="spec passed"><span class="passed_spec_name">will silently ignore parameters that don't specify class attributes</span></dd>
356
+ <script type="text/javascript">moveProgressBar('19.9');</script>
357
+ <dd class="spec passed"><span class="passed_spec_name">should create a document with a non conflicing state</span></dd>
242
358
  </dl>
243
359
  </div>
244
360
  <div class="example_group">
245
361
  <dl>
246
- <dt id="example_group_8">RelaxDB::Document#to_json</dt>
247
- <script type="text/javascript">moveProgressBar('16.0');</script>
362
+ <dt id="example_group_20">RelaxDB::Document#initialize</dt>
363
+ <script type="text/javascript">moveProgressBar('20.3');</script>
364
+ <dd class="spec passed"><span class="passed_spec_name">may be overridden by inheriting classes</span></dd>
365
+ </dl>
366
+ </div>
367
+ <div class="example_group">
368
+ <dl>
369
+ <dt id="example_group_21">RelaxDB::Document#to_json</dt>
370
+ <script type="text/javascript">moveProgressBar('20.8');</script>
248
371
  <dd class="spec passed"><span class="passed_spec_name">should not output nil attributes</span></dd>
372
+ <script type="text/javascript">moveProgressBar('21.2');</script>
373
+ <dd class="spec passed"><span class="passed_spec_name">should convert times to '%Y/%m/%d %H:%M:%S +0000' format</span></dd>
249
374
  </dl>
250
375
  </div>
251
376
  <div class="example_group">
252
377
  <dl>
253
- <dt id="example_group_9">RelaxDB::Document#save</dt>
254
- <script type="text/javascript">moveProgressBar('17.0');</script>
378
+ <dt id="example_group_22">RelaxDB::Document#save</dt>
379
+ <script type="text/javascript">moveProgressBar('21.7');</script>
255
380
  <dd class="spec passed"><span class="passed_spec_name">should set an object's revision</span></dd>
256
- <script type="text/javascript">moveProgressBar('18.0');</script>
381
+ <script type="text/javascript">moveProgressBar('22.2');</script>
257
382
  <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.0');</script>
383
+ <script type="text/javascript">moveProgressBar('22.6');</script>
259
384
  <dd class="spec passed"><span class="passed_spec_name">should be invokable multiple times</span></dd>
260
- <script type="text/javascript">moveProgressBar('20.0');</script>
385
+ <script type="text/javascript">moveProgressBar('23.1');</script>
261
386
  <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.0');</script>
387
+ <script type="text/javascript">moveProgressBar('23.6');</script>
263
388
  <dd class="spec passed"><span class="passed_spec_name">should set created_at when first saved unless supplied to the constructor</span></dd>
389
+ <script type="text/javascript">moveProgressBar('24.0');</script>
390
+ <dd class="spec passed"><span class="passed_spec_name">should set document conflict state on conflicting save</span></dd>
264
391
  </dl>
265
392
  </div>
266
393
  <div class="example_group">
267
394
  <dl>
268
- <dt id="example_group_10">RelaxDB::Document loaded objects</dt>
269
- <script type="text/javascript">moveProgressBar('22.0');</script>
395
+ <dt id="example_group_23">RelaxDB::Document#save!</dt>
396
+ <script type="text/javascript">moveProgressBar('24.5');</script>
397
+ <dd class="spec passed"><span class="passed_spec_name">should save objects</span></dd>
398
+ <script type="text/javascript">moveProgressBar('25.0');</script>
399
+ <dd class="spec passed"><span class="passed_spec_name">should raise ValidationFailure on validation failure</span></dd>
400
+ <script type="text/javascript">moveProgressBar('25.4');</script>
401
+ <dd class="spec passed"><span class="passed_spec_name">should raise UpdateConflict on an update conflict</span></dd>
402
+ </dl>
403
+ </div>
404
+ <div class="example_group">
405
+ <dl>
406
+ <dt id="example_group_24">RelaxDB::Document user defined property reader</dt>
407
+ <script type="text/javascript">moveProgressBar('25.9');</script>
408
+ <dd class="spec passed"><span class="passed_spec_name">should not effect normal operation</span></dd>
409
+ <script type="text/javascript">moveProgressBar('26.3');</script>
410
+ <dd class="spec passed"><span class="passed_spec_name">should not modify internal state</span></dd>
411
+ </dl>
412
+ </div>
413
+ <div class="example_group">
414
+ <dl>
415
+ <dt id="example_group_25">RelaxDB::Document user defined property writer</dt>
416
+ <script type="text/javascript">moveProgressBar('26.8');</script>
417
+ <dd class="spec passed"><span class="passed_spec_name">should not be used</span></dd>
418
+ </dl>
419
+ </div>
420
+ <div class="example_group">
421
+ <dl>
422
+ <dt id="example_group_26">RelaxDB::Document loaded objects</dt>
423
+ <script type="text/javascript">moveProgressBar('27.3');</script>
270
424
  <dd class="spec passed"><span class="passed_spec_name">should contain state as when saved</span></dd>
271
- <script type="text/javascript">moveProgressBar('23.0');</script>
425
+ <script type="text/javascript">moveProgressBar('27.7');</script>
272
426
  <dd class="spec passed"><span class="passed_spec_name">should be saveable</span></dd>
273
427
  </dl>
274
428
  </div>
275
429
  <div class="example_group">
276
430
  <dl>
277
- <dt id="example_group_11">RelaxDB::Document#destroy</dt>
278
- <script type="text/javascript">moveProgressBar('24.0');</script>
431
+ <dt id="example_group_27">RelaxDB::Document#destroy</dt>
432
+ <script type="text/javascript">moveProgressBar('28.2');</script>
279
433
  <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.0');</script>
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.0');</script>
434
+ <script type="text/javascript">makeRed('rspec-header');</script>
435
+ <script type="text/javascript">makeRed('example_group_27');</script>
436
+ <script type="text/javascript">moveProgressBar('28.7');</script>
437
+ <dd class="spec failed">
438
+ <span class="failed_spec_name">should prevent the object from being resaved</span>
439
+ <div class="failure" id="failure_1">
440
+ <div class="message"><pre>expected Exception but nothing was raised</pre></div>
441
+ <div class="backtrace"><pre>./spec/document_spec.rb:189:</pre></div>
442
+ <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>
443
+ <span class="linenum">188</span> <span class="comment"># Exepcted failure - see http://issues.apache.org/jira/browse/COUCHDB-292 </span>
444
+ <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>
445
+ <span class="linenum">190</span> <span class="keyword">end</span>
446
+ <span class="linenum">191</span> </code></pre>
447
+ </div>
448
+ </dd>
449
+ <script type="text/javascript">moveProgressBar('29.1');</script>
283
450
  <dd class="spec passed"><span class="passed_spec_name">will result in undefined behaviour when invoked on unsaved objects</span></dd>
284
451
  </dl>
285
452
  </div>
286
453
  <div class="example_group">
287
454
  <dl>
288
- <dt id="example_group_12">RelaxDB::Document#all.destroy!</dt>
289
- <script type="text/javascript">moveProgressBar('27.0');</script>
455
+ <dt id="example_group_28">RelaxDB::Document#all.destroy!</dt>
456
+ <script type="text/javascript">moveProgressBar('29.6');</script>
290
457
  <dd class="spec passed"><span class="passed_spec_name">should delete from CouchDB all documents of the corresponding class</span></dd>
291
458
  </dl>
292
459
  </div>
293
460
  <div class="example_group">
294
461
  <dl>
295
- <dt id="example_group_13">RelaxDB::Document ==</dt>
296
- <script type="text/javascript">moveProgressBar('28.0');</script>
462
+ <dt id="example_group_29">RelaxDB::Document ==</dt>
463
+ <script type="text/javascript">moveProgressBar('30.0');</script>
297
464
  <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.0');</script>
465
+ <script type="text/javascript">moveProgressBar('30.5');</script>
299
466
  <dd class="spec passed"><span class="passed_spec_name">should return false when passed a nil object</span></dd>
300
467
  </dl>
301
468
  </div>
302
469
  <div class="example_group">
303
470
  <dl>
304
- <dt id="example_group_14">RelaxDB::Document#all</dt>
305
- <script type="text/javascript">moveProgressBar('30.0');</script>
306
- <dd class="spec passed"><span class="passed_spec_name">should return all instances of that class</span></dd>
471
+ <dt id="example_group_30">RelaxDB::Document.all</dt>
307
472
  <script type="text/javascript">moveProgressBar('31.0');</script>
473
+ <dd class="spec passed"><span class="passed_spec_name">should return all instances of that class</span></dd>
474
+ <script type="text/javascript">moveProgressBar('31.4');</script>
308
475
  <dd class="spec passed"><span class="passed_spec_name">should return an empty array when no instances exist</span></dd>
309
476
  </dl>
310
477
  </div>
311
478
  <div class="example_group">
312
479
  <dl>
313
- <dt id="example_group_15">RelaxDB::Document#all.sorted_by</dt>
314
- <script type="text/javascript">moveProgressBar('32.0');</script>
480
+ <dt id="example_group_31">RelaxDB::Document.all.size</dt>
481
+ <script type="text/javascript">moveProgressBar('31.9');</script>
482
+ <dd class="spec passed"><span class="passed_spec_name">should return the total number of docs in a single query</span></dd>
483
+ <script type="text/javascript">moveProgressBar('32.4');</script>
484
+ <dd class="spec passed"><span class="passed_spec_name">should return 0 when no docs exist</span></dd>
485
+ </dl>
486
+ </div>
487
+ <div class="example_group">
488
+ <dl>
489
+ <dt id="example_group_32">RelaxDB::Document by_</dt>
490
+ <script type="text/javascript">moveProgressBar('32.8');</script>
315
491
  <dd class="spec passed"><span class="passed_spec_name">should sort ascending by default</span></dd>
316
- <script type="text/javascript">moveProgressBar('33.0');</script>
492
+ <script type="text/javascript">moveProgressBar('33.3');</script>
317
493
  <dd class="spec passed"><span class="passed_spec_name">should sort desc when specified</span></dd>
318
- <script type="text/javascript">moveProgressBar('34.0');</script>
494
+ <script type="text/javascript">moveProgressBar('33.7');</script>
319
495
  <dd class="spec passed"><span class="passed_spec_name">should sort date attributes lexicographically</span></dd>
496
+ <script type="text/javascript">moveProgressBar('34.2');</script>
497
+ <dd class="spec passed"><span class="passed_spec_name">should return the count when queried with reduce=true</span></dd>
320
498
  </dl>
321
499
  </div>
322
500
  <div class="example_group">
323
501
  <dl>
324
- <dt id="example_group_16">RelaxDB::Document#all.sorted_by results</dt>
325
- <script type="text/javascript">moveProgressBar('35.0');</script>
502
+ <dt id="example_group_33">RelaxDB::Document by_ results</dt>
503
+ <script type="text/javascript">moveProgressBar('34.7');</script>
504
+ <dd class="spec passed"><span class="passed_spec_name">should be an empty array when no docs match</span></dd>
505
+ <script type="text/javascript">moveProgressBar('35.1');</script>
326
506
  <dd class="spec passed"><span class="passed_spec_name">should be retrievable by exact criteria</span></dd>
327
- <script type="text/javascript">moveProgressBar('36.0');</script>
507
+ <script type="text/javascript">moveProgressBar('35.6');</script>
328
508
  <dd class="spec passed"><span class="passed_spec_name">should be retrievable by relative criteria</span></dd>
329
- <script type="text/javascript">moveProgressBar('37.0');</script>
509
+ <script type="text/javascript">moveProgressBar('36.1');</script>
330
510
  <dd class="spec passed"><span class="passed_spec_name">should be retrievable by combined criteria</span></dd>
331
- <script type="text/javascript">moveProgressBar('38.0');</script>
511
+ <script type="text/javascript">moveProgressBar('36.5');</script>
332
512
  <dd class="spec passed"><span class="passed_spec_name">should be retrievable by combined criteria where not all docs contain all attributes</span></dd>
513
+ <script type="text/javascript">moveProgressBar('37.0');</script>
514
+ <dd class="spec passed"><span class="passed_spec_name">should be retrievable by a multi key post</span></dd>
333
515
  </dl>
334
516
  </div>
335
517
  <div class="example_group">
336
518
  <dl>
337
- <dt id="example_group_17">RelaxDB::Document defaults</dt>
338
- <script type="text/javascript">moveProgressBar('39.0');</script>
519
+ <dt id="example_group_34">RelaxDB::Document defaults</dt>
520
+ <script type="text/javascript">moveProgressBar('37.5');</script>
339
521
  <dd class="spec passed"><span class="passed_spec_name">should be set on initialisation</span></dd>
340
- <script type="text/javascript">moveProgressBar('40.0');</script>
522
+ <script type="text/javascript">moveProgressBar('37.9');</script>
341
523
  <dd class="spec passed"><span class="passed_spec_name">should be saved</span></dd>
342
- <script type="text/javascript">moveProgressBar('41.0');</script>
524
+ <script type="text/javascript">moveProgressBar('38.4');</script>
343
525
  <dd class="spec passed"><span class="passed_spec_name">should be ignored once overwritten</span></dd>
344
- <script type="text/javascript">moveProgressBar('42.0');</script>
526
+ <script type="text/javascript">moveProgressBar('38.8');</script>
345
527
  <dd class="spec passed"><span class="passed_spec_name">may be a simple value</span></dd>
346
- <script type="text/javascript">moveProgressBar('43.0');</script>
528
+ <script type="text/javascript">moveProgressBar('39.3');</script>
347
529
  <dd class="spec passed"><span class="passed_spec_name">may be a proc</span></dd>
348
530
  </dl>
349
531
  </div>
350
532
  <div class="example_group">
351
533
  <dl>
352
- <dt id="example_group_18">RelaxDB::Document validator</dt>
353
- <script type="text/javascript">moveProgressBar('44.0');</script>
534
+ <dt id="example_group_35">RelaxDB::Document validator</dt>
535
+ <script type="text/javascript">moveProgressBar('39.8');</script>
354
536
  <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.0');</script>
537
+ <script type="text/javascript">moveProgressBar('40.2');</script>
356
538
  <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>
539
+ <script type="text/javascript">moveProgressBar('40.7');</script>
358
540
  <dd class="spec passed"><span class="passed_spec_name">should pass the property value to the validator</span></dd>
359
- <script type="text/javascript">moveProgressBar('47.0');</script>
360
- <dd class="spec passed"><span class="passed_spec_name">should add the validation error message if supplied, on failure</span></dd>
361
- <script type="text/javascript">moveProgressBar('48.0');</script>
541
+ <script type="text/javascript">moveProgressBar('41.2');</script>
542
+ <dd class="spec passed"><span class="passed_spec_name">should pass the property value and object to the validator</span></dd>
543
+ <script type="text/javascript">moveProgressBar('41.6');</script>
362
544
  <dd class="spec passed"><span class="passed_spec_name">should perform all validations</span></dd>
545
+ <script type="text/javascript">moveProgressBar('42.1');</script>
546
+ <dd class="spec passed"><span class="passed_spec_name">should prevent saving unless all validations pass</span></dd>
547
+ <script type="text/javascript">moveProgressBar('42.5');</script>
548
+ <dd class="spec passed"><span class="passed_spec_name">should add a default error message if none is specified</span></dd>
549
+ <script type="text/javascript">moveProgressBar('43.0');</script>
550
+ <dd class="spec passed"><span class="passed_spec_name">may be a proc</span></dd>
551
+ <script type="text/javascript">moveProgressBar('43.5');</script>
552
+ <dd class="spec passed"><span class="passed_spec_name">may be a method</span></dd>
553
+ <script type="text/javascript">moveProgressBar('43.9');</script>
554
+ <dd class="spec passed"><span class="passed_spec_name">may be skipped by passing the property symbol to save</span></dd>
363
555
  </dl>
364
556
  </div>
365
557
  <div class="example_group">
366
558
  <dl>
367
- <dt id="example_group_19">RelaxDB::HasManyProxy</dt>
559
+ <dt id="example_group_36">RelaxDB::Document validation message</dt>
560
+ <script type="text/javascript">moveProgressBar('44.4');</script>
561
+ <dd class="spec passed"><span class="passed_spec_name">should be set on failure</span></dd>
562
+ <script type="text/javascript">moveProgressBar('44.9');</script>
563
+ <dd class="spec passed"><span class="passed_spec_name">may be a proc accepting the prop only</span></dd>
564
+ <script type="text/javascript">moveProgressBar('45.3');</script>
565
+ <dd class="spec passed"><span class="passed_spec_name">may be a proc accepting the prop and object</span></dd>
368
566
  </dl>
369
567
  </div>
370
568
  <div class="example_group">
371
569
  <dl>
372
- <dt id="example_group_20">RelaxDB::HasManyProxy has_many</dt>
373
- <script type="text/javascript">moveProgressBar('49.0');</script>
570
+ <dt id="example_group_37">RelaxDB::Document predefined validator</dt>
571
+ <script type="text/javascript">moveProgressBar('45.8');</script>
572
+ <dd class="spec passed"><span class="passed_spec_name">should be invoked when a symbol clash exists</span></dd>
573
+ <script type="text/javascript">moveProgressBar('46.2');</script>
574
+ <dd class="spec passed"><span class="passed_spec_name">should prevent an object from being saved if validation fails</span></dd>
575
+ </dl>
576
+ </div>
577
+ <div class="example_group">
578
+ <dl>
579
+ <dt id="example_group_38">RelaxDB::HasManyProxy</dt>
580
+ </dl>
581
+ </div>
582
+ <div class="example_group">
583
+ <dl>
584
+ <dt id="example_group_39">RelaxDB::HasManyProxy has_many</dt>
585
+ <script type="text/javascript">moveProgressBar('46.7');</script>
374
586
  <dd class="spec passed"><span class="passed_spec_name">should be considered enumerable</span></dd>
375
- <script type="text/javascript">moveProgressBar('50.0');</script>
587
+ <script type="text/javascript">moveProgressBar('47.2');</script>
376
588
  <dd class="spec passed"><span class="passed_spec_name">should actually be enumerable</span></dd>
377
- <script type="text/javascript">moveProgressBar('51.0');</script>
589
+ <script type="text/javascript">moveProgressBar('47.6');</script>
378
590
  <dd class="spec passed"><span class="passed_spec_name">should preserve the collection across the load / save boundary</span></dd>
591
+ <script type="text/javascript">moveProgressBar('48.1');</script>
592
+ <dd class="spec passed"><span class="passed_spec_name">should work with MultiWordClassNames</span></dd>
379
593
  </dl>
380
594
  </div>
381
595
  <div class="example_group">
382
596
  <dl>
383
- <dt id="example_group_21">RelaxDB::HasManyProxy has_many#&lt;&lt;</dt>
384
- <script type="text/javascript">moveProgressBar('52.0');</script>
597
+ <dt id="example_group_40">RelaxDB::HasManyProxy has_many#&lt;&lt;</dt>
598
+ <script type="text/javascript">moveProgressBar('48.6');</script>
385
599
  <dd class="spec passed"><span class="passed_spec_name">should link the added item to the parent</span></dd>
386
- <script type="text/javascript">moveProgressBar('53.0');</script>
600
+ <script type="text/javascript">moveProgressBar('49.0');</script>
387
601
  <dd class="spec passed"><span class="passed_spec_name">should return self</span></dd>
388
- <script type="text/javascript">moveProgressBar('54.0');</script>
602
+ <script type="text/javascript">moveProgressBar('49.5');</script>
389
603
  <dd class="spec passed"><span class="passed_spec_name">should not created duplicates when invoked with same object more than once</span></dd>
390
- <script type="text/javascript">moveProgressBar('55.0');</script>
604
+ <script type="text/javascript">moveProgressBar('50.0');</script>
391
605
  <dd class="spec passed"><span class="passed_spec_name">should return false when the child fails validation</span></dd>
392
606
  </dl>
393
607
  </div>
394
608
  <div class="example_group">
395
609
  <dl>
396
- <dt id="example_group_22">RelaxDB::HasManyProxy has_many#=</dt>
397
- <script type="text/javascript">moveProgressBar('56.0');</script>
398
- <dd class="spec passed"><span class="passed_spec_name">should fail</span></dd>
610
+ <dt id="example_group_41">RelaxDB::HasManyProxy has_many#=</dt>
611
+ <script type="text/javascript">moveProgressBar('50.4');</script>
612
+ <dd class="spec passed"><span class="passed_spec_name">should not attempt to save the child objects when the relationship is established</span></dd>
613
+ <script type="text/javascript">moveProgressBar('50.9');</script>
614
+ <dd class="spec passed"><span class="passed_spec_name">should preserve given relationships across save/load boundary</span></dd>
615
+ <script type="text/javascript">moveProgressBar('51.3');</script>
616
+ <dd class="spec passed"><span class="passed_spec_name">should invoke the derived properties writer</span></dd>
399
617
  </dl>
400
618
  </div>
401
619
  <div class="example_group">
402
620
  <dl>
403
- <dt id="example_group_23">RelaxDB::HasManyProxy has_many#delete</dt>
404
- <script type="text/javascript">moveProgressBar('57.0');</script>
621
+ <dt id="example_group_42">RelaxDB::HasManyProxy has_many#delete</dt>
622
+ <script type="text/javascript">moveProgressBar('51.8');</script>
405
623
  <dd class="spec passed"><span class="passed_spec_name">should nullify the belongs_to relationship</span></dd>
406
624
  </dl>
407
625
  </div>
408
626
  <div class="example_group">
409
627
  <dl>
410
- <dt id="example_group_24">RelaxDB::HasManyProxy has_many#clear</dt>
411
- <script type="text/javascript">moveProgressBar('58.0');</script>
628
+ <dt id="example_group_43">RelaxDB::HasManyProxy has_many#clear</dt>
629
+ <script type="text/javascript">moveProgressBar('52.3');</script>
412
630
  <dd class="spec passed"><span class="passed_spec_name">should result in an empty collection</span></dd>
413
- <script type="text/javascript">moveProgressBar('59.0');</script>
631
+ <script type="text/javascript">moveProgressBar('52.7');</script>
414
632
  <dd class="spec passed"><span class="passed_spec_name">should nullify all child relationships</span></dd>
415
633
  </dl>
416
634
  </div>
417
635
  <div class="example_group">
418
636
  <dl>
419
- <dt id="example_group_25">RelaxDB::HasManyProxy has_many owner</dt>
420
- <script type="text/javascript">moveProgressBar('60.0');</script>
637
+ <dt id="example_group_44">RelaxDB::HasManyProxy has_many owner</dt>
638
+ <script type="text/javascript">moveProgressBar('53.2');</script>
421
639
  <dd class="spec passed"><span class="passed_spec_name">should be able to form multiple relationships with the same class of child</span></dd>
422
640
  </dl>
423
641
  </div>
424
642
  <div class="example_group">
425
643
  <dl>
426
- <dt id="example_group_26">RelaxDB::HasManyProxy has_many owner#destroy</dt>
427
- <script type="text/javascript">moveProgressBar('61.0');</script>
644
+ <dt id="example_group_45">RelaxDB::HasManyProxy has_many owner#destroy</dt>
645
+ <script type="text/javascript">moveProgressBar('53.7');</script>
428
646
  <dd class="spec passed"><span class="passed_spec_name">should nullify its child relationships</span></dd>
429
647
  </dl>
430
648
  </div>
431
649
  <div class="example_group">
432
650
  <dl>
433
- <dt id="example_group_27">RelaxDB::HasOneProxy</dt>
651
+ <dt id="example_group_46">RelaxDB::HasOneProxy</dt>
434
652
  </dl>
435
653
  </div>
436
654
  <div class="example_group">
437
655
  <dl>
438
- <dt id="example_group_28">RelaxDB::HasOneProxy has_one</dt>
439
- <script type="text/javascript">moveProgressBar('62.0');</script>
656
+ <dt id="example_group_47">RelaxDB::HasOneProxy has_one</dt>
657
+ <script type="text/javascript">moveProgressBar('54.1');</script>
440
658
  <dd class="spec passed"><span class="passed_spec_name">should return nil when accessed before assignment</span></dd>
441
- <script type="text/javascript">moveProgressBar('63.0');</script>
659
+ <script type="text/javascript">moveProgressBar('54.6');</script>
442
660
  <dd class="spec passed"><span class="passed_spec_name">should be establishable via a constructor attribute</span></dd>
443
- <script type="text/javascript">moveProgressBar('64.0');</script>
661
+ <script type="text/javascript">moveProgressBar('55.0');</script>
444
662
  <dd class="spec passed"><span class="passed_spec_name">should be establishable via assignment</span></dd>
445
- <script type="text/javascript">moveProgressBar('65.0');</script>
663
+ <script type="text/javascript">moveProgressBar('55.5');</script>
446
664
  <dd class="spec passed"><span class="passed_spec_name">should return the same object on repeated invocations</span></dd>
447
- <script type="text/javascript">moveProgressBar('66.0');</script>
665
+ <script type="text/javascript">moveProgressBar('56.0');</script>
448
666
  <dd class="spec passed"><span class="passed_spec_name">should be preserved across load / save boundary</span></dd>
449
- <script type="text/javascript">moveProgressBar('67.0');</script>
667
+ <script type="text/javascript">moveProgressBar('56.4');</script>
450
668
  <dd class="spec passed"><span class="passed_spec_name">should be able reference itself via its child</span></dd>
669
+ <script type="text/javascript">moveProgressBar('56.9');</script>
670
+ <dd class="spec passed"><span class="passed_spec_name">should work with MultiWordClassNames</span></dd>
451
671
  </dl>
452
672
  </div>
453
673
  <div class="example_group">
454
674
  <dl>
455
- <dt id="example_group_29">RelaxDB::HasOneProxy has_one#=</dt>
456
- <script type="text/javascript">moveProgressBar('68.0');</script>
675
+ <dt id="example_group_48">RelaxDB::HasOneProxy has_one#=</dt>
676
+ <script type="text/javascript">moveProgressBar('57.4');</script>
457
677
  <dd class="spec passed"><span class="passed_spec_name">should create a reference from the child to the parent</span></dd>
458
- <script type="text/javascript">moveProgressBar('69.0');</script>
678
+ <script type="text/javascript">moveProgressBar('57.8');</script>
459
679
  <dd class="spec passed"><span class="passed_spec_name">should save the assigned object</span></dd>
460
- <script type="text/javascript">moveProgressBar('70.0');</script>
680
+ <script type="text/javascript">moveProgressBar('58.3');</script>
461
681
  <dd class="spec passed"><span class="passed_spec_name">will not save the parent</span></dd>
462
- <script type="text/javascript">moveProgressBar('71.0');</script>
682
+ <script type="text/javascript">moveProgressBar('58.7');</script>
463
683
  <dd class="spec passed"><span class="passed_spec_name">should set the target to nil when nil is assigned</span></dd>
464
- <script type="text/javascript">moveProgressBar('72.0');</script>
684
+ <script type="text/javascript">moveProgressBar('59.2');</script>
465
685
  <dd class="spec passed"><span class="passed_spec_name">should nullify any existing relationship in the database</span></dd>
466
- <script type="text/javascript">moveProgressBar('73.0');</script>
686
+ <script type="text/javascript">moveProgressBar('59.7');</script>
467
687
  <dd class="spec passed"><span class="passed_spec_name">should nullify any existing relationship on a known in-memory object</span></dd>
468
- <script type="text/javascript">moveProgressBar('74.0');</script>
688
+ <script type="text/javascript">moveProgressBar('60.1');</script>
469
689
  <dd class="spec passed"><span class="passed_spec_name">will not nullify any existing relationship on unknown in-memory objects</span></dd>
470
- <script type="text/javascript">moveProgressBar('75.0');</script>
690
+ <script type="text/javascript">moveProgressBar('60.6');</script>
471
691
  <dd class="spec passed"><span class="passed_spec_name">will not throw an error when the rhs fails validation</span></dd>
472
692
  </dl>
473
693
  </div>
474
694
  <div class="example_group">
475
695
  <dl>
476
- <dt id="example_group_30">RelaxDB::Query</dt>
696
+ <dt id="example_group_49">RelaxDB::PaginateParams</dt>
697
+ <script type="text/javascript">moveProgressBar('61.1');</script>
698
+ <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>
699
+ <script type="text/javascript">moveProgressBar('61.5');</script>
700
+ <dd class="spec passed"><span class="passed_spec_name">should be valid if initialized with both a startkey and endkey</span></dd>
701
+ </dl>
702
+ </div>
703
+ <div class="example_group">
704
+ <dl>
705
+ <dt id="example_group_50">RelaxDB Pagination</dt>
706
+ </dl>
707
+ </div>
708
+ <div class="example_group">
709
+ <dl>
710
+ <dt id="example_group_51">RelaxDB Pagination functional tests</dt>
711
+ <script type="text/javascript">moveProgressBar('62.0');</script>
712
+ <dd class="spec passed"><span class="passed_spec_name">should navigate through a series</span></dd>
713
+ <script type="text/javascript">moveProgressBar('62.5');</script>
714
+ <dd class="spec passed"><span class="passed_spec_name">should navigate through b series with descending false</span></dd>
715
+ <script type="text/javascript">moveProgressBar('62.9');</script>
716
+ <dd class="spec passed"><span class="passed_spec_name">should navigate through b series with descending true</span></dd>
717
+ <script type="text/javascript">moveProgressBar('63.4');</script>
718
+ <dd class="spec passed"><span class="passed_spec_name">should not display pagination options for c series</span></dd>
719
+ </dl>
720
+ </div>
721
+ <div class="example_group">
722
+ <dl>
723
+ <dt id="example_group_52">RelaxDB Pagination next_query</dt>
724
+ <script type="text/javascript">moveProgressBar('63.8');</script>
725
+ <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>
726
+ <script type="text/javascript">moveProgressBar('64.3');</script>
727
+ <dd class="spec passed"><span class="passed_spec_name">should be treated as next_param by the paginator</span></dd>
477
728
  </dl>
478
729
  </div>
479
730
  <div class="example_group">
480
731
  <dl>
481
- <dt id="example_group_31">RelaxDB::Query#view_name</dt>
482
- <script type="text/javascript">moveProgressBar('76.0');</script>
732
+ <dt id="example_group_53">RelaxDB Pagination prev_query</dt>
733
+ <script type="text/javascript">moveProgressBar('64.8');</script>
734
+ <dd class="spec passed"><span class="passed_spec_name">should be treated as prev_query by the paginator</span></dd>
735
+ <script type="text/javascript">moveProgressBar('65.2');</script>
736
+ <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>
737
+ </dl>
738
+ </div>
739
+ <div class="example_group">
740
+ <dl>
741
+ <dt id="example_group_54">RelaxDB Pagination multiple keys per document, simple (non array) keys</dt>
742
+ <script type="text/javascript">moveProgressBar('65.7');</script>
743
+ <dd class="spec passed"><span class="passed_spec_name">should work when descending is false</span></dd>
744
+ <script type="text/javascript">moveProgressBar('66.2');</script>
745
+ <dd class="spec passed"><span class="passed_spec_name">should work when descending is true</span></dd>
746
+ <script type="text/javascript">moveProgressBar('66.6');</script>
747
+ <dd class="spec passed"><span class="passed_spec_name">should not get stuck when the number of keys exceeds the limit</span></dd>
748
+ </dl>
749
+ </div>
750
+ <div class="example_group">
751
+ <dl>
752
+ <dt id="example_group_55">RelaxDB Pagination.paginate_by</dt>
753
+ <script type="text/javascript">moveProgressBar('67.1');</script>
754
+ <dd class="spec passed"><span class="passed_spec_name">should throw an error unless both startkey and endkey are specified</span></dd>
755
+ <script type="text/javascript">moveProgressBar('67.5');</script>
756
+ <dd class="spec passed"><span class="passed_spec_name">should return an empty array when no documents exist</span></dd>
757
+ <script type="text/javascript">moveProgressBar('68.0');</script>
758
+ <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>
759
+ </dl>
760
+ </div>
761
+ <div class="example_group">
762
+ <dl>
763
+ <dt id="example_group_56">RelaxDB Pagination.paginate_view functional tests</dt>
764
+ <script type="text/javascript">moveProgressBar('68.5');</script>
765
+ <dd class="spec passed"><span class="passed_spec_name">should pass</span></dd>
766
+ </dl>
767
+ </div>
768
+ <div class="example_group">
769
+ <dl>
770
+ <dt id="example_group_57">RelaxDB::Query</dt>
771
+ </dl>
772
+ </div>
773
+ <div class="example_group">
774
+ <dl>
775
+ <dt id="example_group_58">RelaxDB::Query#view_name</dt>
776
+ <script type="text/javascript">moveProgressBar('68.9');</script>
483
777
  <dd class="spec passed"><span class="passed_spec_name">should match a single key attribute</span></dd>
484
- <script type="text/javascript">moveProgressBar('77.0');</script>
778
+ <script type="text/javascript">moveProgressBar('69.4');</script>
485
779
  <dd class="spec passed"><span class="passed_spec_name">should match key attributes</span></dd>
486
780
  </dl>
487
781
  </div>
488
782
  <div class="example_group">
489
783
  <dl>
490
- <dt id="example_group_32">RelaxDB::Query#view_path</dt>
491
- <script type="text/javascript">moveProgressBar('78.0');</script>
492
- <dd class="spec passed"><span class="passed_spec_name">should list design document and view name</span></dd>
493
- <script type="text/javascript">moveProgressBar('79.0');</script>
784
+ <dt id="example_group_59">RelaxDB::Query#view_path</dt>
785
+ <script type="text/javascript">moveProgressBar('69.9');</script>
786
+ <dd class="spec passed"><span class="passed_spec_name">should list design document and view name and default reduce to false</span></dd>
787
+ <script type="text/javascript">moveProgressBar('70.3');</script>
494
788
  <dd class="spec passed"><span class="passed_spec_name">should contain URL and JSON encoded key when the key has been set</span></dd>
495
- <script type="text/javascript">moveProgressBar('80.0');</script>
496
- <dd class="spec passed"><span class="passed_spec_name">should honour startkey, endkey and count</span></dd>
497
- <script type="text/javascript">moveProgressBar('81.0');</script>
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>
789
+ <script type="text/javascript">moveProgressBar('70.8');</script>
790
+ <dd class="spec passed"><span class="passed_spec_name">should honour startkey, endkey and limit</span></dd>
791
+ <script type="text/javascript">moveProgressBar('71.2');</script>
792
+ <dd class="spec passed"><span class="passed_spec_name">should specify a null key if key was set to nil</span></dd>
793
+ <script type="text/javascript">moveProgressBar('71.7');</script>
794
+ <dd class="spec passed"><span class="passed_spec_name">should specify a null startkey if startkey was set to nil</span></dd>
795
+ <script type="text/javascript">moveProgressBar('72.2');</script>
796
+ <dd class="spec passed"><span class="passed_spec_name">should specify a null endkey if endkey was set to nil</span></dd>
797
+ <script type="text/javascript">moveProgressBar('72.6');</script>
798
+ <dd class="spec passed"><span class="passed_spec_name">should not JSON encode the startkey_docid</span></dd>
799
+ <script type="text/javascript">moveProgressBar('73.1');</script>
800
+ <dd class="spec passed"><span class="passed_spec_name">should not JSON encode the endkey_docid</span></dd>
499
801
  </dl>
500
802
  </div>
501
803
  <div class="example_group">
502
804
  <dl>
503
- <dt id="example_group_33">RelaxDB::ReferencesManyProxy</dt>
805
+ <dt id="example_group_60">RelaxDB::Query#keys</dt>
806
+ <script type="text/javascript">moveProgressBar('73.6');</script>
807
+ <dd class="spec passed"><span class="passed_spec_name">should return a JSON encoded hash</span></dd>
504
808
  </dl>
505
809
  </div>
506
810
  <div class="example_group">
507
811
  <dl>
508
- <dt id="example_group_34">RelaxDB::ReferencesManyProxy references_many</dt>
509
- <script type="text/javascript">moveProgressBar('82.0');</script>
510
- <dd class="spec passed"><span class="passed_spec_name">is now deprecated and will be removed in the near future</span></dd>
511
- <script type="text/javascript">moveProgressBar('83.0');</script>
812
+ <dt id="example_group_61">RelaxDB::ReferencesManyProxy</dt>
813
+ </dl>
814
+ </div>
815
+ <div class="example_group">
816
+ <dl>
817
+ <dt id="example_group_62">RelaxDB::ReferencesManyProxy references_many</dt>
818
+ <script type="text/javascript">moveProgressBar('74.0');</script>
512
819
  <dd class="spec passed"><span class="passed_spec_name">should preserve the relationships across the save / load boundary</span></dd>
820
+ <script type="text/javascript">moveProgressBar('74.5');</script>
821
+ <dd class="spec passed"><span class="passed_spec_name">should issue only a single request to resolve the relationship</span></dd>
822
+ <script type="text/javascript">moveProgressBar('75.0');</script>
823
+ <dd class="spec passed"><span class="passed_spec_name">should not resolve the relationship when an object is instantiated</span></dd>
824
+ <script type="text/javascript">moveProgressBar('75.4');</script>
825
+ <dd class="spec passed"><span class="passed_spec_name">should make the ids available as a property</span></dd>
513
826
  </dl>
514
827
  </div>
515
828
  <div class="example_group">
516
829
  <dl>
517
- <dt id="example_group_35">RelaxDB::ReferencesManyProxy references_many#=</dt>
518
- <script type="text/javascript">moveProgressBar('84.0');</script>
830
+ <dt id="example_group_63">RelaxDB::ReferencesManyProxy references_many#=</dt>
831
+ <script type="text/javascript">moveProgressBar('75.9');</script>
519
832
  <dd class="spec passed"><span class="passed_spec_name">should not be invoked</span></dd>
520
833
  </dl>
521
834
  </div>
522
835
  <div class="example_group">
523
836
  <dl>
524
- <dt id="example_group_36">RelaxDB::ReferencesManyProxy references_many#&lt;&lt;</dt>
525
- <script type="text/javascript">moveProgressBar('85.0');</script>
837
+ <dt id="example_group_64">RelaxDB::ReferencesManyProxy references_many#&lt;&lt;</dt>
838
+ <script type="text/javascript">moveProgressBar('76.3');</script>
526
839
  <dd class="spec passed"><span class="passed_spec_name">should set the relationship on both sides</span></dd>
527
- <script type="text/javascript">moveProgressBar('86.0');</script>
840
+ <script type="text/javascript">moveProgressBar('76.8');</script>
528
841
  <dd class="spec passed"><span class="passed_spec_name">should not create duplicates when the same object is added more than once</span></dd>
529
- <script type="text/javascript">moveProgressBar('87.0');</script>
842
+ <script type="text/javascript">moveProgressBar('77.3');</script>
530
843
  <dd class="spec passed"><span class="passed_spec_name">should not create duplicates when reciprocal objects are added from opposite sides</span></dd>
844
+ <script type="text/javascript">moveProgressBar('77.7');</script>
845
+ <dd class="spec passed"><span class="passed_spec_name">will resolve the reciprocal relationship</span></dd>
531
846
  </dl>
532
847
  </div>
533
848
  <div class="example_group">
534
849
  <dl>
535
- <dt id="example_group_37">RelaxDB::ReferencesManyProxy references_many#delete</dt>
536
- <script type="text/javascript">moveProgressBar('88.0');</script>
850
+ <dt id="example_group_65">RelaxDB::ReferencesManyProxy references_many#delete</dt>
851
+ <script type="text/javascript">moveProgressBar('78.2');</script>
537
852
  <dd class="spec passed"><span class="passed_spec_name">should nullify relationship on both sides</span></dd>
538
853
  </dl>
539
854
  </div>
540
855
  <div class="example_group">
541
856
  <dl>
542
- <dt id="example_group_38">RelaxDB::ReferencesManyProxy references_many owner#destroy</dt>
543
- <script type="text/javascript">moveProgressBar('89.0');</script>
544
- <dd class="spec passed"><span class="passed_spec_name">will not remove its membership from its peers in memory</span></dd>
545
- <script type="text/javascript">moveProgressBar('90.0');</script>
857
+ <dt id="example_group_66">RelaxDB::ReferencesManyProxy references_many owner#destroy</dt>
858
+ <script type="text/javascript">moveProgressBar('78.7');</script>
859
+ <dd class="spec passed"><span class="passed_spec_name">should remove its membership from its peers in memory</span></dd>
860
+ <script type="text/javascript">moveProgressBar('79.1');</script>
546
861
  <dd class="spec passed"><span class="passed_spec_name">should remove its membership from its peers in CouchDB</span></dd>
547
862
  </dl>
548
863
  </div>
549
864
  <div class="example_group">
550
865
  <dl>
551
- <dt id="example_group_39">RelaxDB</dt>
552
- <script type="text/javascript">moveProgressBar('91.0');</script>
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>
866
+ <dt id="example_group_67">RelaxDB</dt>
554
867
  </dl>
555
868
  </div>
556
869
  <div class="example_group">
557
870
  <dl>
558
- <dt id="example_group_40">RelaxDB.create_object</dt>
559
- <script type="text/javascript">moveProgressBar('92.0');</script>
871
+ <dt id="example_group_68">RelaxDB.create_object</dt>
872
+ <script type="text/javascript">moveProgressBar('79.6');</script>
560
873
  <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>
561
- <script type="text/javascript">moveProgressBar('93.0');</script>
874
+ <script type="text/javascript">moveProgressBar('80.0');</script>
562
875
  <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>
563
876
  </dl>
564
877
  </div>
565
878
  <div class="example_group">
566
879
  <dl>
567
- <dt id="example_group_41">RelaxDB.bulk_save</dt>
568
- <script type="text/javascript">moveProgressBar('94.0');</script>
880
+ <dt id="example_group_69">RelaxDB.bulk_save</dt>
881
+ <script type="text/javascript">moveProgressBar('80.5');</script>
569
882
  <dd class="spec passed"><span class="passed_spec_name">should be invokable multiple times</span></dd>
570
- <script type="text/javascript">moveProgressBar('95.0');</script>
883
+ <script type="text/javascript">moveProgressBar('81.0');</script>
884
+ <dd class="spec passed"><span class="passed_spec_name">should return the objects it was passed</span></dd>
885
+ <script type="text/javascript">moveProgressBar('81.4');</script>
571
886
  <dd class="spec passed"><span class="passed_spec_name">should succeed when passed no args</span></dd>
887
+ <script type="text/javascript">moveProgressBar('81.9');</script>
888
+ <dd class="spec passed"><span class="passed_spec_name">should return false on failure</span></dd>
889
+ <script type="text/javascript">moveProgressBar('82.4');</script>
890
+ <dd class="spec passed"><span class="passed_spec_name">should not attempt to save if a pre-save stage fails</span></dd>
891
+ <script type="text/javascript">moveProgressBar('82.8');</script>
892
+ <dd class="spec passed"><span class="passed_spec_name">should invoke the after-save stage after a successful save</span></dd>
893
+ </dl>
894
+ </div>
895
+ <div class="example_group">
896
+ <dl>
897
+ <dt id="example_group_70">RelaxDB.bulk_save!</dt>
898
+ <script type="text/javascript">moveProgressBar('83.3');</script>
899
+ <dd class="spec passed"><span class="passed_spec_name">should raise an exception if a obj fails validation</span></dd>
900
+ <script type="text/javascript">moveProgressBar('83.7');</script>
901
+ <dd class="spec passed"><span class="passed_spec_name">will not raise an exception if a document update conflict occurs on save</span></dd>
902
+ </dl>
903
+ </div>
904
+ <div class="example_group">
905
+ <dl>
906
+ <dt id="example_group_71">RelaxDB.replicate_db</dt>
907
+ <script type="text/javascript">moveProgressBar('84.2');</script>
908
+ <dd class="spec passed"><span class="passed_spec_name">should replicate the named database</span></dd>
572
909
  </dl>
573
910
  </div>
574
911
  <div class="example_group">
575
912
  <dl>
576
- <dt id="example_group_42">RelaxDB::ViewObject</dt>
913
+ <dt id="example_group_72">RelaxDB.load</dt>
914
+ <script type="text/javascript">moveProgressBar('84.7');</script>
915
+ <dd class="spec passed"><span class="passed_spec_name">should load a single document</span></dd>
916
+ <script type="text/javascript">moveProgressBar('85.1');</script>
917
+ <dd class="spec passed"><span class="passed_spec_name">should load an arbitrary number of documents</span></dd>
918
+ <script type="text/javascript">moveProgressBar('85.6');</script>
919
+ <dd class="spec passed"><span class="passed_spec_name">should return nil when given a id for a non existant doc</span></dd>
920
+ <script type="text/javascript">moveProgressBar('86.1');</script>
921
+ <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>
577
922
  </dl>
578
923
  </div>
579
924
  <div class="example_group">
580
925
  <dl>
581
- <dt id="example_group_43">RelaxDB::ViewObject.new</dt>
582
- <script type="text/javascript">moveProgressBar('96.0');</script>
926
+ <dt id="example_group_73">RelaxDB.load!</dt>
927
+ <script type="text/javascript">moveProgressBar('86.5');</script>
928
+ <dd class="spec passed"><span class="passed_spec_name">should load a single document</span></dd>
929
+ <script type="text/javascript">moveProgressBar('87.0');</script>
930
+ <dd class="spec passed"><span class="passed_spec_name">should load multiple documents</span></dd>
931
+ <script type="text/javascript">moveProgressBar('87.5');</script>
932
+ <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>
933
+ <script type="text/javascript">moveProgressBar('87.9');</script>
934
+ <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>
935
+ </dl>
936
+ </div>
937
+ <div class="example_group">
938
+ <dl>
939
+ <dt id="example_group_74">RelaxDB.view</dt>
940
+ <script type="text/javascript">moveProgressBar('88.4');</script>
941
+ <dd class="spec passed"><span class="passed_spec_name">should request a view and return an array</span></dd>
942
+ <script type="text/javascript">moveProgressBar('88.8');</script>
943
+ <dd class="spec passed"><span class="passed_spec_name">may accept query params</span></dd>
944
+ <script type="text/javascript">moveProgressBar('89.3');</script>
945
+ <dd class="spec passed"><span class="passed_spec_name">should be queryable with a multi key post</span></dd>
946
+ <script type="text/javascript">moveProgressBar('89.8');</script>
947
+ <dd class="spec passed"><span class="passed_spec_name">should return nil for a reduce view with no results</span></dd>
948
+ <script type="text/javascript">moveProgressBar('90.2');</script>
949
+ <dd class="spec passed"><span class="passed_spec_name">should return a single value for a reduce view with a single result</span></dd>
950
+ <script type="text/javascript">moveProgressBar('90.7');</script>
951
+ <dd class="spec passed"><span class="passed_spec_name">should return an array for a reduce view with multiple results</span></dd>
952
+ </dl>
953
+ </div>
954
+ <div class="example_group">
955
+ <dl>
956
+ <dt id="example_group_75">RelaxDB.merge</dt>
957
+ <script type="text/javascript">moveProgressBar('91.2');</script>
958
+ <dd class="spec passed"><span class="passed_spec_name">should merge rows sharing a common merge key into a single ViewObject</span></dd>
959
+ </dl>
960
+ </div>
961
+ <div class="example_group">
962
+ <dl>
963
+ <dt id="example_group_76">RelaxDB create_views disabled</dt>
964
+ <script type="text/javascript">moveProgressBar('91.6');</script>
965
+ <dd class="spec passed"><span class="passed_spec_name">should not create any views</span></dd>
966
+ </dl>
967
+ </div>
968
+ <div class="example_group">
969
+ <dl>
970
+ <dt id="example_group_77">RelaxDB create_views enabled</dt>
971
+ <script type="text/javascript">moveProgressBar('92.1');</script>
972
+ <dd class="spec passed"><span class="passed_spec_name">should create all views</span></dd>
973
+ </dl>
974
+ </div>
975
+ <div class="example_group">
976
+ <dl>
977
+ <dt id="example_group_78">RelaxDB</dt>
978
+ </dl>
979
+ </div>
980
+ <div class="example_group">
981
+ <dl>
982
+ <dt id="example_group_79">RelaxDB GET</dt>
983
+ <script type="text/javascript">moveProgressBar('92.5');</script>
984
+ <dd class="spec passed"><span class="passed_spec_name">should raise a HTTP_404 for a non existant doc</span></dd>
985
+ <script type="text/javascript">moveProgressBar('93.0');</script>
986
+ <dd class="spec passed"><span class="passed_spec_name">should raise a RuntimeError for non specific errors</span></dd>
987
+ </dl>
988
+ </div>
989
+ <div class="example_group">
990
+ <dl>
991
+ <dt id="example_group_80">view_by</dt>
992
+ </dl>
993
+ </div>
994
+ <div class="example_group">
995
+ <dl>
996
+ <dt id="example_group_81">view_by view_by</dt>
997
+ <script type="text/javascript">moveProgressBar('93.5');</script>
998
+ <dd class="spec passed"><span class="passed_spec_name">should create corresponding views</span></dd>
999
+ <script type="text/javascript">moveProgressBar('93.9');</script>
1000
+ <dd class="spec passed"><span class="passed_spec_name">should create a by_ att list method</span></dd>
1001
+ <script type="text/javascript">moveProgressBar('94.4');</script>
1002
+ <dd class="spec passed"><span class="passed_spec_name">should create a paginate_by_ att list method</span></dd>
1003
+ <script type="text/javascript">moveProgressBar('94.9');</script>
1004
+ <dd class="spec passed"><span class="passed_spec_name">should apply query defaults to by_</span></dd>
1005
+ <script type="text/javascript">moveProgressBar('95.3');</script>
1006
+ <dd class="spec passed"><span class="passed_spec_name">should allow a single arg to be passed to by_</span></dd>
1007
+ <script type="text/javascript">moveProgressBar('95.8');</script>
1008
+ <dd class="spec passed"><span class="passed_spec_name">should apply query defaults to paginate_by_</span></dd>
1009
+ <script type="text/javascript">moveProgressBar('96.2');</script>
1010
+ <dd class="spec passed"><span class="passed_spec_name">should allow query defaults to be overridden for paginate_by_</span></dd>
1011
+ <script type="text/javascript">moveProgressBar('96.7');</script>
1012
+ <dd class="spec passed"><span class="passed_spec_name">should allow query defaults to be overridden for by_</span></dd>
1013
+ </dl>
1014
+ </div>
1015
+ <div class="example_group">
1016
+ <dl>
1017
+ <dt id="example_group_82">RelaxDB::ViewObject</dt>
1018
+ </dl>
1019
+ </div>
1020
+ <div class="example_group">
1021
+ <dl>
1022
+ <dt id="example_group_83">RelaxDB::ViewObject.new</dt>
1023
+ <script type="text/javascript">moveProgressBar('97.2');</script>
583
1024
  <dd class="spec passed"><span class="passed_spec_name">should provide readers for the object passed in the hash</span></dd>
584
- <script type="text/javascript">moveProgressBar('97.0');</script>
1025
+ <script type="text/javascript">moveProgressBar('97.6');</script>
585
1026
  <dd class="spec passed"><span class="passed_spec_name">should try to convert objects ending in _at to a time</span></dd>
586
1027
  </dl>
587
1028
  </div>
588
1029
  <div class="example_group">
589
1030
  <dl>
590
- <dt id="example_group_44">RelaxDB::ViewObject.create</dt>
591
- <script type="text/javascript">moveProgressBar('98.0');</script>
1031
+ <dt id="example_group_84">RelaxDB::ViewObject.create</dt>
1032
+ <script type="text/javascript">moveProgressBar('98.1');</script>
592
1033
  <dd class="spec passed"><span class="passed_spec_name">should return an array of view objects when passed an array</span></dd>
593
- <script type="text/javascript">moveProgressBar('99.0');</script>
1034
+ <script type="text/javascript">moveProgressBar('98.6');</script>
594
1035
  <dd class="spec passed"><span class="passed_spec_name">should return a view object when passed a hash</span></dd>
595
- <script type="text/javascript">moveProgressBar('100.0');</script>
1036
+ <script type="text/javascript">moveProgressBar('99.0');</script>
596
1037
  <dd class="spec passed"><span class="passed_spec_name">should return a simple value when passed a primitive</span></dd>
597
1038
  </dl>
598
1039
  </div>
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>
1040
+ <div class="example_group">
1041
+ <dl>
1042
+ <dt id="example_group_85">RelaxDB::View</dt>
1043
+ </dl>
1044
+ </div>
1045
+ <div class="example_group">
1046
+ <dl>
1047
+ <dt id="example_group_86">RelaxDB::View exists</dt>
1048
+ <script type="text/javascript">moveProgressBar('99.5');</script>
1049
+ <dd class="spec passed"><span class="passed_spec_name">should return nil if a view doesnt exist</span></dd>
1050
+ <script type="text/javascript">moveProgressBar('100.0');</script>
1051
+ <dd class="spec passed"><span class="passed_spec_name">should return the view if it exits</span></dd>
1052
+ </dl>
1053
+ </div>
1054
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>32.605052 seconds</strong>";</script>
1055
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "216 examples, 1 failure";</script>
601
1056
  </div>
602
1057
  </div>
603
1058
  </body>