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

add unit tests for project history resync

Hayden Faulds 8 лет назад
Родитель
Сommit
50fdfec6e8

+ 22 - 0
services/web/test/unit/coffee/History/HistoryControllerTests.coffee

@@ -17,6 +17,7 @@ describe "HistoryController", ->
 			"./HistoryManager": @HistoryManager = {}
 			"./HistoryManager": @HistoryManager = {}
 			"../Authentication/AuthenticationController": @AuthenticationController
 			"../Authentication/AuthenticationController": @AuthenticationController
 			"../Project/ProjectDetailsHandler": @ProjectDetailsHandler = {}
 			"../Project/ProjectDetailsHandler": @ProjectDetailsHandler = {}
+			"../Project/ProjectEntityUpdateHandler": @ProjectEntityUpdateHandler = {}
 		@settings.apis =
 		@settings.apis =
 			trackchanges:
 			trackchanges:
 				enabled: false
 				enabled: false
@@ -199,3 +200,24 @@ describe "HistoryController", ->
 
 
 		it "should not return the data with users to the client", ->
 		it "should not return the data with users to the client", ->
 			@res.json.calledWith(@data_with_users).should.equal false
 			@res.json.calledWith(@data_with_users).should.equal false
+
+	describe "resyncProject", ->
+		beforeEach ->
+			@project_id = 'mock-project-id'
+			@req = params: Project_id: @project_id
+			@res = sendStatus: sinon.stub()
+			@next = sinon.stub()
+
+			@ProjectEntityUpdateHandler.resyncProject = sinon.stub().yields()
+
+			@HistoryController.resyncProject @req, @res, @next
+
+		it "resyncs the project", ->
+			@ProjectEntityUpdateHandler.resyncProject
+				.calledWith(@project_id)
+				.should.equal true
+
+		it "responds with a 204", ->
+			@res.sendStatus
+				.calledWith(204)
+				.should.equal true

+ 45 - 0
services/web/test/unit/coffee/Project/ProjectEntityUpdateHandlerTests.coffee

@@ -745,6 +745,51 @@ describe 'ProjectEntityUpdateHandler', ->
 				.calledWith(project_id, userId, @changes, @callback)
 				.calledWith(project_id, userId, @changes, @callback)
 				.should.equal true
 				.should.equal true
 
 
+	describe "resyncProject", ->
+		beforeEach ->
+			@ProjectGetter.getProject = sinon.stub().yields(null, @project)
+			docs = [
+				doc: _id: doc_id
+				path: 'main.tex'
+			]
+			files = [
+				file: _id: file_id
+				path: 'universe.png'
+			]
+			@ProjectEntityHandler.getAllEntitiesFromProject = sinon.stub().yields(null, docs, files)
+			@FileStoreHandler._buildUrl = (project_id, file_id) ->
+				"www.filestore.test/#{project_id}/#{file_id}"
+			@DocumentUpdaterHandler.resyncProject = sinon.stub().yields()
+
+			@ProjectEntityUpdateHandler.resyncProject project_id, @callback
+
+		it 'gets the project', ->
+			@ProjectGetter.getProject
+				.calledWith(project_id)
+				.should.equal true
+
+		it 'gets the entities for the project', ->
+			@ProjectEntityHandler.getAllEntitiesFromProject
+				.calledWith(@project)
+				.should.equal true
+
+		it 'tells the doc updater to sync the project', ->
+			docs = [
+				doc: doc_id
+				path: 'main.tex'
+			]
+			files = [
+				file: file_id
+				path: 'universe.png'
+				url: "www.filestore.test/#{project_id}/#{file_id}"
+			]
+			@DocumentUpdaterHandler.resyncProject
+				.calledWith(project_id, docs, files)
+				.should.equal true
+
+		it 'calls the callback', ->
+			@callback.called.should.equal true
+
 	describe "_cleanUpEntity", ->
 	describe "_cleanUpEntity", ->
 		beforeEach ->
 		beforeEach ->
 			@entity_id = "4eecaffcbffa66588e000009"
 			@entity_id = "4eecaffcbffa66588e000009"