mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-14 15:33:29 +00:00
commit
99f896fa57
2 changed files with 17 additions and 2 deletions
services/document-updater
app/coffee
test/unit/coffee/ShareJsUpdateManager
|
@ -26,7 +26,7 @@ module.exports = ShareJsUpdateManager =
|
|||
logger.log project_id: project_id, doc_id: doc_id, update: update, "applying sharejs updates"
|
||||
jobs = []
|
||||
# record the update version before it is modified
|
||||
incomingUpdateVersion = update.version
|
||||
incomingUpdateVersion = update.v
|
||||
# We could use a global model for all docs, but we're hitting issues with the
|
||||
# internal state of ShareJS not being accessible for clearing caches, and
|
||||
# getting stuck due to queued callbacks (line 260 of sharejs/server/model.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) =>
|
||||
|
|
Loading…
Add table
Reference in a new issue