feat: redesign Canvas plan and reference flow
This commit is contained in:
39
tests/unit/reference-tokens.test.ts
Normal file
39
tests/unit/reference-tokens.test.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import {
|
||||
findUnboundReferenceNumbers,
|
||||
findReferenceMentionRange,
|
||||
insertReferenceToken,
|
||||
promptReferencesImage,
|
||||
removeReferenceTokenAndShift,
|
||||
} from '@/pages/ImageCanvas/reference-tokens';
|
||||
|
||||
describe('Canvas reference tokens', () => {
|
||||
it('recognizes explicit numbered image aliases only', () => {
|
||||
expect(promptReferencesImage('参考 @图片1 和 @图2', 0)).toBe(true);
|
||||
expect(promptReferencesImage('参考 @图片1 和 @图2', 1)).toBe(true);
|
||||
expect(promptReferencesImage('普通的 @图片 文字', 0)).toBe(false);
|
||||
});
|
||||
|
||||
it('reports aliases that do not have a bound reference', () => {
|
||||
expect(findUnboundReferenceNumbers('参考 @图片1、@图3 和 @图片2,再看 @图片3', 1))
|
||||
.toEqual([2, 3]);
|
||||
expect(findUnboundReferenceNumbers('不要使用 @图片0', 2)).toEqual([0]);
|
||||
});
|
||||
|
||||
it('finds an unfinished @ mention at the cursor', () => {
|
||||
expect(findReferenceMentionRange('让 @图', 4)).toEqual({ start: 2, end: 4 });
|
||||
expect(findReferenceMentionRange('让 @图 继续', 7)).toBeNull();
|
||||
});
|
||||
|
||||
it('inserts a token at the mention range', () => {
|
||||
expect(insertReferenceToken('让 @ 作为主体', 1, { start: 2, end: 3 })).toEqual({
|
||||
value: '让 @图片2 作为主体',
|
||||
cursor: 6,
|
||||
});
|
||||
});
|
||||
|
||||
it('removes the deleted token and shifts later aliases with their bindings', () => {
|
||||
expect(removeReferenceTokenAndShift('参考 @图片1,结合 @图片2 的光线', 0))
|
||||
.toBe('参考 结合 @图片1 的光线');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user