tests in typescript
This commit is contained in:
@@ -1,90 +0,0 @@
|
||||
const { getAddresseId, getUserIdOfMailbox } from ";
|
||||
const { generateAttrs, generateUsers } = require("../test-utils/test-attrsUtils");
|
||||
const { registerMessageInApp, roomType } from ";
|
||||
|
||||
jest.mock("../../db/mail");
|
||||
|
||||
// todo mock db
|
||||
// new message from us
|
||||
// to multiple people -> room
|
||||
// if response has same member => group
|
||||
// if response is dm => channel
|
||||
// to one person => dm
|
||||
|
||||
// new message from other
|
||||
// to only me -> room
|
||||
// if no reply to multiple message => channel
|
||||
// else => dm
|
||||
// to multiple people -> room
|
||||
// // make it better
|
||||
// if multiple members reply -> group
|
||||
// if only me reply -> channel
|
||||
|
||||
describe("saveMessage", () => {
|
||||
describe("new first message", () => {
|
||||
|
||||
const users = generateUsers(5);
|
||||
const ownUser = users[0];
|
||||
const messageId = 1;
|
||||
const boxId = 1;
|
||||
getUserIdOfMailbox.mockReturnValue([{ user_id: ownUser.id }]);
|
||||
getAddresseId.mockImplementation((email) => {
|
||||
const match = users.find((user) => user.user.mailbox + "@" + user.user.host == email);
|
||||
return match.id;
|
||||
});
|
||||
|
||||
describe("from us", () => {
|
||||
it("new first message from us to one recipient should create a DM", async () => {
|
||||
const attrs = generateAttrs({ from: [ownUser.user], to: [users[1].user] });
|
||||
|
||||
const register = new registerMessageInApp(messageId, attrs, boxId);
|
||||
|
||||
const createOrRegisterOnExistence = jest
|
||||
.spyOn(register, "createOrRegisterOnExistence")
|
||||
.mockImplementation(() => undefined);
|
||||
|
||||
await register.save();
|
||||
|
||||
expect(createOrRegisterOnExistence).toHaveBeenCalledWith(users[1].id, roomType.DM);
|
||||
});
|
||||
it("new first message from us to multiple recipients should create a room", async () => {
|
||||
const attrs = generateAttrs({ from: [ownUser.user], to: [users[1].user, users[2].user] });
|
||||
|
||||
const register = new registerMessageInApp(messageId, attrs, boxId);
|
||||
|
||||
const initiateRoom = jest
|
||||
.spyOn(register, "initiateRoom")
|
||||
.mockImplementation(() => undefined);
|
||||
|
||||
await register.save();
|
||||
|
||||
expect(initiateRoom).toHaveBeenCalledWith(ownUser.id, roomType.ROOM);
|
||||
});
|
||||
it("response to new first message to multiple recipients with same members should change room type to GROUP", () => {
|
||||
|
||||
});
|
||||
it("response to new first message to multiple recipients with different members should change room type to CHANNEL", () => {
|
||||
|
||||
});
|
||||
});
|
||||
describe("from other", () => {
|
||||
it("new first message from other to me only should create a room", async () => {
|
||||
const attrs = generateAttrs({ from: [users[1].user], to: [ownUser.user] });
|
||||
|
||||
const register = new registerMessageInApp(messageId, attrs, boxId);
|
||||
|
||||
const createOrRegisterOnExistence = jest
|
||||
.spyOn(register, "createOrRegisterOnExistence")
|
||||
.mockImplementation(() => undefined);
|
||||
|
||||
await register.save();
|
||||
|
||||
expect(createOrRegisterOnExistence).toHaveBeenCalledWith(users[1].id, roomType.ROOM);
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("replies", () => {
|
||||
it("", () => {});
|
||||
});
|
||||
describe("", () => {});
|
||||
});
|
||||
112
back/test/mail/saveMessage-test.ts
Normal file
112
back/test/mail/saveMessage-test.ts
Normal file
@@ -0,0 +1,112 @@
|
||||
import { generateAttrs, generateUsers } from "../test-utils/test-attrsUtils";
|
||||
import registerMessageInApp, { roomType } from "../../mails/saveMessage";
|
||||
import { jest, describe, it, expect } from "@jest/globals";
|
||||
|
||||
import { getAddresseId, getUserIdOfMailbox } from "../../db/mail";
|
||||
// todo esbuild
|
||||
// todo mock db
|
||||
|
||||
// new message from us
|
||||
// to multiple people -> room
|
||||
// if response has same member => group
|
||||
// if response is dm => channel
|
||||
// to one person => dm
|
||||
|
||||
// new message from other
|
||||
// to only me -> room
|
||||
// if no reply to multiple message => channel
|
||||
// else => dm
|
||||
// to multiple people -> room
|
||||
// // make it better
|
||||
// if multiple members reply -> group
|
||||
// if only me reply -> channel
|
||||
|
||||
const users = generateUsers(5);
|
||||
const ownUser = users[0];
|
||||
const messageId = 1;
|
||||
const boxId = 1;
|
||||
|
||||
jest.mock("../../db/mail", () => ({
|
||||
getAddresseId: jest.fn().mockImplementation((email) => {
|
||||
const match = users.find((user) => user.user.mailbox + "@" + user.user.host == email);
|
||||
return new Promise((resolve, reject) => resolve(match?.id));
|
||||
}),
|
||||
getUserIdOfMailbox: jest.fn().mockImplementation((boxId) => {
|
||||
return new Promise((resolve, reject) => resolve([{ user_id: ownUser.id }]));
|
||||
}),
|
||||
}));
|
||||
|
||||
describe("saveMessage", () => {
|
||||
describe("functions", () => {
|
||||
it("isFromUs", async () => {
|
||||
const attrs = generateAttrs({ from: [ownUser.user], to: [users[1].user] });
|
||||
const register = new registerMessageInApp(messageId, attrs, boxId);
|
||||
await register.init();
|
||||
const res = await register.isFromUs();
|
||||
|
||||
expect(res).toBe(true);
|
||||
|
||||
const attrs2 = generateAttrs({ from: [users[2].user], to: [users[1].user] });
|
||||
const register2 = new registerMessageInApp(messageId, attrs2, boxId);
|
||||
await register2.init();
|
||||
const res2 = await register2.isFromUs();
|
||||
|
||||
expect(res2).toBe(false);
|
||||
});
|
||||
});
|
||||
describe("implementation", () => {
|
||||
describe("new first message from us", () => {
|
||||
it("new first message from us to one recipient should create a DM", async () => {
|
||||
const attrs = generateAttrs({ from: [ownUser.user], to: [users[1].user] });
|
||||
|
||||
const register = new registerMessageInApp(messageId, attrs, boxId);
|
||||
|
||||
const createOrRegisterOnExistence = jest
|
||||
.spyOn(register, "createOrRegisterOnExistence")
|
||||
.mockImplementation(
|
||||
(owner: number, roomType: number) => new Promise((resolve, reject) => resolve()),
|
||||
);
|
||||
|
||||
await register.save();
|
||||
|
||||
expect(createOrRegisterOnExistence).toHaveBeenCalledWith(users[1].id, roomType.DM);
|
||||
});
|
||||
it("new first message from us to multiple recipients should create a ROOM", async () => {
|
||||
const attrs = generateAttrs({ from: [ownUser.user], to: [users[1].user, users[2].user] });
|
||||
|
||||
const register = new registerMessageInApp(messageId, attrs, boxId);
|
||||
|
||||
const initiateRoom = jest
|
||||
.spyOn(register, "initiateRoom")
|
||||
.mockImplementation((owner: number, roomType: number) => Promise.resolve(1));
|
||||
|
||||
await register.save();
|
||||
|
||||
expect(initiateRoom).toHaveBeenCalledWith(ownUser.id, roomType.ROOM);
|
||||
});
|
||||
// it("response to new first message to multiple recipients with same members should change room type to GROUP", () => {});
|
||||
// it("response to new first message to multiple recipients with different members should change room type to CHANNEL", () => {});
|
||||
});
|
||||
describe("new first message from other", () => {
|
||||
it("new first message from other to me only should create a room", async () => {
|
||||
const attrs = generateAttrs({ from: [users[1].user], to: [ownUser.user] });
|
||||
|
||||
const register = new registerMessageInApp(messageId, attrs, boxId);
|
||||
|
||||
const createOrRegisterOnExistence = jest
|
||||
.spyOn(register, "createOrRegisterOnExistence")
|
||||
.mockImplementation((owner: number, roomType: number) => {
|
||||
return new Promise((resolve, reject) => resolve());
|
||||
});
|
||||
|
||||
await register.save();
|
||||
|
||||
expect(createOrRegisterOnExistence).toHaveBeenCalledWith(users[1].id, roomType.ROOM);
|
||||
});
|
||||
});
|
||||
// describe("replies", () => {
|
||||
// it("", () => {});
|
||||
// });
|
||||
// describe("", () => {});
|
||||
});
|
||||
});
|
||||
@@ -1,44 +1,34 @@
|
||||
const { nbMembers } from ";
|
||||
const { generateUsers } = require("../../test-utils/test-attrsUtils");
|
||||
import { nbMembers } from "../../../mails/utils/envelopeUtils";
|
||||
import { generateAttrs, generateUsers } from "../../test-utils/test-attrsUtils";
|
||||
import { describe, it, expect } from '@jest/globals';
|
||||
|
||||
describe("envelopeUtils", () => {
|
||||
const names = generateUsers(6);
|
||||
describe("nbMembers", () => {
|
||||
it("sender and from shouldn't be counted twice if there are the same", () => {
|
||||
const envelope = {
|
||||
const envelope = generateAttrs({
|
||||
from: [names[0].user],
|
||||
sender: [names[0].user],
|
||||
replyTo: null,
|
||||
to: null,
|
||||
cc: null,
|
||||
bcc: null,
|
||||
inReplyTo: null,
|
||||
};
|
||||
}).envelope;
|
||||
expect(nbMembers(envelope)).toBe(1);
|
||||
});
|
||||
it("sender and from shoud be counted twice if there are the same", () => {
|
||||
const envelope = {
|
||||
const envelope = generateAttrs({
|
||||
from: [names[0].user],
|
||||
sender: [names[1].user],
|
||||
replyTo: null,
|
||||
to: null,
|
||||
cc: null,
|
||||
bcc: null,
|
||||
inReplyTo: null,
|
||||
};
|
||||
}).envelope;
|
||||
expect(nbMembers(envelope)).toBe(2);
|
||||
});
|
||||
it("should count every members", () => {
|
||||
// todo should merge identic members
|
||||
const envelope = {
|
||||
const envelope = generateAttrs({
|
||||
from: [names[0].user],
|
||||
sender: [names[1].user],
|
||||
replyTo: [names[2].user],
|
||||
to: [names[3].user],
|
||||
cc: [names[4].user],
|
||||
bcc: [names[5].user],
|
||||
inReplyTo: null,
|
||||
};
|
||||
}).envelope;
|
||||
expect(nbMembers(envelope)).toBe(6);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user