MessageManagerTests.coffee 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. sinon = require('sinon')
  2. chai = require('chai')
  3. should = chai.should()
  4. expect = chai.expect
  5. modulePath = "../../../../app/js/Features/Messages/MessageManager.js"
  6. SandboxedModule = require('sandboxed-module')
  7. events = require "events"
  8. ObjectId = require("mongojs").ObjectId
  9. describe "MessageManager", ->
  10. beforeEach ->
  11. @MessageManager = SandboxedModule.require modulePath, requires:
  12. "../WebApi/WebApiManager": @WebApiManager = {}
  13. "../../mongojs": {}
  14. @callback = sinon.stub()
  15. describe "populateMessagesWithUsers", ->
  16. beforeEach ->
  17. @user0 =
  18. id: ObjectId().toString()
  19. first_name: "Adam"
  20. @user1 =
  21. id: ObjectId().toString()
  22. first_name: "Eve"
  23. @users = {}
  24. @users[@user0.id] = @user0
  25. @users[@user1.id] = @user1
  26. @messages = [{
  27. content: "First message content"
  28. user_id: ObjectId(@user0.id)
  29. }, {
  30. content: "Second message content"
  31. user_id: ObjectId(@user0.id)
  32. }, {
  33. content: "Third message content"
  34. user_id: ObjectId(@user1.id)
  35. }]
  36. @WebApiManager.getUserDetails = (user_id, callback = (error, user) ->) =>
  37. callback null, @users[user_id]
  38. sinon.spy @WebApiManager, "getUserDetails"
  39. @MessageManager.populateMessagesWithUsers @messages, @callback
  40. it "should insert user objects in the place of user_ids", ->
  41. messages = @callback.args[0][1]
  42. expect(messages).to.deep.equal [{
  43. content: "First message content"
  44. user: @user0
  45. }, {
  46. content: "Second message content"
  47. user: @user0
  48. }, {
  49. content: "Third message content"
  50. user: @user1
  51. }]
  52. it "should call getUserDetails once and only once for each user", ->
  53. @WebApiManager.getUserDetails.calledWith(@user0.id).should.equal true
  54. @WebApiManager.getUserDetails.calledWith(@user1.id).should.equal true
  55. @WebApiManager.getUserDetails.calledTwice.should.equal true