diff --git a/services/document-updater/test/acceptance/coffee/DeletingAProjectTests.coffee b/services/document-updater/test/acceptance/coffee/DeletingAProjectTests.coffee index 7a5eed5691..cb1d3495d8 100644 --- a/services/document-updater/test/acceptance/coffee/DeletingAProjectTests.coffee +++ b/services/document-updater/test/acceptance/coffee/DeletingAProjectTests.coffee @@ -41,17 +41,15 @@ describe "Deleting a project", -> version: doc.update.v } - sinon.spy MockTrackChangesApi, "flushDoc" - sinon.spy MockProjectHistoryApi, "flushProject" DocUpdaterApp.ensureRunning(done) - after -> - MockTrackChangesApi.flushDoc.restore() - MockProjectHistoryApi.flushProject.restore() describe "with documents which have been updated", -> before (done) -> sinon.spy MockWebApi, "setDocument" + sinon.spy MockTrackChangesApi, "flushDoc" + sinon.spy MockProjectHistoryApi, "flushProject" + async.series @docs.map((doc) => (callback) => DocUpdaterClient.preloadDoc @project_id, doc.id, (error) => @@ -68,6 +66,8 @@ describe "Deleting a project", -> after -> MockWebApi.setDocument.restore() + MockTrackChangesApi.flushDoc.restore() + MockProjectHistoryApi.flushProject.restore() it "should return a 204 status code", -> @statusCode.should.equal 204 @@ -96,3 +96,42 @@ describe "Deleting a project", -> it "should flush each doc in project history", -> MockProjectHistoryApi.flushProject.calledWith(@project_id).should.equal true + + describe "with the shutdown=true parameter from realtime", -> + before (done) -> + sinon.spy MockWebApi, "setDocument" + sinon.spy MockTrackChangesApi, "flushDoc" + sinon.spy MockProjectHistoryApi, "flushProject" + + async.series @docs.map((doc) => + (callback) => + DocUpdaterClient.preloadDoc @project_id, doc.id, callback + ), (error) => + throw error if error? + setTimeout () => + DocUpdaterClient.deleteProjectOnShutdown @project_id, (error, res, body) => + @statusCode = res.statusCode + done() + , 200 + + after -> + MockWebApi.setDocument.restore() + MockTrackChangesApi.flushDoc.restore() + MockProjectHistoryApi.flushProject.restore() + + it "should return a 204 status code", -> + @statusCode.should.equal 204 + + it "should send each document to the web api", -> + for doc in @docs + MockWebApi.setDocument + .calledWith(@project_id, doc.id, doc.updatedLines) + .should.equal true + + it "should flush each doc in track changes", -> + for doc in @docs + MockTrackChangesApi.flushDoc.calledWith(doc.id).should.equal true + + it "should not flush to project history", -> + MockProjectHistoryApi.flushProject.called.should.equal false + diff --git a/services/document-updater/test/acceptance/coffee/helpers/DocUpdaterClient.coffee b/services/document-updater/test/acceptance/coffee/helpers/DocUpdaterClient.coffee index 82dba20685..9525cc27e9 100644 --- a/services/document-updater/test/acceptance/coffee/helpers/DocUpdaterClient.coffee +++ b/services/document-updater/test/acceptance/coffee/helpers/DocUpdaterClient.coffee @@ -75,6 +75,9 @@ module.exports = DocUpdaterClient = deleteProject: (project_id, callback = () ->) -> request.del "http://localhost:3003/project/#{project_id}", callback + deleteProjectOnShutdown: (project_id, callback = () ->) -> + request.del "http://localhost:3003/project/#{project_id}?background=true&shutdown=true", callback + acceptChange: (project_id, doc_id, change_id, callback = () ->) -> request.post "http://localhost:3003/project/#{project_id}/doc/#{doc_id}/change/#{change_id}/accept", callback