mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
Add an acceptance test for flushing project changes
This commit is contained in:
parent
d2865f0650
commit
bdaa2ffa77
1 changed files with 41 additions and 0 deletions
|
@ -4,6 +4,10 @@ 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'
|
||||||
|
|
||||||
MockWebApi = require "./helpers/MockWebApi"
|
MockWebApi = require "./helpers/MockWebApi"
|
||||||
DocUpdaterClient = require "./helpers/DocUpdaterClient"
|
DocUpdaterClient = require "./helpers/DocUpdaterClient"
|
||||||
|
@ -147,3 +151,40 @@ describe "Applying updates to a project's structure", ->
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
||||||
|
describe "with enough updates to flush to the history service", ->
|
||||||
|
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()
|
||||||
|
@user_id = DocUpdaterClient.randomId()
|
||||||
|
|
||||||
|
updates = []
|
||||||
|
for v in [0..599] # Should flush after 500 ops
|
||||||
|
updates.push
|
||||||
|
id: DocUpdaterClient.randomId(),
|
||||||
|
pathname: '/file-' + v
|
||||||
|
docLines: 'a\nb'
|
||||||
|
|
||||||
|
# Send updates in chunks to causes multiple flushes
|
||||||
|
@ProjectManager.updateProjectWithLocks @project_id, @user_id, updates.slice(0, 250), [], (error) =>
|
||||||
|
throw error if error?
|
||||||
|
@ProjectManager.updateProjectWithLocks @project_id, @user_id, updates.slice(250), [], (error) =>
|
||||||
|
throw error if error?
|
||||||
|
setTimeout done, 2000
|
||||||
|
|
||||||
|
it "should flush project history", ->
|
||||||
|
@HistoryManager.flushProjectChangesAsync.calledWith(@project_id).should.equal true
|
||||||
|
|
Loading…
Reference in a new issue