ResolvingAThreadTests.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import { ObjectId } from '../../../app/js/mongodb.js'
  2. import { expect } from 'chai'
  3. import * as ChatClient from './helpers/ChatClient.js'
  4. import * as ChatApp from './helpers/ChatApp.js'
  5. describe('Resolving a thread', async function () {
  6. const projectId = new ObjectId().toString()
  7. const userId = new ObjectId().toString()
  8. before(async function () {
  9. await ChatApp.ensureRunning()
  10. })
  11. describe('with a resolved thread', async function () {
  12. const threadId = new ObjectId().toString()
  13. const content = 'resolved message'
  14. before(async function () {
  15. const { response } = await ChatClient.sendMessage(
  16. projectId,
  17. threadId,
  18. userId,
  19. content
  20. )
  21. expect(response.statusCode).to.equal(201)
  22. const { response: response2 } = await ChatClient.resolveThread(
  23. projectId,
  24. threadId,
  25. userId
  26. )
  27. expect(response2.statusCode).to.equal(204)
  28. })
  29. it('should then list the thread as resolved', async function () {
  30. const { response, body: threads } = await ChatClient.getThreads(projectId)
  31. expect(response.statusCode).to.equal(200)
  32. expect(threads[threadId].resolved).to.equal(true)
  33. expect(threads[threadId].resolved_by_user_id).to.equal(userId)
  34. const resolvedAt = new Date(threads[threadId].resolved_at)
  35. expect(new Date() - resolvedAt).to.be.below(1000)
  36. })
  37. it('should list the thread id in the resolved thread ids endpoint', async function () {
  38. const { response, body } =
  39. await ChatClient.getResolvedThreadIds(projectId)
  40. expect(response.statusCode).to.equal(200)
  41. expect(body.resolvedThreadIds).to.include(threadId)
  42. })
  43. })
  44. describe('when a thread is not resolved', async function () {
  45. const threadId = new ObjectId().toString()
  46. const content = 'open message'
  47. before(async function () {
  48. const { response } = await ChatClient.sendMessage(
  49. projectId,
  50. threadId,
  51. userId,
  52. content
  53. )
  54. expect(response.statusCode).to.equal(201)
  55. })
  56. it('should not list the thread as resolved', async function () {
  57. const { response, body: threads } = await ChatClient.getThreads(projectId)
  58. expect(response.statusCode).to.equal(200)
  59. expect(threads[threadId].resolved).to.be.undefined
  60. })
  61. it('should not list the thread in the resolved thread ids endpoint', async function () {
  62. const { response, body } =
  63. await ChatClient.getResolvedThreadIds(projectId)
  64. expect(response.statusCode).to.equal(200)
  65. expect(body.resolvedThreadIds).not.to.include(threadId)
  66. })
  67. })
  68. describe('when a thread is resolved then reopened', async function () {
  69. const threadId = new ObjectId().toString()
  70. const content = 'resolved message'
  71. before(async function () {
  72. const { response } = await ChatClient.sendMessage(
  73. projectId,
  74. threadId,
  75. userId,
  76. content
  77. )
  78. expect(response.statusCode).to.equal(201)
  79. const { response: response2 } = await ChatClient.resolveThread(
  80. projectId,
  81. threadId,
  82. userId
  83. )
  84. expect(response2.statusCode).to.equal(204)
  85. const { response: response3 } = await ChatClient.reopenThread(
  86. projectId,
  87. threadId
  88. )
  89. expect(response3.statusCode).to.equal(204)
  90. })
  91. it('should not list the thread as resolved', async function () {
  92. const { response, body: threads } = await ChatClient.getThreads(projectId)
  93. expect(response.statusCode).to.equal(200)
  94. expect(threads[threadId].resolved).to.be.undefined
  95. })
  96. it('should not list the thread in the resolved thread ids endpoint', async function () {
  97. const { response, body } =
  98. await ChatClient.getResolvedThreadIds(projectId)
  99. expect(response.statusCode).to.equal(200)
  100. expect(body.resolvedThreadIds).not.to.include(threadId)
  101. })
  102. })
  103. })