|
@@ -4,11 +4,8 @@ chai.should()
|
|
|
Settings = require('settings-sharelatex')
|
|
Settings = require('settings-sharelatex')
|
|
|
rclient_history = require("redis-sharelatex").createClient(Settings.redis.history)
|
|
rclient_history = require("redis-sharelatex").createClient(Settings.redis.history)
|
|
|
ProjectHistoryKeys = Settings.redis.project_history.key_schema
|
|
ProjectHistoryKeys = Settings.redis.project_history.key_schema
|
|
|
-SandboxedModule = require('sandboxed-module')
|
|
|
|
|
-HistoryManagerModulePath = require('path').join __dirname, '../../../app/js/HistoryManager.js'
|
|
|
|
|
-ProjectManagerModulePath = require('path').join __dirname, '../../../app/js/ProjectManager.js'
|
|
|
|
|
-RedisManagerModulePath = require('path').join __dirname, '../../../app/js/RedisManager.js'
|
|
|
|
|
|
|
|
|
|
|
|
+MockProjectHistoryApi = require "./helpers/MockProjectHistoryApi"
|
|
|
MockWebApi = require "./helpers/MockWebApi"
|
|
MockWebApi = require "./helpers/MockWebApi"
|
|
|
DocUpdaterClient = require "./helpers/DocUpdaterClient"
|
|
DocUpdaterClient = require "./helpers/DocUpdaterClient"
|
|
|
|
|
|
|
@@ -153,22 +150,6 @@ describe "Applying updates to a project's structure", ->
|
|
|
|
|
|
|
|
describe "with enough updates to flush to the history service", ->
|
|
describe "with enough updates to flush to the history service", ->
|
|
|
before (done) ->
|
|
before (done) ->
|
|
|
- @RedisManager = SandboxedModule.require RedisManagerModulePath, requires:
|
|
|
|
|
- "logger-sharelatex": @logger = { log: sinon.stub(), error: sinon.stub() }
|
|
|
|
|
- @HistoryManager = SandboxedModule.require HistoryManagerModulePath, requires:
|
|
|
|
|
- "request": {}
|
|
|
|
|
- "settings-sharelatex": {}
|
|
|
|
|
- "logger-sharelatex": @logger
|
|
|
|
|
- "./HistoryRedisManager": {}
|
|
|
|
|
- @HistoryManager.flushProjectChangesAsync = sinon.stub()
|
|
|
|
|
- @ProjectManager = SandboxedModule.require ProjectManagerModulePath, requires:
|
|
|
|
|
- './HistoryManager': @HistoryManager
|
|
|
|
|
- 'logger-sharelatex' : @logger
|
|
|
|
|
- './Metrics': @Metrics = {}
|
|
|
|
|
- './RedisManager': @RedisManager
|
|
|
|
|
- @Metrics.Timer = class Timer
|
|
|
|
|
- done: sinon.stub()
|
|
|
|
|
-
|
|
|
|
|
@project_id = DocUpdaterClient.randomId()
|
|
@project_id = DocUpdaterClient.randomId()
|
|
|
@user_id = DocUpdaterClient.randomId()
|
|
@user_id = DocUpdaterClient.randomId()
|
|
|
|
|
|
|
@@ -179,12 +160,19 @@ describe "Applying updates to a project's structure", ->
|
|
|
pathname: '/file-' + v
|
|
pathname: '/file-' + v
|
|
|
docLines: 'a\nb'
|
|
docLines: 'a\nb'
|
|
|
|
|
|
|
|
|
|
+ sinon.spy MockProjectHistoryApi, "flushProject"
|
|
|
|
|
+
|
|
|
# Send updates in chunks to causes multiple flushes
|
|
# Send updates in chunks to causes multiple flushes
|
|
|
- @ProjectManager.updateProjectWithLocks @project_id, @user_id, updates.slice(0, 250), [], (error) =>
|
|
|
|
|
|
|
+ projectId = @project_id
|
|
|
|
|
+ userId = @project_id
|
|
|
|
|
+ DocUpdaterClient.sendProjectUpdate projectId, userId, updates.slice(0, 250), [], (error) ->
|
|
|
throw error if error?
|
|
throw error if error?
|
|
|
- @ProjectManager.updateProjectWithLocks @project_id, @user_id, updates.slice(250), [], (error) =>
|
|
|
|
|
|
|
+ DocUpdaterClient.sendProjectUpdate projectId, userId, updates.slice(250), [], (error) ->
|
|
|
throw error if error?
|
|
throw error if error?
|
|
|
setTimeout done, 2000
|
|
setTimeout done, 2000
|
|
|
|
|
|
|
|
|
|
+ after ->
|
|
|
|
|
+ MockProjectHistoryApi.flushProject.restore()
|
|
|
|
|
+
|
|
|
it "should flush project history", ->
|
|
it "should flush project history", ->
|
|
|
- @HistoryManager.flushProjectChangesAsync.calledWith(@project_id).should.equal true
|
|
|
|
|
|
|
+ MockProjectHistoryApi.flushProject.calledWith(@project_id).should.equal true
|