RestoringVersions.coffee 1.8 KB

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