From 8670b543b939506d47e205ecee28f2b6785da787 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 2 Jul 2014 17:28:05 +0100 Subject: [PATCH] added basic chat handler --- .../coffee/Features/Chat/ChatHandler.coffee | 26 +++++++ .../Features/User/UserPagesController.coffee | 1 + .../coffee/Chat/ChatHandlerTests.coffee | 74 +++++++++++++++++++ .../SubscriptionControllerTests.coffee | 1 - .../SubscriptionHandlerTests.coffee | 1 - 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 services/web/app/coffee/Features/Chat/ChatHandler.coffee create mode 100644 services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee diff --git a/services/web/app/coffee/Features/Chat/ChatHandler.coffee b/services/web/app/coffee/Features/Chat/ChatHandler.coffee new file mode 100644 index 0000000000..a8b5ef916d --- /dev/null +++ b/services/web/app/coffee/Features/Chat/ChatHandler.coffee @@ -0,0 +1,26 @@ +request = require("request") +settings = require("settings-sharelatex") +logger = require("logger-sharelatex") + +module.exports = + + sendMessage: (project_id, user_id, messageContent, callback)-> + opts = + method:"post" + json: + content:messageContent + user_id:user_id + uri:"#{settings.apis.chat.url}/room/#{project_id}/messages" + request opts, (err, response, body)-> + if err? + logger.err err:err, "problem sending new message to chat" + callback(err, body) + + + + getMessages: (project_id, query, callback)-> + opts = + uri:"#{settings.apis.chat.url}/room/#{project_id}/messages" + method:"get" + request opts, (err, response, body)-> + callback(err, body) \ No newline at end of file diff --git a/services/web/app/coffee/Features/User/UserPagesController.coffee b/services/web/app/coffee/Features/User/UserPagesController.coffee index 6d083931db..c082440e76 100644 --- a/services/web/app/coffee/Features/User/UserPagesController.coffee +++ b/services/web/app/coffee/Features/User/UserPagesController.coffee @@ -23,6 +23,7 @@ module.exports = new_email:req.query.new_email || "" loginPage : (req, res)-> + console.info req res.render 'user/login', title: 'Login', redir: req.query.redir diff --git a/services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee b/services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee new file mode 100644 index 0000000000..8b23595f16 --- /dev/null +++ b/services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee @@ -0,0 +1,74 @@ +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: + 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.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) + + it "should make get request for room to chat api", (done)-> + + @ChatHandler.getMessages @project_id, (err)=> + @opts = + method:"get" + uri:"#{@settings.apis.chat.url}/room/#{@project_id}/messages" + @request.calledWith(@opts).should.equal true + done() + + it "should return the messages from the request", (done)-> + @ChatHandler.getMessages @project_id, (err, returnedMessages)=> + returnedMessages.should.equal @returnedMessages + done() + + + + + + diff --git a/services/web/test/UnitTests/coffee/Subscription/SubscriptionControllerTests.coffee b/services/web/test/UnitTests/coffee/Subscription/SubscriptionControllerTests.coffee index 6f478a52c3..5df9d5d1e2 100644 --- a/services/web/test/UnitTests/coffee/Subscription/SubscriptionControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Subscription/SubscriptionControllerTests.coffee @@ -4,7 +4,6 @@ Settings = require 'settings-sharelatex' should = require("chai").should() MockRequest = require "../helpers/MockRequest" MockResponse = require "../helpers/MockResponse" -tk = require 'timekeeper' modulePath = '../../../../app/js/Features/Subscription/SubscriptionController' mockSubscriptions = diff --git a/services/web/test/UnitTests/coffee/Subscription/SubscriptionHandlerTests.coffee b/services/web/test/UnitTests/coffee/Subscription/SubscriptionHandlerTests.coffee index c080612fd1..daa677d2e0 100644 --- a/services/web/test/UnitTests/coffee/Subscription/SubscriptionHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Subscription/SubscriptionHandlerTests.coffee @@ -4,7 +4,6 @@ sinon = require 'sinon' querystring = require 'querystring' modulePath = "../../../../app/js/Features/Subscription/SubscriptionHandler" SubscriptionHandler = require modulePath -tk = require 'timekeeper' mockRecurlySubscriptions = "subscription-123-active":