Compare commits
1 Commits
main
...
gru/projec
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdd184231d |
128
test/cases/service/core/chat/utils.test.ts
Normal file
128
test/cases/service/core/chat/utils.test.ts
Normal 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]
|
||||
]);
|
||||
});
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user