RestoringVersions.coffee 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. sinon = require "sinon"
  2. chai = require("chai")
  3. chai.should()
  4. expect = chai.expect
  5. mongojs = require "../../../app/js/mongojs"
  6. db = mongojs.db
  7. ObjectId = mongojs.ObjectId
  8. Settings = require "settings-sharelatex"
  9. TrackChangesApp = require "./helpers/TrackChangesApp"
  10. TrackChangesClient = require "./helpers/TrackChangesClient"
  11. MockDocUpdaterApi = require "./helpers/MockDocUpdaterApi"
  12. MockWebApi = require "./helpers/MockWebApi"
  13. describe "Restoring a version", ->
  14. before (done) ->
  15. sinon.spy MockDocUpdaterApi, "setDoc"
  16. @now = Date.now()
  17. @user_id = ObjectId().toString()
  18. @doc_id = ObjectId().toString()
  19. @project_id = ObjectId().toString()
  20. MockWebApi.projects[@project_id] = features: versioning: true
  21. minutes = 60 * 1000
  22. @updates = [{
  23. op: [{ i: "one ", p: 0 }]
  24. meta: { ts: @now - 6 * minutes, user_id: @user_id }
  25. v: 3
  26. }, {
  27. op: [{ i: "two ", p: 4 }]
  28. meta: { ts: @now - 4 * minutes, user_id: @user_id }
  29. v: 4
  30. }, {
  31. op: [{ i: "three ", p: 8 }]
  32. meta: { ts: @now - 2 * minutes, user_id: @user_id }
  33. v: 5
  34. }, {
  35. op: [{ i: "four", p: 14 }]
  36. meta: { ts: @now, user_id: @user_id }
  37. v: 6
  38. }]
  39. @lines = ["one two three four"]
  40. @restored_lines = ["one two "]
  41. @beforeVersion = 5
  42. MockWebApi.users[@user_id] = @user =
  43. email: "user@sharelatex.com"
  44. first_name: "Leo"
  45. last_name: "Lion"
  46. id: @user_id
  47. MockDocUpdaterApi.docs[@doc_id] =
  48. lines: @lines
  49. version: 7
  50. TrackChangesApp.ensureRunning =>
  51. TrackChangesClient.pushRawUpdates @project_id, @doc_id, @updates, (error) =>
  52. throw error if error?
  53. TrackChangesClient.restoreDoc @project_id, @doc_id, @beforeVersion, @user_id, (error) =>
  54. throw error if error?
  55. done()
  56. return null
  57. after () ->
  58. MockDocUpdaterApi.setDoc.restore()
  59. return null
  60. it "should set the doc in the doc updater", ->
  61. MockDocUpdaterApi.setDoc
  62. .calledWith(@project_id, @doc_id, @restored_lines, @user_id, true)
  63. .should.equal true
  64. return null