129 lines
3.1 KiB
TypeScript
129 lines
3.1 KiB
TypeScript
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]
|
|
]);
|
|
});
|
|
});
|