Bladeren bron

update tests

Brian Gough 10 jaren geleden
bovenliggende
commit
e2e8292590
1 gewijzigde bestanden met toevoegingen van 117 en 126 verwijderingen
  1. 117 126
      services/track-changes/test/unit/coffee/UpdatesManager/UpdatesManagerTests.coffee

+ 117 - 126
services/track-changes/test/unit/coffee/UpdatesManager/UpdatesManagerTests.coffee

@@ -333,52 +333,43 @@ describe "UpdatesManager", ->
 		it "should call the callback", ->
 		it "should call the callback", ->
 			@callback.called.should.equal true
 			@callback.called.should.equal true
 
 
+	describe "getSummarizedProjectUpdates", ->
+		beforeEach ->
+			@updates = [{doc_id: 123, v:456, op: "mock-updates", meta: {user_id: 123, start_ts: 1233, end_ts:1234}}]
+			@options = { before: "mock-before", limit: "mock-limit" }
+			@summarizedUpdates = [
+				{meta: {user_ids: [123], start_ts: 1233, end_ts:1234},docs:{"123":{fromV:456,toV:456}}}
+			]
+			@updatesWithUserInfo = ["updates-with-user-info"]
+			@done_state = false
+			@iterator =
+				next: (cb) =>
+					@done_state = true
+					cb(null, @updates)
+				done: () =>
+					@done_state
+			@PackManager.makeProjectIterator = sinon.stub().callsArgWith(2, null, @iterator)
+			@UpdatesManager.processUncompressedUpdatesForProject = sinon.stub().callsArg(1)
+			@UpdatesManager.fillSummarizedUserInfo = sinon.stub().callsArgWith(1, null, @updatesWithUserInfo)
+			@UpdatesManager.getSummarizedProjectUpdates @project_id, @options, @callback
+
+		it "should process any outstanding updates", ->
+			@UpdatesManager.processUncompressedUpdatesForProject
+				.calledWith(@project_id)
+				.should.equal true
 
 
-	# describe "getProjectUpdates", ->
-	# 	beforeEach ->
-	# 		@updates = ["mock-updates"]
-	# 		@options = { before: "mock-before", limit: "mock-limit" }
-	# 		@MongoManager.getProjectUpdates = sinon.stub().callsArgWith(2, null, @updates)
-	# 		@UpdatesManager.processUncompressedUpdatesForProject = sinon.stub().callsArg(1)
-	# 		@UpdatesManager.getProjectUpdates @project_id, @options, @callback
-
-	# 	it "should process any outstanding updates", ->
-	# 		@UpdatesManager.processUncompressedUpdatesForProject
-	# 			.calledWith(@project_id)
-	# 			.should.equal true
-
-	# 	it "should get the updates from the database", ->
-	# 		@MongoManager.getProjectUpdates
-	# 			.calledWith(@project_id, @options)
-	# 			.should.equal true
-
-	# 	it "should return the updates", ->
-	# 		@callback
-	# 			.calledWith(null, @updates)
-	# 			.should.equal true
+		it "should get the updates", ->
+			@PackManager.makeProjectIterator
+				.calledWith(@project_id, @options.before)
+				.should.equal true
 
 
+		it "should fill the updates with the user info", ->
+			@UpdatesManager.fillSummarizedUserInfo
+				.calledWith(@summarizedUpdates)
+				.should.equal true
 
 
-	# describe "getProjectUpdatesWithUserInfo", ->
-	# 	beforeEach ->
-	# 		@updates = ["mock-updates"]
-	# 		@options = { before: "mock-before", limit: "mock-limit" }
-	# 		@updatesWithUserInfo = ["updates-with-user-info"]
-	# 		@UpdatesManager.getProjectUpdates = sinon.stub().callsArgWith(2, null, @updates)
-	# 		@UpdatesManager.fillUserInfo = sinon.stub().callsArgWith(1, null, @updatesWithUserInfo)
-	# 		@UpdatesManager.getProjectUpdatesWithUserInfo @project_id, @options, @callback
-
-	# 	it "should get the updates", ->
-	# 		@UpdatesManager.getProjectUpdates
-	# 			.calledWith(@project_id, @options)
-	# 			.should.equal true
-
-	# 	it "should file the updates with the user info", ->
-	# 		@UpdatesManager.fillUserInfo
-	# 			.calledWith(@updates)
-	# 			.should.equal true
-
-	# 	it "should return the updates with the filled details", ->
-	# 		@callback.calledWith(null, @updatesWithUserInfo).should.equal true
+		it "should return the updates with the filled details", ->
+			@callback.calledWith(null, @updatesWithUserInfo).should.equal true
 
 
 	# describe "_extendBatchOfSummarizedUpdates", ->
 	# describe "_extendBatchOfSummarizedUpdates", ->
 	# 	beforeEach ->
 	# 	beforeEach ->
@@ -485,93 +476,93 @@ describe "UpdatesManager", ->
 	# 		it "should call the callback with the updates", ->
 	# 		it "should call the callback with the updates", ->
 	# 			@callback.calledWith(null, @updates, null).should.equal true
 	# 			@callback.calledWith(null, @updates, null).should.equal true
 
 
