overleaf/services/track-changes/test/acceptance/coffee/AppendingUpdatesTests.coffee
2014-01-27 18:20:38 +00:00

115 lines
2.9 KiB
CoffeeScript

sinon = require "sinon"
chai = require("chai")
chai.should()
mongojs = require "../../../app/js/mongojs"
db = mongojs.db
ObjectId = mongojs.ObjectId
Settings = require "settings-sharelatex"
request = require "request"
describe "Appending doc ops to the history", ->
describe "when the history does not exist yet", ->
before (done) ->
@doc_id = ObjectId().toString()
@user_id = ObjectId().toString()
updates = [{
op: [{ i: "f", p: 3 }]
meta: { ts: Date.now(), user_id: @user_id }
}, {
op: [{ i: "o", p: 4 }]
meta: { ts: Date.now(), user_id: @user_id }
}, {
op: [{ i: "o", p: 5 }]
meta: { ts: Date.now(), user_id: @user_id }
}]
@version = 3
request.post {
url: "http://localhost:#{Settings.port}/doc/#{@doc_id}/history"
json:
version: @version
docOps: updates
}, (@error, @response, @body) =>
done()
it "should return a successful response", ->
@response.statusCode.should.equal 204
describe "when the history has already been started", ->
beforeEach (done) ->
@doc_id = ObjectId().toString()
@user_id = ObjectId().toString()
updates = [{
op: [{ i: "f", p: 3 }]
meta: { ts: Date.now(), user_id: @user_id }
}, {
op: [{ i: "o", p: 4 }]
meta: { ts: Date.now(), user_id: @user_id }
}, {
op: [{ i: "o", p: 5 }]
meta: { ts: Date.now(), user_id: @user_id }
}]
@version = 3
request.post {
url: "http://localhost:#{Settings.port}/doc/#{@doc_id}/history"
json:
version: @version
docOps: updates
}, (@error, @response, @body) =>
done()
describe "when the updates are recent and from the same user", ->
beforeEach (done) ->
updates = [{
op: [{ i: "b", p: 6 }]
meta: { ts: Date.now(), user_id: @user_id }
}, {
op: [{ i: "a", p: 7 }]
meta: { ts: Date.now(), user_id: @user_id }
}, {
op: [{ i: "r", p: 8 }]
meta: { ts: Date.now(), user_id: @user_id }
}]
@version = 6
request.post {
url: "http://localhost:#{Settings.port}/doc/#{@doc_id}/history"
json:
version: @version
docOps: updates
}, (@error, @response, @body) =>
done()
it "should return a successful response", ->
@response.statusCode.should.equal 204
describe "when the updates are far apart", ->
beforeEach (done) ->
oneDay = 24 * 60 * 60 * 1000
updates = [{
op: [{ i: "b", p: 6 }]
meta: { ts: Date.now() + oneDay, user_id: @user_id }
}, {
op: [{ i: "a", p: 7 }]
meta: { ts: Date.now() + oneDay, user_id: @user_id }
}, {
op: [{ i: "r", p: 8 }]
meta: { ts: Date.now() + oneDay, user_id: @user_id }
}]
@version = 6
request.post {
url: "http://localhost:#{Settings.port}/doc/#{@doc_id}/history"
json:
version: @version
docOps: updates
}, (@error, @response, @body) =>
done()
it "should return a successful response", ->
@response.statusCode.should.equal 204