| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- chai = require('chai')
- assert = require('chai').assert
- should = chai.should()
- expect = chai.expect
- sinon = require 'sinon'
- modulePath = "../../../../app/js/Features/Project/ProjectHistoryHandler"
- SandboxedModule = require('sandboxed-module')
- ObjectId = require("mongoose").Types.ObjectId
- describe 'ProjectHistoryHandler', ->
- project_id = '4eecb1c1bffa66588e0000a1'
- userId = 1234
- beforeEach ->
- @ProjectModel = class Project
- constructor:(options)->
- @._id = project_id
- @name = "project_name_here"
- @rev = 0
- rootFolder:[@rootFolder]
- @project = new @ProjectModel()
- @callback = sinon.stub()
- @ProjectHistoryHandler = SandboxedModule.require modulePath, requires:
- 'logger-sharelatex': @logger = {log:sinon.stub(), error: sinon.stub(), err:->}
- 'settings-sharelatex': @Settings = {}
- '../../models/Project': Project:@ProjectModel
- './ProjectDetailsHandler': @ProjectDetailsHandler = {}
- '../History/HistoryManager': @HistoryManager = {}
- './ProjectEntityUpdateHandler': @ProjectEntityUpdateHandler = {}
- describe "starting history for an existing project", ->
- beforeEach ->
- @newHistoryId = 123456789
- @HistoryManager.initializeProject = sinon.stub().callsArgWith(0, null, {overleaf_id: @newHistoryId})
- @HistoryManager.flushProject = sinon.stub().callsArg(1)
- @ProjectEntityUpdateHandler.resyncProjectHistory = sinon.stub().callsArg(1)
- describe "when the history does not already exist", ->
- beforeEach ->
- @ProjectDetailsHandler.getDetails = sinon.stub().withArgs(project_id).callsArgWith(1, null, @project)
- @ProjectModel.update = sinon.stub().callsArgWith(2,null,{n:1})
- @ProjectHistoryHandler.ensureHistoryExistsForProject project_id, @callback
- it "should get any existing history id for the project", ->
- @ProjectDetailsHandler.getDetails
- .calledWith(project_id)
- .should.equal true
- it "should initialize a new history in the v1 history service", ->
- @HistoryManager.initializeProject
- .called.should.equal.true
-
- it "should set the new history id on the project", ->
- @ProjectModel.update
- .calledWith({_id: project_id, "overleaf.history.id": {$exists:false}}, {"overleaf.history.id":@newHistoryId})
- .should.equal true
- it "should resync the project history", ->
- @ProjectEntityUpdateHandler.resyncProjectHistory
- .calledWith(project_id)
- .should.equal true
- it "should flush the project history", ->
- @HistoryManager.flushProject
- .calledWith(project_id)
- .should.equal true
-
- it "should call the callback without an error", ->
- @callback.called.should.equal true
- describe "when the history already exists", ->
- beforeEach ->
- @project.overleaf = {history: {id: 1234}}
- @ProjectDetailsHandler.getDetails = sinon.stub().withArgs(project_id).callsArgWith(1, null, @project)
- @ProjectModel.update = sinon.stub()
- @ProjectHistoryHandler.ensureHistoryExistsForProject project_id, @callback
- it "should get any existing history id for the project", ->
- @ProjectDetailsHandler.getDetails
- .calledWith(project_id)
- .should.equal true
- it "should not initialize a new history in the v1 history service", ->
- @HistoryManager.initializeProject
- .called.should.equal false
-
- it "should not set the new history id on the project", ->
- @ProjectModel.update
- .called
- .should.equal false
- it "should not resync the project history", ->
- @ProjectEntityUpdateHandler.resyncProjectHistory
- .called
- .should.equal false
- it "should not flush the project history", ->
- @HistoryManager.flushProject
- .called
- .should.equal false
-
- it "should call the callback", ->
- @callback.calledWith().should.equal true
|