Comparing version 0.10.1 to 0.10.2
{ | ||
"name": "sharedb", | ||
"version": "0.10.1", | ||
"version": "0.10.2", | ||
"description": "JSON OT database backend", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -283,8 +283,26 @@ var Backend = require('../../lib/backend'); | ||
if (err) return done(err); | ||
doc.submitOp({p: ['age'], na: 2}); | ||
var count = 0; | ||
doc.submitOp({p: ['age'], na: 2}, function(err) { | ||
count++; | ||
if (err) return done(err); | ||
if (count === 1) { | ||
expect(doc.data).eql({age: 5}); | ||
expect(doc.version).eql(2); | ||
} else { | ||
expect(doc.data).eql({age: 12}); | ||
expect(doc.version).eql(3); | ||
done(); | ||
} | ||
}); | ||
doc2.submitOp({p: ['age'], na: 7}, function(err) { | ||
count++; | ||
if (err) return done(err); | ||
expect(doc2.data).eql({age: 12}); | ||
expect(doc2.version).eql(3); | ||
done(); | ||
if (count === 1) { | ||
expect(doc2.data).eql({age: 10}); | ||
expect(doc2.version).eql(2); | ||
} else { | ||
expect(doc2.data).eql({age: 12}); | ||
expect(doc2.version).eql(3); | ||
done(); | ||
} | ||
}); | ||
@@ -299,8 +317,28 @@ }); | ||
var doc2 = backend.connect().get('dogs', 'fido'); | ||
doc.create({age: 3}); | ||
var count = 0; | ||
doc.create({age: 3}, function(err) { | ||
count++; | ||
if (count === 1) { | ||
if (err) return done(err); | ||
expect(doc.version).eql(1); | ||
expect(doc.data).eql({age: 3}); | ||
} else { | ||
expect(err).ok(); | ||
expect(doc.version).eql(1); | ||
expect(doc.data).eql({age: 5}); | ||
done(); | ||
} | ||
}); | ||
doc2.create({age: 5}, function(err) { | ||
expect(err).ok(); | ||
expect(doc2.version).eql(1); | ||
expect(doc2.data).eql({age: 3}); | ||
done(); | ||
count++; | ||
if (count === 1) { | ||
if (err) return done(err); | ||
expect(doc2.version).eql(1); | ||
expect(doc2.data).eql({age: 5}); | ||
} else { | ||
expect(err).ok(); | ||
expect(doc2.version).eql(1); | ||
expect(doc2.data).eql({age: 3}); | ||
done(); | ||
} | ||
}); | ||
@@ -317,8 +355,26 @@ }); | ||
if (err) return done(err); | ||
doc.del(); | ||
var count = 0; | ||
doc.del(function(err) { | ||
count++; | ||
if (err) return done(err); | ||
if (count === 1) { | ||
expect(doc.version).eql(2); | ||
expect(doc.data).eql(undefined); | ||
} else { | ||
expect(doc.version).eql(3); | ||
expect(doc.data).eql(undefined); | ||
done(); | ||
} | ||
}); | ||
doc2.del(function(err) { | ||
count++; | ||
if (err) return done(err); | ||
expect(doc2.version).eql(3); | ||
expect(doc2.data).eql(undefined); | ||
done(); | ||
if (count === 1) { | ||
expect(doc2.version).eql(2); | ||
expect(doc2.data).eql(undefined); | ||
} else { | ||
expect(doc2.version).eql(3); | ||
expect(doc2.data).eql(undefined); | ||
done(); | ||
} | ||
}); | ||
@@ -325,0 +381,0 @@ }); |
@@ -31,2 +31,6 @@ var async = require('async'); | ||
if (err) return callback(err); | ||
if (snapshot.v !== op.v) { | ||
var succeeded = false; | ||
return callback(null, succeeded); | ||
} | ||
var err = ot.apply(snapshot, op); | ||
@@ -99,2 +103,19 @@ if (err) return callback(err); | ||
function testDelCommit(ops, snapshot) { | ||
expect(snapshot.v).equal(2); | ||
expect(ops.length).equal(2); | ||
expect(snapshot.data).equal(undefined); | ||
expect(snapshot.type).equal(null); | ||
expect(ops[0].create).ok(); | ||
expect(ops[1].del).equal(true); | ||
} | ||
function testOpOrDelCommit(ops, snapshot) { | ||
if (ops[1].op) { | ||
testOpCommit(ops, snapshot); | ||
} else { | ||
testDelCommit(ops, snapshot); | ||
} | ||
} | ||
it('one commit succeeds from 2 simultaneous ops', function(done) { | ||
@@ -127,11 +148,2 @@ var ops = [ | ||
function testDelCommit(ops, snapshot) { | ||
expect(snapshot.v).equal(2); | ||
expect(ops.length).equal(2); | ||
expect(snapshot.data).equal(undefined); | ||
expect(snapshot.type).equal(null); | ||
expect(ops[0].create).ok(); | ||
expect(ops[1].del).equal(true); | ||
} | ||
it('one commit succeeds from 2 simultaneous deletes', function(done) { | ||
@@ -172,3 +184,3 @@ var ops = [ | ||
if (err) return done(err); | ||
commitConcurrent(db, ops, testDelCommit, done); | ||
commitConcurrent(db, ops, testOpOrDelCommit, done); | ||
}); | ||
@@ -185,3 +197,3 @@ }); | ||
if (err) return done(err); | ||
commitConcurrent(db, ops, testOpCommit, done); | ||
commitConcurrent(db, ops, testOpOrDelCommit, done); | ||
}); | ||
@@ -188,0 +200,0 @@ }); |
278570
4920