GettingMessagesTests.coffee 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. {ObjectId} = require "../../../app/js/mongojs"
  2. expect = require("chai").expect
  3. async = require "async"
  4. crypto = require "crypto"
  5. MockWebApi = require "./helpers/MockWebApi"
  6. ChatClient = require "./helpers/ChatClient"
  7. describe "Getting messages", ->
  8. before ->
  9. @user_id1 = ObjectId().toString()
  10. @user_id2 = ObjectId().toString()
  11. @content1 = "foo bar"
  12. @content2 = "hello world"
  13. MockWebApi.addUser @user_id1, @user1 = {
  14. id: @user_id1
  15. first_name: "Jane"
  16. last_name: "Smith"
  17. email: "jane@example.com"
  18. }
  19. MockWebApi.addUser @user_id2, @user2 = {
  20. id: @user_id2
  21. first_name: "John"
  22. last_name: "Doe"
  23. email: "john@example.com"
  24. }
  25. describe "normally", ->
  26. before (done) ->
  27. @project_id = ObjectId().toString()
  28. async.series [
  29. (cb) => ChatClient.sendMessage @project_id, @user_id1, @content1, cb
  30. (cb) => ChatClient.sendMessage @project_id, @user_id2, @content2, cb
  31. ], done
  32. it "should contain the messages and populated users when getting the messages", (done) ->
  33. ChatClient.getMessages @project_id, (error, response, messages) =>
  34. expect(messages.length).to.equal 2
  35. messages.reverse()
  36. expect(messages[0].content).to.equal @content1
  37. expect(messages[0].user).to.deep.equal {
  38. id: @user_id1
  39. first_name: "Jane"
  40. last_name: "Smith"
  41. email: "jane@example.com"
  42. gravatar_url: "//www.gravatar.com/avatar/#{crypto.createHash("md5").update("jane@example.com").digest("hex")}"
  43. }
  44. expect(messages[1].content).to.equal @content2
  45. expect(messages[1].user).to.deep.equal {
  46. id: @user_id2
  47. first_name: "John"
  48. last_name: "Doe"
  49. email: "john@example.com"
  50. gravatar_url: "//www.gravatar.com/avatar/#{crypto.createHash("md5").update("john@example.com").digest("hex")}"
  51. }
  52. done()
  53. describe "when a user doesn't exit", ->
  54. before (done) ->
  55. @project_id = ObjectId().toString()
  56. @user_id3 = ObjectId().toString()
  57. async.series [
  58. (cb) => ChatClient.sendMessage @project_id, @user_id3, @content1, cb
  59. (cb) => ChatClient.sendMessage @project_id, @user_id2, @content2, cb
  60. ], done
  61. it "should just return null for the user", (done) ->
  62. ChatClient.getMessages @project_id, (error, response, messages) =>
  63. expect(messages.length).to.equal 2
  64. messages.reverse()
  65. expect(messages[0].content).to.equal @content1
  66. expect(messages[0].user).to.equal null
  67. done()