Просмотр исходного кода

Create HttpController for HTTP requestS

James Allen 12 лет назад
Родитель
Сommit
d4295c2023

+ 5 - 12
services/track-changes/app.coffee

@@ -1,19 +1,12 @@
 Settings = require "settings-sharelatex"
-express = require "express"
-app = express()
-
-HistoryManager = require "./app/js/HistoryManager"
 logger = require "logger-sharelatex"
 logger.initialize("history")
 
-app.post "/doc/:doc_id/history", express.bodyParser(), (req, res, next) ->
-	doc_id = req.params.doc_id
-	docOps  = req.body.docOps
-	version = req.body.version
-	logger.log doc_id: doc_id, version: version, "compressing doc history"
-	HistoryManager.compressAndSaveRawUpdates doc_id, docOps, (error) ->
-		return next(error) if error?
-		res.send 204
+HttpController = require "./app/js/HttpController"
+express = require "express"
+app = express()
+
+app.post "/doc/:doc_id/history", express.bodyParser(), HttpController.appendUpdates
 
 app.use (error, req, res, next) ->
 	logger.error err: error, "an internal error occured"

+ 12 - 0
services/track-changes/app/coffee/HttpController.coffee

@@ -0,0 +1,12 @@
+HistoryManager = require "./HistoryManager"
+logger = require "logger-sharelatex"
+
+module.exports = HttpController =
+	appendUpdates: (req, res, next = (error) ->) ->
+		doc_id = req.params.doc_id
+		docOps  = req.body.docOps
+		version = req.body.version
+		logger.log doc_id: doc_id, version: version, "compressing doc history"
+		HistoryManager.compressAndSaveRawUpdates doc_id, docOps, (error) ->
+			return next(error) if error?
+			res.send 204

+ 36 - 0
services/track-changes/test/unit/coffee/HttpController/HttpControllerTests.coffee

@@ -0,0 +1,36 @@
+sinon = require('sinon')
+chai = require('chai')
+should = chai.should()
+expect = chai.expect
+modulePath = "../../../../app/js/HttpController.js"
+SandboxedModule = require('sandboxed-module')
+
+describe "HttpController", ->
+	beforeEach ->
+		@HttpController = SandboxedModule.require modulePath, requires:
+			"logger-sharelatex": { log: sinon.stub() }
+			"./HistoryManager": @HistoryManager = {}
+		@doc_id = "doc-id-123"
+		@version = 42
+		@next = sinon.stub()
+
+	describe "appendUpdates", ->
+		beforeEach ->
+			@req =
+				params:
+					doc_id: @doc_id
+				body:
+					docOps: @docOps = ["mock-ops"]
+					version: @version
+			@res =
+				send: sinon.stub()
+			@HistoryManager.compressAndSaveRawUpdates = sinon.stub().callsArg(2)
+			@HttpController.appendUpdates @req, @res, @next
+
+		it "should append the updates", ->
+			@HistoryManager.compressAndSaveRawUpdates
+				.calledWith(@doc_id, @docOps)
+				.should.equal true
+
+		it "should return a success code", ->
+			@res.send.calledWith(204).should.equal true