| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- sinon = require "sinon"
- chai = require("chai")
- chai.should()
- expect = chai.expect
- mongojs = require "../../../app/js/mongojs"
- ObjectId = mongojs.ObjectId
- Settings = require "settings-sharelatex"
- request = require "request"
- rclient = require("redis").createClient(Settings.redis.history) # Only works locally for now
- TrackChangesApp = require "./helpers/TrackChangesApp"
- TrackChangesClient = require "./helpers/TrackChangesClient"
- MockWebApi = require "./helpers/MockWebApi"
- describe "Flushing updates", ->
- before (done)->
- TrackChangesApp.ensureRunning done
- describe "flushing a doc's updates", ->
- before (done) ->
- @project_id = ObjectId().toString()
- @doc_id = ObjectId().toString()
- @user_id = ObjectId().toString()
- MockWebApi.projects[@project_id] = features: versioning: true
- TrackChangesClient.pushRawUpdates @project_id, @doc_id, [{
- op: [{ i: "f", p: 3 }]
- meta: { ts: Date.now(), user_id: @user_id }
- v: 3
- }], (error) =>
- throw error if error?
- TrackChangesClient.flushDoc @project_id, @doc_id, (error) ->
- throw error if error?
- done()
- return null
- it "should flush the op into mongo", (done) ->
- TrackChangesClient.getCompressedUpdates @doc_id, (error, updates) ->
- expect(updates[0].pack[0].op).to.deep.equal [{
- p: 3, i: "f"
- }]
- done()
- return null
- describe "flushing a project's updates", ->
- describe "with versioning enabled", ->
- before (done) ->
- @project_id = ObjectId().toString()
- @doc_id = ObjectId().toString()
- @user_id = ObjectId().toString()
- @weeks = 7 * 24 * 60 * 60 * 1000
- MockWebApi.projects[@project_id] =
- features:
- versioning: true
- TrackChangesClient.pushRawUpdates @project_id, @doc_id, [{
- op: [{ i: "g", p: 2 }]
- meta: { ts: Date.now() - 2 * @weeks, user_id: @user_id }
- v: 2
- }, {
- op: [{ i: "f", p: 3 }]
- meta: { ts: Date.now(), user_id: @user_id }
- v: 3
- }], (error) =>
- throw error if error?
- TrackChangesClient.flushProject @project_id, (error) ->
- throw error if error?
- done()
- return null
- it "should not mark the updates for deletion", (done) ->
- TrackChangesClient.getCompressedUpdates @doc_id, (error, updates) ->
- expect(updates[0].expiresAt).to.not.exist
- done()
- return null
- it "should preserve history forever", (done) ->
- TrackChangesClient.getProjectMetaData @project_id, (error, project) ->
- expect(project.preserveHistory).to.equal true
- done()
- return null
- describe "without versioning enabled", ->
- before (done) ->
- @project_id = ObjectId().toString()
- @doc_id = ObjectId().toString()
- @user_id = ObjectId().toString()
- @weeks = 7 * 24 * 60 * 60 * 1000
- MockWebApi.projects[@project_id] =
- features:
- versioning: false
- TrackChangesClient.pushRawUpdates @project_id, @doc_id, [{
- op: [{ i: "g", p: 2 }]
- meta: { ts: Date.now() - 2 * @weeks, user_id: @user_id }
- v: 2
- }, {
- op: [{ i: "f", p: 3 }]
- meta: { ts: Date.now(), user_id: @user_id }
- v: 3
- }], (error) =>
- throw error if error?
- TrackChangesClient.flushProject @project_id, (error) ->
- throw error if error?
- done()
- return null
- it "should mark the updates for deletion", (done) ->
- TrackChangesClient.getCompressedUpdates @doc_id, (error, updates) ->
- expect(updates[0].expiresAt).to.exist
- done()
- return null
- describe "without versioning enabled but with preserveHistory set to true", ->
- before (done) ->
- @project_id = ObjectId().toString()
- @doc_id = ObjectId().toString()
- @user_id = ObjectId().toString()
- @weeks = 7 * 24 * 60 * 60 * 1000
- MockWebApi.projects[@project_id] =
- features:
- versioning: false
- TrackChangesClient.setPreserveHistoryForProject @project_id, (error) =>
- throw error if error?
- TrackChangesClient.pushRawUpdates @project_id, @doc_id, [{
- op: [{ i: "g", p: 2 }]
- meta: { ts: Date.now() - 2 * @weeks, user_id: @user_id }
- v: 2
- }, {
- op: [{ i: "f", p: 3 }]
- meta: { ts: Date.now(), user_id: @user_id }
- v: 3
- }], (error) =>
- throw error if error?
- TrackChangesClient.flushProject @project_id, (error) ->
- throw error if error?
- done()
- return null
- it "should not mark the updates for deletion", (done) ->
- TrackChangesClient.getCompressedUpdates @doc_id, (error, updates) ->
- expect(updates[0].expiresAt).to.not.exist
- done()
- return null
|