1- var levelup = require ( '../lib/levelup.js' )
2- var memdown = require ( 'memdown' )
3- var common = require ( './common' )
4- var assert = require ( 'referee' ) . assert
5- var refute = require ( 'referee' ) . refute
6- var buster = require ( 'bustermove' )
7-
8- function test ( fun ) {
9- return function ( done ) {
10- // 1) open database without callback, opens in next tick
11- var db = levelup ( memdown ( ) )
12-
13- this . closeableDatabases . push ( db )
14- assert . isObject ( db )
15-
16- fun ( db , done )
17- // we should still be in a state of limbo down here, not opened or closed, but 'new'
18- refute ( db . isOpen ( ) )
19- refute ( db . isClosed ( ) )
20- }
21- }
22-
23- buster . testCase ( 'Deferred open() is patch-safe' , {
24- setUp : common . commonSetUp ,
25- tearDown : common . commonTearDown ,
26-
27- 'put() on pre-opened database' : test ( function ( db , done ) {
1+ module . exports = function ( test , testCommon ) {
2+ test ( 'deferred open() is patch-safe: put() on new database' , makeTest ( function ( t , db , done ) {
283 var put = db . put
294 var called = 0
305
@@ -34,11 +9,12 @@ buster.testCase('Deferred open() is patch-safe', {
349 }
3510
3611 db . put ( 'key' , 'VALUE' , function ( ) {
37- assert . equals ( called , 1 )
12+ t . is ( called , 1 )
3813 done ( )
3914 } )
40- } ) ,
41- 'del() on pre-opened database' : test ( function ( db , done ) {
15+ } ) )
16+
17+ test ( 'deferred open() is patch-safe: del() on new database' , makeTest ( function ( t , db , done ) {
4218 var del = db . del
4319 var called = 0
4420
@@ -48,11 +24,12 @@ buster.testCase('Deferred open() is patch-safe', {
4824 }
4925
5026 db . del ( 'key' , function ( ) {
51- assert . equals ( called , 1 )
27+ t . is ( called , 1 )
5228 done ( )
5329 } )
54- } ) ,
55- 'batch() on pre-opened database' : test ( function ( db , done ) {
30+ } ) )
31+
32+ test ( 'deferred open() is patch-safe: batch() on new database' , makeTest ( function ( t , db , done ) {
5633 var batch = db . batch
5734 var called = 0
5835
@@ -65,8 +42,24 @@ buster.testCase('Deferred open() is patch-safe', {
6542 { key : 'key' , value : 'v' , type : 'put' } ,
6643 { key : 'key2' , value : 'v2' , type : 'put' }
6744 ] , function ( ) {
68- assert . equals ( called , 1 )
45+ t . is ( called , 1 )
6946 done ( )
7047 } )
71- } )
72- } )
48+ } ) )
49+
50+ function makeTest ( fn ) {
51+ return function ( t ) {
52+ // 1) open database without callback, opens in next tick
53+ var db = testCommon . factory ( )
54+
55+ fn ( t , db , function ( err ) {
56+ t . ifError ( err , 'no test error' )
57+ db . close ( t . end . bind ( t ) )
58+ } )
59+
60+ // we should still be in a state of limbo down here, not opened or closed, but 'new'
61+ t . is ( db . isOpen ( ) , false )
62+ t . is ( db . isClosed ( ) , false )
63+ }
64+ }
65+ }
0 commit comments