overleaf/services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee
2014-07-17 11:43:12 +01:00

89 lines
2.4 KiB
CoffeeScript

should = require('chai').should()
SandboxedModule = require('sandboxed-module')
assert = require('assert')
path = require('path')
sinon = require('sinon')
modulePath = path.join __dirname, "../../../../app/js/Features/Chat/ChatHandler"
expect = require("chai").expect
describe "ChatHandler", ->
beforeEach ->
@settings =
apis:
chat:
internal_url:"chat.sharelatex.env"
@request = sinon.stub()
@ChatHandler = SandboxedModule.require modulePath, requires:
"settings-sharelatex":@settings
"logger-sharelatex": log:->
"request": @request
@project_id = "3213213kl12j"
@user_id = "2k3jlkjs9"
@messageContent = "my message here"
describe "sending message", ->
beforeEach ->
@messageResponse =
message:"Details"
@request.callsArgWith(1, null, null, @messageResponse)
it "should post the data to the chat api", (done)->
@ChatHandler.sendMessage @project_id, @user_id, @messageContent, (err)=>
@opts =
method:"post"
json:
content:@messageContent
user_id:@user_id
uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
@request.calledWith(@opts).should.equal true
done()
it "should return the message from the post", (done)->
@ChatHandler.sendMessage @project_id, @user_id, @messageContent, (err, returnedMessage)=>
returnedMessage.should.equal @messageResponse
done()
describe "get messages", ->
beforeEach ->
@returnedMessages = [{content:"hello world"}]
@request.callsArgWith(1, null, null, @returnedMessages)
@query = {}
it "should make get request for room to chat api", (done)->
@ChatHandler.getMessages @project_id, @query, (err)=>
@opts =
method:"get"
uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
qs:{}
@request.calledWith(@opts).should.equal true
done()
it "should make get request for room to chat api with query string", (done)->
@query = {limit:5, before:12345, ignore:"this"}
@ChatHandler.getMessages @project_id, @query, (err)=>
@opts =
method:"get"
uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
qs:
limit:5
before:12345
@request.calledWith(@opts).should.equal true
done()
it "should return the messages from the request", (done)->
@ChatHandler.getMessages @project_id, @query, (err, returnedMessages)=>
returnedMessages.should.equal @returnedMessages
done()