1
0
Fork 0
mirror of https://github.com/overleaf/overleaf.git synced 2025-04-17 08:37:40 +00:00

Unit test accept changes in the ranges manager.

This commit is contained in:
Paulo Reis 2017-05-12 14:42:40 +01:00
parent d53266ea2d
commit 36d16a76e0

View file

@ -10,6 +10,7 @@ describe "RangesManager", ->
@RangesManager = SandboxedModule.require modulePath,
requires:
"logger-sharelatex": @logger = { error: sinon.stub(), log: sinon.stub(), warn: sinon.stub() }
@doc_id = "doc-id-123"
@project_id = "project-id-123"
@user_id = "user-id-123"
@ -181,24 +182,104 @@ describe "RangesManager", ->
describe "acceptChanges", ->
beforeEach ->
@ranges = { entries: "mock", comments: "mock" }
@RangesManager = SandboxedModule.require modulePath,
requires:
"logger-sharelatex": @logger = { error: sinon.stub(), log: sinon.stub(), warn: sinon.stub() }
"./RangesTracker":@RangesTracker = SandboxedModule.require "../../../../app/js/RangesTracker.js"
@ranges = {
comments: []
changes: [{
id: "a1"
op:
i: "lorem"
p: 0
}, {
id: "a2"
op:
i: "ipsum"
p: 10
}, {
id: "a3"
op:
i: "dolor"
p: 20
}, {
id: "a4"
op:
i: "sit"
p: 30
}, {
id: "a5"
op:
i: "amet"
p: 40
}]
}
@removeChangeIdsSpy = sinon.spy @RangesTracker.prototype, "removeChangeIds"
describe "successfully with a single change", ->
beforeEach ->
@change_id = "mock-change-id"
@RangesManager.acceptChanges [ @change_id ], @ranges
beforeEach (done) ->
@change_ids = [ @ranges.changes[1].id ]
@RangesManager.acceptChanges @change_ids, @ranges, (err, ranges) =>
@rangesResponse = ranges
done()
it "should log the call with the correct number of changes", ->
@logger.log
.calledWith("accepting 1 changes in ranges")
.should.equal true
it "should delegate the change removal to the ranges tracker", ->
@removeChangeIdsSpy
.calledWith(@change_ids)
.should.equal true
it "should remove the change", ->
expect(@rangesResponse.changes
.find((change) => change.id == @ranges.changes[1].id))
.to.be.undefined
it "should return the original number of changes minus 1", ->
@rangesResponse.changes.length
.should.equal @ranges.changes.length - 1
it "should not touch other changes", ->
for i in [ 0, 2, 3, 4]
expect(@rangesResponse.changes
.find((change) => change.id == @ranges.changes[i].id))
.to.deep.equal @ranges.changes[i]
describe "successfully with multiple changes", ->
beforeEach ->
@change_ids = [ "mock-change-id-1", "mock-change-id-2", "mock-change-id-3", "mock-change-id-4" ]
@RangesManager.acceptChanges @change_ids, @ranges
beforeEach (done) ->
@change_ids = [ @ranges.changes[1].id, @ranges.changes[3].id, @ranges.changes[4].id ]
@RangesManager.acceptChanges @change_ids, @ranges, (err, ranges) =>
@rangesResponse = ranges
done()
it "should log the call with the correct number of changes", ->
@logger.log
.calledWith("accepting #{ @change_ids.length } changes in ranges")
.should.equal true
it "should delegate the change removal to the ranges tracker", ->
@removeChangeIdsSpy
.calledWith(@change_ids)
.should.equal true
it "should remove the changes", ->
for i in [ 1, 3, 4]
expect(@rangesResponse.changes
.find((change) => change.id == @ranges.changes[1].id))
.to.be.undefined
it "should return the original number of changes minus the number of accepted changes", ->
@rangesResponse.changes.length
.should.equal @ranges.changes.length - 3
it "should not touch other changes", ->
for i in [ 0, 2 ]
expect(@rangesResponse.changes
.find((change) => change.id == @ranges.changes[i].id))
.to.deep.equal @ranges.changes[i]