overleaf/services/document-updater/test/unit/coffee/DiffCodec/DiffCodecTests.js

56 lines
1.5 KiB
JavaScript

sinon = require('sinon')
chai = require('chai')
should = chai.should()
expect = chai.expect
modulePath = "../../../../app/js/DiffCodec.js"
SandboxedModule = require('sandboxed-module')
describe "DiffCodec", ->
beforeEach ->
@callback = sinon.stub()
@DiffCodec = SandboxedModule.require modulePath
describe "diffAsShareJsOps", ->
it "should insert new text correctly", (done) ->
@before = ["hello world"]
@after = ["hello beautiful world"]
@DiffCodec.diffAsShareJsOp @before, @after, (error, ops) ->
expect(ops).to.deep.equal [
i: "beautiful "
p: 6
]
done()
it "should shift later inserts by previous inserts", (done) ->
@before = ["the boy played with the ball"]
@after = ["the tall boy played with the red ball"]
@DiffCodec.diffAsShareJsOp @before, @after, (error, ops) ->
expect(ops).to.deep.equal [
{ i: "tall ", p: 4 }
{ i: "red ", p: 29 }
]
done()
it "should delete text correctly", (done) ->
@before = ["hello beautiful world"]
@after = ["hello world"]
@DiffCodec.diffAsShareJsOp @before, @after, (error, ops) ->
expect(ops).to.deep.equal [
d: "beautiful "
p: 6
]
done()
it "should shift later deletes by the first deletes", (done) ->
@before = ["the tall boy played with the red ball"]
@after = ["the boy played with the ball"]
@DiffCodec.diffAsShareJsOp @before, @after, (error, ops) ->
expect(ops).to.deep.equal [
{ d: "tall ", p: 4 }
{ d: "red ", p: 24 }
]
done()