GettingADiffTests.coffee 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 "Getting a diff", ->
  13. before (done) ->
  14. sinon.spy MockDocUpdaterApi, "getDoc"
  15. @now = Date.now()
  16. @from = @now - 100000000
  17. @to = @now
  18. @user_id = ObjectId().toString()
  19. @doc_id = ObjectId().toString()
  20. @project_id = ObjectId().toString()
  21. MockWebApi.users[@user_id] = @user =
  22. email: "user@sharelatex.com"
  23. first_name: "Leo"
  24. last_name: "Lion"
  25. id: @user_id
  26. sinon.spy MockWebApi, "getUser"
  27. twoMinutes = 2 * 60 * 1000
  28. @updates = [{
  29. op: [{ i: "one ", p: 0 }]
  30. meta: { ts: @from - twoMinutes, user_id: @user_id }
  31. v: 3
  32. }, {
  33. op: [{ i: "two ", p: 4 }]
  34. meta: { ts: @from + twoMinutes, user_id: @user_id }
  35. v: @fromVersion = 4
  36. }, {
  37. op: [{ i: "three ", p: 8 }]
  38. meta: { ts: @to - twoMinutes, user_id: @user_id }
  39. v: @toVersion = 5
  40. }, {
  41. op: [{ i: "four", p: 14 }]
  42. meta: { ts: @to + twoMinutes, user_id: @user_id }
  43. v: 6
  44. }]
  45. @lines = ["one two three four"]
  46. @expected_diff = [
  47. { u: "one " }
  48. { i: "two three ", meta: { start_ts: @from + twoMinutes, end_ts: @to - twoMinutes, user: @user } }
  49. ]
  50. MockDocUpdaterApi.docs[@doc_id] =
  51. lines: @lines
  52. version: 7
  53. TrackChangesClient.pushRawUpdates @project_id, @doc_id, @updates, (error) =>
  54. throw error if error?
  55. TrackChangesClient.getDiff @project_id, @doc_id, @fromVersion, @toVersion, (error, diff) =>
  56. throw error if error?
  57. @diff = diff.diff
  58. done()
  59. after () ->
  60. MockDocUpdaterApi.getDoc.restore()
  61. MockWebApi.getUser.restore()
  62. it "should return the diff", ->
  63. expect(@diff).to.deep.equal @expected_diff
  64. it "should get the doc from the doc updater", ->
  65. MockDocUpdaterApi.getDoc
  66. .calledWith(@project_id, @doc_id)
  67. .should.equal true