|
|
@@ -0,0 +1,83 @@
|
|
|
+{ObjectId} = require "../../../app/js/mongojs"
|
|
|
+expect = require("chai").expect
|
|
|
+crypto = require "crypto"
|
|
|
+
|
|
|
+MockWebApi = require "./helpers/MockWebApi"
|
|
|
+ChatClient = require "./helpers/ChatClient"
|
|
|
+
|
|
|
+describe "Resolving a thread", ->
|
|
|
+ before ->
|
|
|
+ @project_id = ObjectId().toString()
|
|
|
+ @user_id = ObjectId().toString()
|
|
|
+ MockWebApi.addUser @user_id, @user = {
|
|
|
+ id: @user_id
|
|
|
+ first_name: "Jane"
|
|
|
+ last_name: "Smith"
|
|
|
+ email: "jane@example.com"
|
|
|
+ }
|
|
|
+
|
|
|
+ describe "with a resolved thread", ->
|
|
|
+ before (done) ->
|
|
|
+ @thread_id = ObjectId().toString()
|
|
|
+ @content = "resolved message"
|
|
|
+ ChatClient.sendMessage @project_id, @thread_id, @user_id, @content, (error, response, body) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 201
|
|
|
+ ChatClient.resolveThread @project_id, @thread_id, @user_id, (error, response, body) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 204
|
|
|
+ done()
|
|
|
+
|
|
|
+ it "should then list the thread as resolved", (done) ->
|
|
|
+ ChatClient.getThreads @project_id, (error, response, threads) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 200
|
|
|
+ expect(threads[@thread_id].resolved).to.equal true
|
|
|
+ expect(threads[@thread_id].resolved_by_user).to.deep.equal {
|
|
|
+ id: @user_id
|
|
|
+ first_name: "Jane"
|
|
|
+ last_name: "Smith"
|
|
|
+ email: "jane@example.com"
|
|
|
+ gravatar_url: "//www.gravatar.com/avatar/#{crypto.createHash("md5").update("jane@example.com").digest("hex")}"
|
|
|
+ }
|
|
|
+ resolved_at = new Date(threads[@thread_id].resolved_at)
|
|
|
+ expect(new Date() - resolved_at).to.be.below 1000
|
|
|
+ done()
|
|
|
+
|
|
|
+ describe "when a thread is not resolved", ->
|
|
|
+ before (done) ->
|
|
|
+ @thread_id = ObjectId().toString()
|
|
|
+ @content = "open message"
|
|
|
+ ChatClient.sendMessage @project_id, @thread_id, @user_id, @content, (error, response, body) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 201
|
|
|
+ done()
|
|
|
+
|
|
|
+ it "should not list the thread as resolved", (done) ->
|
|
|
+ ChatClient.getThreads @project_id, (error, response, threads) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 200
|
|
|
+ expect(threads[@thread_id].resolved).to.be.undefined
|
|
|
+ done()
|
|
|
+
|
|
|
+ describe "when a thread is resolved then reopened", ->
|
|
|
+ before (done) ->
|
|
|
+ @thread_id = ObjectId().toString()
|
|
|
+ @content = "resolved message"
|
|
|
+ ChatClient.sendMessage @project_id, @thread_id, @user_id, @content, (error, response, body) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 201
|
|
|
+ ChatClient.resolveThread @project_id, @thread_id, @user_id, (error, response, body) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 204
|
|
|
+ ChatClient.reopenThread @project_id, @thread_id, (error, response, body) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 204
|
|
|
+ done()
|
|
|
+
|
|
|
+ it "should not list the thread as resolved", (done) ->
|
|
|
+ ChatClient.getThreads @project_id, (error, response, threads) =>
|
|
|
+ expect(error).to.be.null
|
|
|
+ expect(response.statusCode).to.equal 200
|
|
|
+ expect(threads[@thread_id].resolved).to.be.undefined
|
|
|
+ done()
|