Add acceptance tests for multiple appends

This commit is contained in:
James Allen 2014-01-27 18:20:38 +00:00
parent d4295c2023
commit d040e7c410
2 changed files with 80 additions and 3 deletions

View file

@ -14,7 +14,7 @@ module.exports = HistoryManager =
return callback null, compressedUpdates[0] or null return callback null, compressedUpdates[0] or null
deleteCompressedUpdate: (id, callback = (error) ->) -> deleteCompressedUpdate: (id, callback = (error) ->) ->
db.docHistory.delete({ _id: ObjectId(id.toString()) }, callback) db.docHistory.remove({ _id: ObjectId(id.toString()) }, callback)
popLastCompressedUpdate: (doc_id, callback = (error, update) ->) -> popLastCompressedUpdate: (doc_id, callback = (error, update) ->) ->
HistoryManager.getLastCompressedUpdate doc_id, (error, update) -> HistoryManager.getLastCompressedUpdate doc_id, (error, update) ->

View file

@ -12,7 +12,7 @@ describe "Appending doc ops to the history", ->
before (done) -> before (done) ->
@doc_id = ObjectId().toString() @doc_id = ObjectId().toString()
@user_id = ObjectId().toString() @user_id = ObjectId().toString()
@updates = [{ updates = [{
op: [{ i: "f", p: 3 }] op: [{ i: "f", p: 3 }]
meta: { ts: Date.now(), user_id: @user_id } meta: { ts: Date.now(), user_id: @user_id }
}, { }, {
@ -28,7 +28,84 @@ describe "Appending doc ops to the history", ->
url: "http://localhost:#{Settings.port}/doc/#{@doc_id}/history" url: "http://localhost:#{Settings.port}/doc/#{@doc_id}/history"
json: json:
version: @version version: @version
docOps: @updates 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) => }, (@error, @response, @body) =>
done() done()