mirror of
https://github.com/outline/outline.git
synced 2026-02-05 18:28:43 -06:00
* add group mentions * group mention functionality * add notification test * fix: Group icon in mention menu * language * toast message * fix: Group icon in mention menu light mode color --------- Co-authored-by: Tom Moor <tom@getoutline.com>
172 lines
5.7 KiB
TypeScript
172 lines
5.7 KiB
TypeScript
import { NotificationEventType } from "@shared/types";
|
|
import {
|
|
buildComment,
|
|
buildDocument,
|
|
buildNotification,
|
|
buildUser,
|
|
} from "@server/test/factories";
|
|
import Notification from "./Notification";
|
|
|
|
describe("Notification", () => {
|
|
describe("emailReferences", () => {
|
|
it("should return no reference for an unsupported notification", async () => {
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.AddUserToDocument,
|
|
});
|
|
const references = await Notification.emailReferences(notification);
|
|
expect(references).toBeUndefined();
|
|
});
|
|
|
|
describe("should return document update reference", () => {
|
|
it("document published", async () => {
|
|
const document = await buildDocument();
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.PublishDocument,
|
|
documentId: document.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${document.id}-updates`
|
|
);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
|
|
it("document updated", async () => {
|
|
const document = await buildDocument();
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.UpdateDocument,
|
|
documentId: document.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${document.id}-updates`
|
|
);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
});
|
|
|
|
describe("should return mention reference", () => {
|
|
it("mentioned in document", async () => {
|
|
const document = await buildDocument();
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.MentionedInDocument,
|
|
documentId: document.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${document.id}-mentions`
|
|
);
|
|
expect(references?.length).toBe(1);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
|
|
it("mentioned in comment", async () => {
|
|
const document = await buildDocument();
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.MentionedInComment,
|
|
documentId: document.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${document.id}-mentions`
|
|
);
|
|
expect(references?.length).toBe(1);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
|
|
it("group mentioned in document", async () => {
|
|
const document = await buildDocument();
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.GroupMentionedInDocument,
|
|
documentId: document.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${document.id}-group-mentions`
|
|
);
|
|
expect(references?.length).toBe(1);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
|
|
it("group mentioned in comment", async () => {
|
|
const document = await buildDocument();
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.GroupMentionedInComment,
|
|
documentId: document.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${document.id}-group-mentions`
|
|
);
|
|
expect(references?.length).toBe(1);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
});
|
|
|
|
describe("should return comment reference", () => {
|
|
it("first comment in a thread", async () => {
|
|
const user = await buildUser();
|
|
const document = await buildDocument({
|
|
userId: user.id,
|
|
teamId: user.teamId,
|
|
});
|
|
const comment = await buildComment({
|
|
documentId: document.id,
|
|
userId: user.id,
|
|
});
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.CreateComment,
|
|
commentId: comment.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${comment.id}-comments`
|
|
);
|
|
expect(references?.length).toBe(1);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
|
|
it("child comments in a thread", async () => {
|
|
const user = await buildUser();
|
|
const document = await buildDocument({
|
|
userId: user.id,
|
|
teamId: user.teamId,
|
|
});
|
|
const parentComment = await buildComment({
|
|
documentId: document.id,
|
|
userId: user.id,
|
|
});
|
|
const childComment = await buildComment({
|
|
documentId: document.id,
|
|
userId: user.id,
|
|
parentCommentId: parentComment.id,
|
|
});
|
|
const notification = await buildNotification({
|
|
event: NotificationEventType.CreateComment,
|
|
commentId: childComment.id,
|
|
});
|
|
|
|
const references = await Notification.emailReferences(notification);
|
|
|
|
const expectedReference = Notification.emailMessageId(
|
|
`${parentComment.id}-comments`
|
|
);
|
|
expect(references?.length).toBe(1);
|
|
expect(references![0]).toBe(expectedReference);
|
|
});
|
|
});
|
|
});
|
|
});
|