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

Merge pull request #361 from sharelatex/ta-record-new-project-event

Record New Project Event
Shane Kilkelly 8 лет назад
Родитель
Сommit
2ceb7daa97

+ 13 - 2
services/web/app/coffee/Features/Project/ProjectCreationHandler.coffee

@@ -12,6 +12,7 @@ User = require('../../models/User').User
 fs = require('fs')
 Path = require "path"
 _ = require "underscore"
+AnalyticsManger = require("../Analytics/AnalyticsManager")
 
 module.exports = ProjectCreationHandler =
 
@@ -25,11 +26,21 @@ module.exports = ProjectCreationHandler =
 			return callback(error) if error?
 			logger.log owner_id:owner_id, projectName:projectName, "creating blank project"
 			if projectHistoryId?
-				ProjectCreationHandler._createBlankProject owner_id, projectName, projectHistoryId, callback
+				ProjectCreationHandler._createBlankProject owner_id, projectName, projectHistoryId, (error, project) ->
+					return callback(error) if error?
+					AnalyticsManger.recordEvent(
+						owner_id, 'project-imported', { projectId: project._id, projectHistoryId: projectHistoryId }
+					)
+					callback(error, project)
 			else
 				HistoryManager.initializeProject (error, history) ->
 					return callback(error) if error?
-					ProjectCreationHandler._createBlankProject owner_id, projectName, history?.overleaf_id, callback
+					ProjectCreationHandler._createBlankProject owner_id, projectName, history?.overleaf_id, (error, project) ->
+						return callback(error) if error?
+						AnalyticsManger.recordEvent(
+							owner_id, 'project-created', { projectId: project._id }
+						)
+						callback(error, project)
 
 	_createBlankProject : (owner_id, projectName, projectHistoryId, callback = (error, project) ->)->
 		rootFolder = new Folder {'name':'rootFolder'}

+ 20 - 0
services/web/test/unit/coffee/Project/ProjectCreationHandlerTests.coffee

@@ -52,6 +52,8 @@ describe 'ProjectCreationHandler', ->
 
 		@Settings = apis: { project_history: {} }
 
+		@AnalyticsManager = recordEvent: sinon.stub()
+
 		@handler = SandboxedModule.require modulePath, requires:
 			'../../models/User': User:@User
 			'../../models/Project':{Project:@ProjectModel}
@@ -60,6 +62,7 @@ describe 'ProjectCreationHandler', ->
 			'./ProjectEntityUpdateHandler':@ProjectEntityUpdateHandler
 			"./ProjectDetailsHandler":@ProjectDetailsHandler
 			"settings-sharelatex": @Settings
+			"../Analytics/AnalyticsManager": @AnalyticsManager
 			'logger-sharelatex': {log:->}
 			"metrics-sharelatex": {
 				inc: ()->,
@@ -128,6 +131,23 @@ describe 'ProjectCreationHandler', ->
 					expect(project.overleaf.history.display).to.equal true
 					done()
 
+			it "should send a project-created event to analytics", (done) ->
+				@handler.createBlankProject ownerId, projectName, (err, project) =>
+					expect(@AnalyticsManager.recordEvent.callCount).to.equal 1
+					expect(
+						@AnalyticsManager.recordEvent.calledWith(ownerId, 'project-created')
+					).to.equal true
+					done()
+
+			it "should send a project-imported event when importing a project", (done) ->
+				@handler.createBlankProject ownerId, projectName, 1234, (err, project) =>
+					expect(@AnalyticsManager.recordEvent.callCount).to.equal 1
+					expect(
+						@AnalyticsManager.recordEvent.calledWith(ownerId, 'project-imported')
+					).to.equal true
+					done()
+
+
 		describe "with an error", ->
 			beforeEach ->
 				@ProjectModel::save = sinon.stub().callsArgWith(0, new Error("something went wrong"))