ChatHandlerTests.coffee 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. path = require('path')
  5. sinon = require('sinon')
  6. modulePath = path.join __dirname, "../../../../app/js/Features/Chat/ChatHandler"
  7. expect = require("chai").expect
  8. describe "ChatHandler", ->
  9. beforeEach ->
  10. @settings =
  11. apis:
  12. chat:
  13. internal_url:"chat.sharelatex.env"
  14. @request = sinon.stub()
  15. @ChatHandler = SandboxedModule.require modulePath, requires:
  16. "settings-sharelatex":@settings
  17. "logger-sharelatex": log:->
  18. "request": @request
  19. @project_id = "3213213kl12j"
  20. @user_id = "2k3jlkjs9"
  21. @messageContent = "my message here"
  22. describe "sending message", ->
  23. beforeEach ->
  24. @messageResponse =
  25. message:"Details"
  26. @request.callsArgWith(1, null, null, @messageResponse)
  27. it "should post the data to the chat api", (done)->
  28. @ChatHandler.sendMessage @project_id, @user_id, @messageContent, (err)=>
  29. @opts =
  30. method:"post"
  31. json:
  32. content:@messageContent
  33. user_id:@user_id
  34. uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
  35. @request.calledWith(@opts).should.equal true
  36. done()
  37. it "should return the message from the post", (done)->
  38. @ChatHandler.sendMessage @project_id, @user_id, @messageContent, (err, returnedMessage)=>
  39. returnedMessage.should.equal @messageResponse
  40. done()
  41. describe "get messages", ->
  42. beforeEach ->
  43. @returnedMessages = [{content:"hello world"}]
  44. @request.callsArgWith(1, null, null, @returnedMessages)
  45. @query = {}
  46. it "should make get request for room to chat api", (done)->
  47. @ChatHandler.getMessages @project_id, @query, (err)=>
  48. @opts =
  49. method:"get"
  50. uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
  51. qs:{}
  52. @request.calledWith(@opts).should.equal true
  53. done()
  54. it "should make get request for room to chat api with query string", (done)->
  55. @query = {limit:5, before:12345, ignore:"this"}
  56. @ChatHandler.getMessages @project_id, @query, (err)=>
  57. @opts =
  58. method:"get"
  59. uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
  60. qs:
  61. limit:5
  62. before:12345
  63. @request.calledWith(@opts).should.equal true
  64. done()
  65. it "should return the messages from the request", (done)->
  66. @ChatHandler.getMessages @project_id, @query, (err, returnedMessages)=>
  67. returnedMessages.should.equal @returnedMessages
  68. done()