-	# describe "fillUserInfo", ->
-	# 	describe "with valid users", ->
-	# 		beforeEach (done) ->
-	# 			{ObjectId} = require "mongojs"
-	# 			@user_id_1 = ObjectId().toString()
-	# 			@user_id_2 = ObjectId().toString()
-	# 			@updates = [{
-	# 				meta:
-	# 					user_id: @user_id_1
-	# 				op: "mock-op-1"
-	# 			}, {
-	# 				meta:
-	# 					user_id: @user_id_1
-	# 				op: "mock-op-2"
-	# 			}, {
-	# 				meta:
-	# 					user_id: @user_id_2
-	# 				op: "mock-op-3"
-	# 			}]
-	# 			@user_info = {}
-	# 			@user_info[@user_id_1] = email: "user1@sharelatex.com"
-	# 			@user_info[@user_id_2] = email: "user2@sharelatex.com"
+	describe "fillUserInfo", ->
+		describe "with valid users", ->
+			beforeEach (done) ->
+				{ObjectId} = require "mongojs"
+				@user_id_1 = ObjectId().toString()
+				@user_id_2 = ObjectId().toString()
+				@updates = [{
+					meta:
+						user_id: @user_id_1
+					op: "mock-op-1"
+				}, {
+					meta:
+						user_id: @user_id_1
+					op: "mock-op-2"
+				}, {
+					meta:
+						user_id: @user_id_2
+					op: "mock-op-3"
+				}]
+				@user_info = {}
+				@user_info[@user_id_1] = email: "user1@sharelatex.com"
+				@user_info[@user_id_2] = email: "user2@sharelatex.com"
 				
 				
-	# 			@WebApiManager.getUserInfo = (user_id, callback = (error, userInfo) ->) =>
-	# 				callback null, @user_info[user_id]
-	# 			sinon.spy @WebApiManager, "getUserInfo"
+				@WebApiManager.getUserInfo = (user_id, callback = (error, userInfo) ->) =>
+					callback null, @user_info[user_id]
+				sinon.spy @WebApiManager, "getUserInfo"
 
 
-	# 			@UpdatesManager.fillUserInfo @updates, (error, @results) =>
-	# 				done()
+				@UpdatesManager.fillUserInfo @updates, (error, @results) =>
+					done()
 
 
-	# 		it "should only call getUserInfo once for each user_id", ->
-	# 			@WebApiManager.getUserInfo.calledTwice.should.equal true
-	# 			@WebApiManager.getUserInfo
-	# 				.calledWith(@user_id_1)
-	# 				.should.equal true
-	# 			@WebApiManager.getUserInfo
-	# 				.calledWith(@user_id_2)
-	# 				.should.equal true
+			it "should only call getUserInfo once for each user_id", ->
+				@WebApiManager.getUserInfo.calledTwice.should.equal true
+				@WebApiManager.getUserInfo
+					.calledWith(@user_id_1)
+					.should.equal true
+				@WebApiManager.getUserInfo
+					.calledWith(@user_id_2)
+					.should.equal true
+
+			it "should return the updates with the user info filled", ->
+				expect(@results).to.deep.equal [{
+					meta:
+						user:
+							email: "user1@sharelatex.com"
+					op: "mock-op-1"
+				}, {
+					meta:
+						user:
+							email: "user1@sharelatex.com"
+					op: "mock-op-2"
+				}, {
+					meta:
+						user:
+							email: "user2@sharelatex.com"
+					op: "mock-op-3"
+				}]
+
+
+		describe "with invalid user ids", ->
+			beforeEach (done) ->
+				@updates = [{
+					meta:
+						user_id: null
+					op: "mock-op-1"
+				}, {
+					meta:
+						user_id: "anonymous-user"
+					op: "mock-op-2"
+				}]
+				@WebApiManager.getUserInfo = (user_id, callback = (error, userInfo) ->) =>
+					callback null, @user_info[user_id]
+				sinon.spy @WebApiManager, "getUserInfo"
+
+				@UpdatesManager.fillUserInfo @updates, (error, @results) =>
+					done()
 
 
-	# 		it "should return the updates with the user info filled", ->
-	# 			expect(@results).to.deep.equal [{
-	# 				meta:
-	# 					user:
-	# 						email: "user1@sharelatex.com"
-	# 				op: "mock-op-1"
-	# 			}, {
-	# 				meta:
-	# 					user:
-	# 						email: "user1@sharelatex.com"
-	# 				op: "mock-op-2"
-	# 			}, {
-	# 				meta:
-	# 					user:
-	# 						email: "user2@sharelatex.com"
-	# 				op: "mock-op-3"
-	# 			}]
-
-
-	# 	describe "with invalid user ids", ->
-	# 		beforeEach (done) ->
-	# 			@updates = [{
-	# 				meta:
-	# 					user_id: null
-	# 				op: "mock-op-1"
-	# 			}, {
-	# 				meta:
-	# 					user_id: "anonymous-user"
-	# 				op: "mock-op-2"
-	# 			}]
-	# 			@WebApiManager.getUserInfo = (user_id, callback = (error, userInfo) ->) =>
-	# 				callback null, @user_info[user_id]
-	# 			sinon.spy @WebApiManager, "getUserInfo"
-
-	# 			@UpdatesManager.fillUserInfo @updates, (error, @results) =>
-	# 				done()
-
-	# 		it "should not call getUserInfo", ->
-	# 			@WebApiManager.getUserInfo.called.should.equal false
-
-	# 		it "should return the updates without the user info filled", ->
-	# 			expect(@results).to.deep.equal [{
-	# 				meta: {}
-	# 				op: "mock-op-1"
-	# 			}, {
-	# 				meta: {}
-	# 				op: "mock-op-2"
-	# 			}]
+			it "should not call getUserInfo", ->
+				@WebApiManager.getUserInfo.called.should.equal false
+
+			it "should return the updates without the user info filled", ->
+				expect(@results).to.deep.equal [{
+					meta: {}
+					op: "mock-op-1"
+				}, {
+					meta: {}
+					op: "mock-op-2"
+				}]
 
 
 	describe "_summarizeUpdates", ->
 	describe "_summarizeUpdates", ->
 		beforeEach ->
 		beforeEach ->