@@ -6,6 +6,7 @@ var deserializedType = require('./deserialized-type');
6
6
var numberType = require ( './number-type' ) ;
7
7
var errorHandler = require ( '../util' ) . errorHandler ;
8
8
var richText = require ( 'rich-text' ) ;
9
+ var MemoryDB = require ( '../../lib/db/memory' ) ;
9
10
types . register ( deserializedType . type ) ;
10
11
types . register ( deserializedType . type2 ) ;
11
12
types . register ( numberType . type ) ;
@@ -206,93 +207,124 @@ module.exports = function() {
206
207
} ) ;
207
208
} ) ;
208
209
209
- it ( 'can create a new doc then fetch' , function ( done ) {
210
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
211
- doc . create ( { age : 3 } , function ( err ) {
212
- if ( err ) return done ( err ) ;
213
- doc . fetch ( function ( err ) {
214
- if ( err ) return done ( err ) ;
215
- expect ( doc . data ) . eql ( { age : 3 } ) ;
216
- expect ( doc . version ) . eql ( 1 ) ;
217
- done ( ) ;
218
- } ) ;
210
+
211
+ describe ( 'create' , function ( ) {
212
+ describe ( 'metadata enabled' , function ( ) {
213
+ runCreateTests ( ) ;
219
214
} ) ;
220
- } ) ;
221
215
222
- it ( 'calling create on the same doc twice fails' , function ( done ) {
223
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
224
- doc . create ( { age : 3 } , function ( err ) {
225
- if ( err ) return done ( err ) ;
226
- doc . create ( { age : 4 } , function ( err ) {
227
- expect ( err ) . instanceOf ( Error ) ;
228
- expect ( doc . version ) . equal ( 1 ) ;
229
- expect ( doc . data ) . eql ( { age : 3 } ) ;
230
- done ( ) ;
216
+ describe ( 'no snapshot metadata available' , function ( ) {
217
+ beforeEach ( function ( ) {
218
+ var getSnapshot = MemoryDB . prototype . getSnapshot ;
219
+ sinon . stub ( MemoryDB . prototype , 'getSnapshot' )
220
+ . callsFake ( function ( ) {
221
+ var args = Array . from ( arguments ) ;
222
+ var callback = args . pop ( ) ;
223
+ args . push ( function ( error , snapshot ) {
224
+ if ( snapshot ) delete snapshot . m ;
225
+ callback ( error , snapshot ) ;
226
+ } ) ;
227
+ getSnapshot . apply ( this , args ) ;
228
+ } ) ;
231
229
} ) ;
232
- } ) ;
233
- } ) ;
234
230
235
- it ( 'trying to create an already created doc without fetching fails and fetches' , function ( done ) {
236
- var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
237
- var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
238
- doc . create ( { age : 3 } , function ( err ) {
239
- if ( err ) return done ( err ) ;
240
- doc2 . create ( { age : 4 } , function ( err ) {
241
- expect ( err ) . instanceOf ( Error ) ;
242
- expect ( doc2 . version ) . equal ( 1 ) ;
243
- expect ( doc2 . data ) . eql ( { age : 3 } ) ;
244
- done ( ) ;
231
+ afterEach ( function ( ) {
232
+ sinon . restore ( ) ;
245
233
} ) ;
246
- } ) ;
247
- } ) ;
248
234
249
- it ( 'does not fail when resubmitting a create op' , function ( done ) {
250
- var backend = this . backend ;
251
- var connection = backend . connect ( ) ;
252
- var submitted = false ;
253
- backend . use ( 'submit' , function ( request , next ) {
254
- if ( ! submitted ) {
255
- submitted = true ;
256
- connection . close ( ) ;
257
- backend . connect ( connection ) ;
258
- }
259
- next ( ) ;
235
+ runCreateTests ( ) ;
260
236
} ) ;
261
237
262
- var doc = connection . get ( 'dogs' , 'fido' ) ;
263
- doc . create ( { age : 3 } , function ( error ) {
264
- expect ( doc . version ) . to . equal ( 1 ) ;
265
- done ( error ) ;
266
- } ) ;
267
- } ) ;
238
+ function runCreateTests ( ) {
239
+ it ( 'can create a new doc then fetch' , function ( done ) {
240
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
241
+ doc . create ( { age : 3 } , function ( err ) {
242
+ if ( err ) return done ( err ) ;
243
+ doc . fetch ( function ( err ) {
244
+ if ( err ) return done ( err ) ;
245
+ expect ( doc . data ) . eql ( { age : 3 } ) ;
246
+ expect ( doc . version ) . eql ( 1 ) ;
247
+ done ( ) ;
248
+ } ) ;
249
+ } ) ;
250
+ } ) ;
268
251
269
- it ( 'does not fail when resubmitting a create op on a doc that was deleted' , function ( done ) {
270
- var backend = this . backend ;
271
- var connection1 = backend . connect ( ) ;
272
- var connection2 = backend . connect ( ) ;
273
- var doc1 = connection1 . get ( 'dogs' , 'fido' ) ;
274
- var doc2 = connection2 . get ( 'dogs' , 'fido' ) ;
275
-
276
- async . series ( [
277
- doc1 . create . bind ( doc1 , { age : 3 } ) ,
278
- doc1 . del . bind ( doc1 ) ,
279
- function ( next ) {
252
+ it ( 'calling create on the same doc twice fails' , function ( done ) {
253
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
254
+ doc . create ( { age : 3 } , function ( err ) {
255
+ if ( err ) return done ( err ) ;
256
+ doc . create ( { age : 4 } , function ( err ) {
257
+ expect ( err ) . instanceOf ( Error ) ;
258
+ expect ( doc . version ) . equal ( 1 ) ;
259
+ expect ( doc . data ) . eql ( { age : 3 } ) ;
260
+ done ( ) ;
261
+ } ) ;
262
+ } ) ;
263
+ } ) ;
264
+
265
+ it ( 'trying to create an already created doc without fetching fails and fetches' , function ( done ) {
266
+ var doc = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
267
+ var doc2 = this . backend . connect ( ) . get ( 'dogs' , 'fido' ) ;
268
+ doc . create ( { age : 3 } , function ( err ) {
269
+ if ( err ) return done ( err ) ;
270
+ doc2 . create ( { age : 4 } , function ( err ) {
271
+ expect ( err ) . instanceOf ( Error ) ;
272
+ expect ( doc2 . version ) . equal ( 1 ) ;
273
+ expect ( doc2 . data ) . eql ( { age : 3 } ) ;
274
+ done ( ) ;
275
+ } ) ;
276
+ } ) ;
277
+ } ) ;
278
+
279
+ it ( 'does not fail when resubmitting a create op' , function ( done ) {
280
+ var backend = this . backend ;
281
+ var connection = backend . connect ( ) ;
280
282
var submitted = false ;
281
283
backend . use ( 'submit' , function ( request , next ) {
282
284
if ( ! submitted ) {
283
285
submitted = true ;
284
- connection2 . close ( ) ;
285
- backend . connect ( connection2 ) ;
286
+ connection . close ( ) ;
287
+ backend . connect ( connection ) ;
286
288
}
287
289
next ( ) ;
288
290
} ) ;
289
291
290
- doc2 . create ( { name : 'Fido' } , function ( error ) {
291
- expect ( doc2 . version ) . to . equal ( 3 ) ;
292
- next ( error ) ;
292
+ var doc = connection . get ( 'dogs' , 'fido' ) ;
293
+ doc . create ( { age : 3 } , function ( error ) {
294
+ expect ( doc . version ) . to . equal ( 1 ) ;
295
+ done ( error ) ;
293
296
} ) ;
294
- }
295
- ] , done ) ;
297
+ } ) ;
298
+
299
+ it ( 'does not fail when resubmitting a create op on a doc that was deleted' , function ( done ) {
300
+ var backend = this . backend ;
301
+ var connection1 = backend . connect ( ) ;
302
+ var connection2 = backend . connect ( ) ;
303
+ var doc1 = connection1 . get ( 'dogs' , 'fido' ) ;
304
+ var doc2 = connection2 . get ( 'dogs' , 'fido' ) ;
305
+
306
+ async . series ( [
307
+ doc1 . create . bind ( doc1 , { age : 3 } ) ,
308
+ doc1 . del . bind ( doc1 ) ,
309
+ function ( next ) {
310
+ var submitted = false ;
311
+ backend . use ( 'submit' , function ( request , next ) {
312
+ if ( ! submitted ) {
313
+ submitted = true ;
314
+ connection2 . close ( ) ;
315
+ backend . connect ( connection2 ) ;
316
+ }
317
+ next ( ) ;
318
+ } ) ;
319
+
320
+ doc2 . create ( { name : 'Fido' } , function ( error ) {
321
+ expect ( doc2 . version ) . to . equal ( 3 ) ;
322
+ next ( error ) ;
323
+ } ) ;
324
+ }
325
+ ] , done ) ;
326
+ } ) ;
327
+ }
296
328
} ) ;
297
329
298
330
it ( 'server fetches and transforms by already committed op' , function ( done ) {
0 commit comments