From 5c69efa89bf7b764604b3a0bf5aa3d6a86e2e2c2 Mon Sep 17 00:00:00 2001 From: sheldon guo Date: Tue, 11 Feb 2025 07:30:52 +0800 Subject: [PATCH] test: add test for retrieving latest message title and timestamp in in-app channels --- .../src/server/__tests__/server.test.ts | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/packages/plugins/@nocobase/plugin-notification-in-app-message/src/server/__tests__/server.test.ts b/packages/plugins/@nocobase/plugin-notification-in-app-message/src/server/__tests__/server.test.ts index 9ddb763d32..2d8741fe26 100644 --- a/packages/plugins/@nocobase/plugin-notification-in-app-message/src/server/__tests__/server.test.ts +++ b/packages/plugins/@nocobase/plugin-notification-in-app-message/src/server/__tests__/server.test.ts @@ -85,6 +85,64 @@ describe('inapp message channels', () => { const myMessages = await userAgents[0].resource('myInAppMessages').list(); expect(myMessages.body.data.messages.length).toBe(4); }); + + test('user can get own channel latestMesageTitle and latestMesageTimestamp', async () => { + defineMyInAppChannels({ app }); + defineMyInAppMessages({ app, addClient: () => null, removeClient: () => null }); + const channelsRes = await channelsRepo.create({ + values: [ + { + title: '测试渠道', + notificationType: 'in-app-message', + }, + ], + }); + const now = Date.now(); + await messagesRepo.create({ + values: [ + { + channelName: channelsRes[0].name, + userId: users[0].id, + status: 'unread', + title: 'user-0', + content: 'unread', + receiveTimestamp: now, + options: { + url: '/admin/pages', + }, + }, + { + channelName: channelsRes[0].name, + userId: users[1].id, + status: 'unread', + title: 'user-1', + content: 'unread', + receiveTimestamp: now + 1000, + options: { + url: '/admin/pages', + }, + }, + { + channelName: channelsRes[0].name, + userId: users[1].id, + status: 'read', + title: 'user-1', + content: 'read', + receiveTimestamp: now + 1001, + options: { + url: '/admin/pages', + }, + }, + ], + }); + + const res = await userAgents[0].resource('myInAppChannels').list(); + expect(res.body.data.length).toBe(1); + expect(res.body.data[0].latestMsgTitle).toBe('user-0'); + expect(res.body.data[0].unreadMsgCnt).toBe(1); + expect(res.body.data[0].latestMsgReceiveTimestamp).toBe(now); + }); + test('filter channel by status', async () => { const channels = await channelsRepo.create({ values: [