Skip to content

Commit d6fbaef

Browse files
authored
Merge pull request #660 from share/create-error-fix
🐛 Fix error handling in `_fetchCreateOpVersion()`
2 parents 89b8237 + b539608 commit d6fbaef

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

lib/submit-request.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ SubmitRequest.prototype.submit = function(callback) {
110110
// must get the past ops and check their src and seq values to
111111
// differentiate.
112112
request._fetchCreateOpVersion(function(error, version) {
113-
if (err) return callback(err);
113+
if (error) return callback(error);
114114
if (version == null) {
115115
callback(request.alreadyCreatedError());
116116
} else {

test/client/submit.js

+23-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ var deserializedType = require('./deserialized-type');
66
var numberType = require('./number-type');
77
var errorHandler = require('../util').errorHandler;
88
var richText = require('rich-text');
9-
var MemoryDB = require('../../lib/db/memory');
109
types.register(deserializedType.type);
1110
types.register(deserializedType.type2);
1211
types.register(numberType.type);
@@ -222,8 +221,8 @@ module.exports = function() {
222221

223222
describe('no snapshot metadata available', function() {
224223
beforeEach(function() {
225-
var getSnapshot = MemoryDB.prototype.getSnapshot;
226-
sinon.stub(MemoryDB.prototype, 'getSnapshot')
224+
var getSnapshot = this.backend.db.getSnapshot;
225+
sinon.stub(this.backend.db, 'getSnapshot')
227226
.callsFake(function() {
228227
var args = Array.from(arguments);
229228
var callback = args.pop();
@@ -240,6 +239,27 @@ module.exports = function() {
240239
});
241240

242241
runCreateTests();
242+
243+
it('returns errors if the database cannot get committed op version', function(done) {
244+
sinon.stub(this.backend.db, 'getCommittedOpVersion')
245+
.callsFake(function() {
246+
var args = Array.from(arguments);
247+
var callback = args.pop();
248+
callback(new Error('uh-oh'));
249+
});
250+
251+
var doc1 = this.backend.connect().get('dogs', 'fido');
252+
var doc2 = this.backend.connect().get('dogs', 'fido');
253+
async.series([
254+
doc1.create.bind(doc1, {age: 3}),
255+
function(next) {
256+
doc2.create({name: 'Fido'}, function(error) {
257+
expect(error.message).to.equal('uh-oh');
258+
next();
259+
});
260+
}
261+
], done);
262+
});
243263
});
244264

245265
function runCreateTests() {

0 commit comments

Comments
 (0)