RestoringVersions.coffee 1.7 KB

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