فهرست منبع

Doc is always one version ahead of latest op version

James Allen 12 سال پیش
والد
کامیت
2e1307bd82

+ 1 - 1
services/track-changes/app/coffee/DiffManager.coffee

@@ -19,7 +19,7 @@ module.exports = DiffManager =
 			logger.log lines: lines, version: version, updates: updates, "got doc and updates"
 
 			lastUpdate = updates[0]
-			if lastUpdate? and lastUpdate.v != version
+			if lastUpdate? and lastUpdate.v != version - 1
 				return callback new Error("latest update version, #{lastUpdate.v}, does not match doc version, #{version}")
 
 			updatesToApply = []

+ 1 - 1
services/track-changes/test/acceptance/coffee/GettingADiffTests.coffee

@@ -49,7 +49,7 @@ describe "Getting a diff", ->
 
 		MockDocUpdaterApi.docs[@doc_id] =
 			lines: @lines
-			version: 6
+			version: 7
 
 		TrackChangesClient.pushRawUpdates @doc_id, @updates, (error) =>
 			throw error if error?

+ 4 - 2
services/track-changes/test/unit/coffee/DiffManager/DiffManagerTests.coffee

@@ -44,7 +44,9 @@ describe "DiffManager", ->
 	describe "getDiff", ->
 		beforeEach ->
 			@lines = [ "hello", "world" ]
-			@version = 42
+			# Op versions are the version they were applied to, so doc is always one version
+			# ahead.s
+			@version = 43
 			@updates = [
 				{ op: "mock-4", v: 42, meta: { start_ts: new Date(@to.getTime() + 20)} }
 				{ op: "mock-3", v: 41, meta: { start_ts: new Date(@to.getTime() + 10)} }
@@ -82,7 +84,7 @@ describe "DiffManager", ->
 
 		describe "with mismatching versions", ->
 			beforeEach ->
-				@version = 42
+				@version = 50
 				@updates = [ { op: "mock-1", v: 40 }, { op: "mock-1", v: 39 } ]
 				@DiffManager.getLatestDocAndUpdates = sinon.stub().callsArgWith(4, null, @lines, @version, @updates)
 				@DiffManager.getDiff @project_id, @doc_id, @from, @to, @callback