RangesManagerTests.coffee 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. sinon = require('sinon')
  5. path = require "path"
  6. modulePath = path.join __dirname, "../../../../app/js/Features/TrackChanges/RangesManager"
  7. expect = require("chai").expect
  8. describe "RangesManager", ->
  9. beforeEach ->
  10. @RangesManager = SandboxedModule.require modulePath, requires:
  11. "../DocumentUpdater/DocumentUpdaterHandler": @DocumentUpdaterHandler = {}
  12. "../Docstore/DocstoreManager": @DocstoreManager = {}
  13. "../User/UserInfoManager": @UserInfoManager = {}
  14. describe "getAllChangesUsers", ->
  15. beforeEach ->
  16. @project_id = "mock-project-id"
  17. @user_id1 = "mock-user-id-1"
  18. @user_id1 = "mock-user-id-2"
  19. @docs = [{
  20. ranges:
  21. changes: [{
  22. op: { i: "foo", p: 42 }
  23. metadata:
  24. user_id: @user_id1
  25. }, {
  26. op: { i: "bar", p: 102 }
  27. metadata:
  28. user_id: @user_id2
  29. }]
  30. }, {
  31. ranges:
  32. changes: [{
  33. op: { i: "baz", p: 3 }
  34. metadata:
  35. user_id: @user_id1
  36. }]
  37. }]
  38. @users = {}
  39. @users[@user_id1] = {"mock": "user-1"}
  40. @users[@user_id2] = {"mock": "user-2"}
  41. @UserInfoManager.getPersonalInfo = (user_id, callback) => callback null, @users[user_id]
  42. sinon.spy @UserInfoManager, "getPersonalInfo"
  43. @RangesManager.getAllRanges = sinon.stub().yields(null, @docs)
  44. it "should return an array of unique users", (done) ->
  45. @RangesManager.getAllChangesUsers @project_id, (error, users) =>
  46. users.should.deep.equal [{"mock": "user-1"}, {"mock": "user-2"}]
  47. done()
  48. it "should only call getPersonalInfo once for each user", (done) ->
  49. @RangesManager.getAllChangesUsers @project_id, (error, users) =>
  50. @UserInfoManager.getPersonalInfo.calledTwice.should.equal true
  51. done()