test unseen behavior
This commit is contained in:
@@ -6,7 +6,7 @@ mysql.createConnection.mockImplementation(() => {
|
||||
});
|
||||
|
||||
import saveMessageDatabase from "../test-utils/db/test-saveMessage";
|
||||
import { generateAttrs, generateUsers } from "../test-utils/test-attrsUtils";
|
||||
import { generateAttrs, generateUsers, randomInt } from "../test-utils/test-attrsUtils";
|
||||
import { jest, describe, it, expect } from "@jest/globals";
|
||||
import { mocked } from "jest-mock";
|
||||
|
||||
@@ -28,13 +28,14 @@ jest.mock("../../db/saveMessage-db", () => {
|
||||
return {
|
||||
createRoom: jest.fn(),
|
||||
registerMessageInRoom: jest.fn(),
|
||||
isRoomGroup: jest.fn(),
|
||||
getRoomType: jest.fn(),
|
||||
findRoomsFromMessage: jest.fn(),
|
||||
hasSameMembersAsParent: jest.fn(),
|
||||
registerThread: jest.fn(),
|
||||
registerMember: jest.fn(),
|
||||
getAllMembers: jest.fn(),
|
||||
getThreadInfo: jest.fn(),
|
||||
getThreadInfoOnId: jest.fn(),
|
||||
incrementNotSeenRoom: jest.fn(),
|
||||
};
|
||||
});
|
||||
@@ -42,13 +43,14 @@ import { getAddresseId, getUserIdOfMailbox, findRoomByOwner } from "../../db/uti
|
||||
import {
|
||||
createRoom,
|
||||
registerMessageInRoom,
|
||||
isRoomGroup,
|
||||
getRoomType,
|
||||
findRoomsFromMessage,
|
||||
hasSameMembersAsParent,
|
||||
registerThread,
|
||||
registerMember,
|
||||
getAllMembers,
|
||||
getThreadInfo,
|
||||
getThreadInfoOnId,
|
||||
incrementNotSeenRoom,
|
||||
} from "../../db/saveMessage-db";
|
||||
import { AttrsWithEnvelope } from "../../interfaces/mail/attrs.interface";
|
||||
@@ -75,32 +77,43 @@ beforeAll(async () => {
|
||||
|
||||
mocked(createRoom).mockImplementation(db.createRoom);
|
||||
mocked(registerMessageInRoom).mockImplementation(db.registerMessageInRoom);
|
||||
mocked(isRoomGroup).mockImplementation(db.isRoomGroup);
|
||||
mocked(getRoomType).mockImplementation(db.getRoomType);
|
||||
mocked(findRoomsFromMessage).mockImplementation(db.findRoomsFromMessage);
|
||||
mocked(hasSameMembersAsParent).mockImplementation(db.hasSameMembersAsParent);
|
||||
mocked(registerThread).mockImplementation(db.registerThread);
|
||||
mocked(registerMember).mockImplementation(db.registerMember);
|
||||
mocked(getAllMembers).mockImplementation(db.getAllMembers);
|
||||
mocked(getThreadInfo).mockImplementation(db.getThreadInfo);
|
||||
mocked(getThreadInfoOnId).mockImplementation(db.getThreadInfoOnId);
|
||||
mocked(incrementNotSeenRoom).mockImplementation(db.incrementNotSeenRoom);
|
||||
});
|
||||
|
||||
let msgFromUs_1: { attrs: AttrsWithEnvelope; message_id: number };
|
||||
let replyTo1_2: { attrs: AttrsWithEnvelope; message_id: number };
|
||||
|
||||
const msgFromUs_1: { attrs: AttrsWithEnvelope; message_id: number } = {
|
||||
attrs: generateAttrs({ from: [ownUser.user], to: [db.users[1].user], messageId: "1" }),
|
||||
message_id: 1,
|
||||
};
|
||||
const replyTo1_2: { attrs: AttrsWithEnvelope; message_id: number } = {
|
||||
attrs: generateAttrs({ from: [ownUser.user], to: [db.users[1].user], messageId: "2", inReplyTo: "1" }),
|
||||
message_id: 2,
|
||||
};
|
||||
|
||||
const replyTo2_3: { attrs: AttrsWithEnvelope; message_id: number } = {
|
||||
attrs: generateAttrs({ from: [ownUser.user], to: [db.users[1].user, db.users[2].user], messageId: "3", inReplyTo: "2" }),
|
||||
message_id: 3,
|
||||
};
|
||||
let replyTo2_3: { attrs: AttrsWithEnvelope; message_id: number };
|
||||
|
||||
beforeEach(async () => {
|
||||
msgFromUs_1 = {
|
||||
attrs: generateAttrs({ from: [ownUser.user], to: [db.users[1].user], messageId: "1" }),
|
||||
message_id: 1,
|
||||
};
|
||||
|
||||
replyTo1_2 = {
|
||||
attrs: generateAttrs({ from: [ownUser.user], to: [db.users[1].user], messageId: "2", inReplyTo: "1" }),
|
||||
message_id: 2,
|
||||
};
|
||||
|
||||
replyTo2_3 = {
|
||||
attrs: generateAttrs({
|
||||
from: [ownUser.user],
|
||||
to: [db.users[1].user, db.users[2].user],
|
||||
messageId: "3",
|
||||
inReplyTo: "2",
|
||||
}),
|
||||
message_id: 3,
|
||||
};
|
||||
|
||||
db.clear();
|
||||
db.messages.push(msgFromUs_1);
|
||||
db.messages.push(replyTo1_2);
|
||||
@@ -108,7 +121,6 @@ beforeEach(async () => {
|
||||
});
|
||||
|
||||
describe("saveMessage", () => {
|
||||
|
||||
describe("functions", () => {
|
||||
it("isFromUs", async () => {
|
||||
const attrs = generateAttrs({ from: [ownUser.user], to: [db.users[1].user] });
|
||||
@@ -179,21 +191,21 @@ describe("saveMessage", () => {
|
||||
await register.save();
|
||||
register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId);
|
||||
await register.save();
|
||||
|
||||
const thread = db.rooms.find((room) => room.is_thread)
|
||||
|
||||
const thread = db.rooms.find((room) => room.is_thread);
|
||||
expect(thread.room_type).toBe(RoomType.THREAD);
|
||||
expect(thread.root_id).toBe(0);
|
||||
expect(thread.parent_id).toBe(0);
|
||||
});
|
||||
|
||||
it("should create THREAD when reply in THREAD with different members", async() => {
|
||||
|
||||
it("should create THREAD when reply in THREAD with different members", async () => {
|
||||
let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId);
|
||||
await register.save();
|
||||
register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId);
|
||||
await register.save();
|
||||
register = new registerMessageInApp(replyTo2_3.message_id, replyTo2_3.attrs, boxId);
|
||||
await register.save();
|
||||
|
||||
|
||||
const threads = db.rooms.filter((room) => room.is_thread);
|
||||
expect(threads).toHaveLength(2);
|
||||
const thread = threads[1];
|
||||
@@ -203,16 +215,74 @@ describe("saveMessage", () => {
|
||||
expect(thread.members).toHaveLength(3);
|
||||
});
|
||||
});
|
||||
describe("replies", () => {
|
||||
it("", () => {});
|
||||
describe("joins room", () => {
|
||||
it("should add message to THREAD when reply to a message in it with same members", async () => {
|
||||
let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId);
|
||||
await register.save();
|
||||
register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId);
|
||||
await register.save();
|
||||
// set same members to not create a new thread
|
||||
let newReplyInThread = JSON.parse(JSON.stringify(replyTo1_2));
|
||||
newReplyInThread.attrs.envelope.inReplyTo = replyTo1_2.attrs.envelope.messageId;
|
||||
newReplyInThread.message_id = randomInt(5);
|
||||
newReplyInThread.attrs.envelope.messageId = newReplyInThread.message_id.toString();
|
||||
db.messages.push(newReplyInThread);
|
||||
|
||||
register = new registerMessageInApp(newReplyInThread.message_id, newReplyInThread.attrs, boxId);
|
||||
await register.save();
|
||||
|
||||
expect(db.rooms).toHaveLength(2);
|
||||
expect(db.room_message.filter((message) => message.room_id === db.rooms[1].room_id)).toHaveLength(2);
|
||||
});
|
||||
});
|
||||
describe("unseen behavior", () => {
|
||||
it("should add unseen in room when a message creates a room", () => {});
|
||||
it("should add unseen in room when a message creates a room", async () => {
|
||||
let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId);
|
||||
await register.save();
|
||||
expect(db.rooms[0].notSeen).toBe(1);
|
||||
});
|
||||
|
||||
it("should add unseen in room when a message joins a room", () => {});
|
||||
it("should add unseen in room when a message joins a room", async () => {
|
||||
let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId);
|
||||
await register.save();
|
||||
|
||||
it("should add unseen in root room and thread when new message creates a thread", () => {});
|
||||
register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId);
|
||||
await register.save();
|
||||
expect(db.rooms).toHaveLength(1);
|
||||
expect(db.rooms[0].notSeen).toBe(2);
|
||||
});
|
||||
|
||||
it("should add unseen in root room and thread when new message joins in thread", () => {});
|
||||
it("should add unseen in root room and THREAD when new message creates a THREAD", async () => {
|
||||
let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId);
|
||||
await register.save();
|
||||
register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId);
|
||||
await register.save();
|
||||
register = new registerMessageInApp(replyTo2_3.message_id, replyTo2_3.attrs, boxId);
|
||||
await register.save();
|
||||
expect(db.rooms[0].notSeen).toBe(3);
|
||||
expect(db.rooms[1].notSeen).toBe(1);
|
||||
expect(db.rooms[2].notSeen).toBe(1);
|
||||
});
|
||||
|
||||
it("should add unseen in root room and THREAD when new message joins in THREAD", async () => {
|
||||
let register = new registerMessageInApp(msgFromUs_1.message_id, msgFromUs_1.attrs, boxId);
|
||||
await register.save();
|
||||
register = new registerMessageInApp(replyTo1_2.message_id, replyTo1_2.attrs, boxId);
|
||||
await register.save();
|
||||
|
||||
// set same members to not create a new thread
|
||||
let newReplyInThread = JSON.parse(JSON.stringify(replyTo1_2));
|
||||
newReplyInThread.attrs.envelope.inReplyTo = replyTo1_2.attrs.envelope.messageId;
|
||||
newReplyInThread.message_id = randomInt(5);
|
||||
newReplyInThread.attrs.envelope.messageId = newReplyInThread.message_id.toString();
|
||||
db.messages.push(newReplyInThread);
|
||||
|
||||
register = new registerMessageInApp(newReplyInThread.message_id, newReplyInThread.attrs, boxId);
|
||||
await register.save();
|
||||
|
||||
expect(db.rooms).toHaveLength(2);
|
||||
expect(db.rooms[0].notSeen).toBe(3);
|
||||
expect(db.rooms[1].notSeen).toBe(2);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user