فهرست منبع

add unit tests

Brian Gough 7 سال پیش
والد
کامیت
984b2d38e6

+ 16 - 1
services/document-updater/test/unit/coffee/ShareJsUpdateManager/ShareJsUpdateManagerTests.coffee

@@ -3,6 +3,7 @@ chai = require('chai')
 should = chai.should()
 modulePath = "../../../../app/js/ShareJsUpdateManager.js"
 SandboxedModule = require('sandboxed-module')
+crypto = require('crypto')
 
 describe "ShareJsUpdateManager", ->
 	beforeEach ->
@@ -26,8 +27,10 @@ describe "ShareJsUpdateManager", ->
 		beforeEach ->
 			@lines = ["one", "two"]
 			@version = 34
-			@update = {p: 4, t: "foo"}
 			@updatedDocLines = ["onefoo", "two"]
+			content = @updatedDocLines.join("\n")
+			@hash = crypto.createHash('sha1').update("blob " + content.length + "\x00").update(content, 'utf8').digest('hex')
+			@update = {p: 4, t: "foo", v:@version, hash:@hash}
 			@model =
 				applyOp: sinon.stub().callsArg(2)
 				getSnapshot: sinon.stub()
@@ -90,6 +93,18 @@ describe "ShareJsUpdateManager", ->
 			it "should call the callback with the error", ->
 				@callback.calledWith(@error).should.equal true
 
+		describe "with an invalid hash", ->
+			beforeEach (done) ->
+				@error = new Error("invalid hash")
+				@model.getSnapshot.callsArgWith(1, null, {snapshot: "unexpected content", v: @version})
+				@model.db.appliedOps["#{@project_id}:#{@doc_id}"] = @appliedOps = ["mock-ops"]
+				@ShareJsUpdateManager.applyUpdate @project_id, @doc_id, @update, @lines, @version, (err, docLines, version, appliedOps) =>
+					@callback(err, docLines, version, appliedOps)
+					done()
+
+			it "should call the callback with the error", ->
+				@callback.calledWith(@error).should.equal true
+
 	describe "_listenForOps", ->
 		beforeEach ->
 			@model = on: (event, callback) =>