Skip to content

Commit f4effa3

Browse files
authored
Merge pull request #658 from share/create-collide-tests
✅ Add `OP_ALREADY_SUBMITTED` test for create ops
2 parents 7b20313 + 22e554d commit f4effa3

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

test/client/submit.js

+49
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,55 @@ module.exports = function() {
246246
});
247247
});
248248

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();
260+
});
261+
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+
});
268+
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) {
280+
var submitted = false;
281+
backend.use('submit', function(request, next) {
282+
if (!submitted) {
283+
submitted = true;
284+
connection2.close();
285+
backend.connect(connection2);
286+
}
287+
next();
288+
});
289+
290+
doc2.create({name: 'Fido'}, function(error) {
291+
expect(doc2.version).to.equal(3);
292+
next(error);
293+
});
294+
}
295+
], done);
296+
});
297+
249298
it('server fetches and transforms by already committed op', function(done) {
250299
var doc = this.backend.connect().get('dogs', 'fido');
251300
var doc2 = this.backend.connect().get('dogs', 'fido');

0 commit comments

Comments
 (0)