From bdd184231db281012f048500db6decaccf7e46a2 Mon Sep 17 00:00:00 2001 From: "gru-agent[bot]" <185149714+gru-agent[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 08:43:37 +0000 Subject: [PATCH] Add unit tests for processChatTimeFilter function in chat utils --- test/cases/service/core/chat/utils.test.ts | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 test/cases/service/core/chat/utils.test.ts diff --git a/test/cases/service/core/chat/utils.test.ts b/test/cases/service/core/chat/utils.test.ts new file mode 100644 index 000000000..7b96749e3 --- /dev/null +++ b/test/cases/service/core/chat/utils.test.ts @@ -0,0 +1,128 @@ +import { describe, it, expect } from 'vitest'; +import { processChatTimeFilter } from '@/service/core/chat/utils'; +import type { DatasetCiteItemType } from '@fastgpt/global/core/dataset/type'; + +describe('processChatTimeFilter', () => { + const baseTime = new Date('2025-01-01'); + + it('should return original item if no history', () => { + const item: DatasetCiteItemType = { + id: '1', + q: 'original q', + a: 'original a', + updateTime: baseTime.getTime(), + history: undefined + }; + + const result = processChatTimeFilter([item], baseTime); + expect(result).toEqual([item]); + }); + + it('should return original item if updateTime <= chatTime', () => { + const item: DatasetCiteItemType = { + id: '1', + q: 'original q', + a: 'original a', + updateTime: baseTime.getTime() - 1000, + history: [ + { + q: 'history q', + a: 'history a', + updateTime: baseTime.getTime() - 2000 + } + ] + }; + + const result = processChatTimeFilter([item], baseTime); + expect(result).toEqual([item]); + }); + + it('should return history item if one exists before chatTime', () => { + const item: DatasetCiteItemType = { + id: '1', + q: 'original q', + a: 'original a', + updateTime: baseTime.getTime() + 2000, + history: [ + { + q: 'history q', + a: 'history a', + updateTime: baseTime.getTime() - 1000 + } + ] + }; + + const result = processChatTimeFilter([item], baseTime); + expect(result).toEqual([ + { + ...item, + q: 'history q', + a: 'history a', + updateTime: baseTime.getTime() - 1000, + updated: true + } + ]); + }); + + it('should return original item if no history before chatTime', () => { + const item: DatasetCiteItemType = { + id: '1', + q: 'original q', + a: 'original a', + updateTime: baseTime.getTime() + 2000, + history: [ + { + q: 'history q', + a: 'history a', + updateTime: baseTime.getTime() + 1000 + } + ] + }; + + const result = processChatTimeFilter([item], baseTime); + expect(result).toEqual([item]); + }); + + it('should handle multiple items', () => { + const items: DatasetCiteItemType[] = [ + { + id: '1', + q: 'original q1', + a: 'original a1', + updateTime: baseTime.getTime() + 2000, + history: [ + { + q: 'history q1', + a: 'history a1', + updateTime: baseTime.getTime() - 1000 + } + ] + }, + { + id: '2', + q: 'original q2', + a: 'original a2', + updateTime: baseTime.getTime() - 1000, + history: [ + { + q: 'history q2', + a: 'history a2', + updateTime: baseTime.getTime() - 2000 + } + ] + } + ]; + + const result = processChatTimeFilter(items, baseTime); + expect(result).toEqual([ + { + ...items[0], + q: 'history q1', + a: 'history a1', + updateTime: baseTime.getTime() - 1000, + updated: true + }, + items[1] + ]); + }); +});