ChatApiHandlerTests.coffee 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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/ChatApiHandler"
  7. expect = require("chai").expect
  8. describe "ChatApiHandler", ->
  9. beforeEach ->
  10. @settings =
  11. apis:
  12. chat:
  13. internal_url:"chat.sharelatex.env"
  14. @request = sinon.stub()
  15. @ChatApiHandler = SandboxedModule.require modulePath, requires:
  16. "settings-sharelatex": @settings
  17. "logger-sharelatex": { log: sinon.stub(), error: sinon.stub() }
  18. "request": @request
  19. @project_id = "3213213kl12j"
  20. @user_id = "2k3jlkjs9"
  21. @content = "my message here"
  22. @callback = sinon.stub()
  23. describe "sendGlobalMessage", ->
  24. describe "successfully", ->
  25. beforeEach ->
  26. @message = { "mock": "message" }
  27. @request.callsArgWith(1, null, {statusCode: 200}, @message)
  28. @ChatApiHandler.sendGlobalMessage @project_id, @user_id, @content, @callback
  29. it "should post the data to the chat api", ->
  30. @request.calledWith({
  31. url: "#{@settings.apis.chat.internal_url}/project/#{@project_id}/messages"
  32. method: "POST"
  33. json:
  34. content: @content
  35. user_id: @user_id
  36. }).should.equal true
  37. it "should return the message from the post", ->
  38. @callback.calledWith(null, @message).should.equal true
  39. describe "with a non-success status code", ->
  40. beforeEach ->
  41. @request.callsArgWith(1, null, {statusCode: 500})
  42. @ChatApiHandler.sendGlobalMessage @project_id, @user_id, @content, @callback
  43. it "should return an error", ->
  44. error = new Error()
  45. error.statusCode = 500
  46. @callback.calledWith(error).should.equal true
  47. describe "getGlobalMessages", ->
  48. beforeEach ->
  49. @messages = [{ "mock": "message" }]
  50. @limit = 30
  51. @before = "1234"
  52. describe "successfully", ->
  53. beforeEach ->
  54. @request.callsArgWith(1, null, {statusCode: 200}, @messages)
  55. @ChatApiHandler.getGlobalMessages @project_id, @limit, @before, @callback
  56. it "should make get request for room to chat api", ->
  57. @request.calledWith({
  58. method: "GET"
  59. url: "#{@settings.apis.chat.internal_url}/project/#{@project_id}/messages"
  60. qs:
  61. limit: @limit
  62. before: @before
  63. json: true
  64. }).should.equal true
  65. it "should return the messages from the request", ->
  66. @callback.calledWith(null, @messages).should.equal true
  67. describe "with failure error code", ->
  68. beforeEach ->
  69. @request.callsArgWith(1, null, {statusCode: 500}, null)
  70. @ChatApiHandler.getGlobalMessages @project_id, @limit, @before, @callback
  71. it "should return an error", ->
  72. error = new Error()
  73. error.statusCode = 500
  74. @callback.calledWith(error).should.equal true