| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- should = require('chai').should()
- SandboxedModule = require('sandboxed-module')
- assert = require('assert')
- path = require('path')
- modulePath = path.join __dirname, '../../../../app/js/Features/Analytics/AnalyticsController'
- sinon = require("sinon")
- expect = require("chai").expect
- describe 'AnalyticsController', ->
- beforeEach ->
- @AuthenticationController =
- getLoggedInUserId: sinon.stub()
- @AnalyticsManager =
- updateEditingSession: sinon.stub().callsArgWith(3)
- recordEvent: sinon.stub().callsArgWith(3)
- @controller = SandboxedModule.require modulePath, requires:
- "./AnalyticsManager":@AnalyticsManager
- "../Authentication/AuthenticationController":@AuthenticationController
- "logger-sharelatex":
- log:->
- '../../infrastructure/GeoIpLookup': @GeoIpLookup =
- getDetails: sinon.stub()
- @res =
- send:->
- describe "updateEditingSession", ->
- beforeEach ->
- @req =
- params:
- projectId: "a project id"
- @GeoIpLookup.getDetails = sinon.stub()
- .callsArgWith(1, null, {country_code: 'XY'})
- it "delegates to the AnalyticsManager", (done) ->
- @AuthenticationController.getLoggedInUserId.returns("1234")
- @controller.updateEditingSession @req, @res
- @AnalyticsManager.updateEditingSession.calledWith(
- "1234",
- "a project id",
- 'XY'
- ).should.equal true
- done()
- describe "recordEvent", ->
- beforeEach ->
- @req =
- params:
- event:"i_did_something"
- body:"stuff"
- sessionID: "sessionIDHere"
- session: {}
- it "should use the user_id", (done)->
- @AuthenticationController.getLoggedInUserId.returns("1234")
- @controller.recordEvent @req, @res
- @AnalyticsManager.recordEvent.calledWith("1234", @req.params["event"], @req.body).should.equal true
- done()
- it "should use the session id", (done)->
- @controller.recordEvent @req, @res
- @AnalyticsManager.recordEvent.calledWith(@req.sessionID, @req.params["event"], @req.body).should.equal true
- done()
|