Add unit tests for processChatTimeFilter function in chat utils

This commit is contained in:
gru-agent[bot] 2025-06-03 08:43:37 +00:00 committed by GitHub
parent b974574157
commit bdd184231d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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]
]);
});
});