const { ObjectId } = require('../../../app/js/mongodb') const { expect } = require('chai') const ChatClient = require('./helpers/ChatClient') const ChatApp = require('./helpers/ChatApp') const db = ChatApp.db async function getMessage(messageId) { return await db.messages.findOne({ _id: ObjectId(messageId), }) } describe('Destroying a project', async function () { const projectId = ObjectId().toString() const userId = ObjectId().toString() before(async function () { await ChatApp.ensureRunning() }) describe('with a project that has threads and messages', async function () { const threadId = ObjectId().toString() before(async function () { const { response } = await ChatClient.sendMessage( projectId, threadId, userId, 'destroyed thread message' ) expect(response.statusCode).to.equal(201) this.threadMessageId = response.body.id const { response: response2 } = await ChatClient.sendGlobalMessage( projectId, userId, 'destroyed global message' ) expect(response2.statusCode).to.equal(201) this.globalThreadMessageId = response2.body.id const threadRooms = await db.rooms .find({ project_id: ObjectId(projectId) }) .toArray() expect(threadRooms.length).to.equal(2) const threadMessage = await getMessage(this.threadMessageId) expect(threadMessage).to.exist const globalThreadMessage = await getMessage(this.globalThreadMessageId) expect(globalThreadMessage).to.exist const { response: responseDestroy } = await ChatClient.destroyProject( projectId ) expect(responseDestroy.statusCode).to.equal(204) }) it('should remove the messages and threads from the database', async function () { const threadRooms = await db.rooms .find({ project_id: ObjectId(projectId) }) .toArray() expect(threadRooms.length).to.equal(0) const threadMessage = await getMessage(this.threadMessageId) expect(threadMessage).to.be.null const globalThreadMessage = await getMessage(this.globalThreadMessageId) expect(globalThreadMessage).to.be.null }) }) })