e4e3cab559
主站规范生成支持多张参考图 修复普通生成参考图删除与提交状态不同步 优化触屏设备删除按钮可达性并补充回归测试 --------- Co-authored-by: kdletters <kdletters@qq.com> Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/164 Co-authored-by: 孟豪 <mh18530625731@163.com> Co-committed-by: 孟豪 <mh18530625731@163.com>
73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
/* @vitest-environment jsdom */
|
|
|
|
import { render, screen } from '@testing-library/react';
|
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
import { ImageCanvasReferenceSlot } from './ImageCanvasReferenceSlot';
|
|
|
|
const useResolvedAssetReadUrlMock = vi.hoisted(() => vi.fn());
|
|
|
|
vi.mock('../../hooks/useResolvedAssetReadUrl', () => ({
|
|
useResolvedAssetReadUrl: useResolvedAssetReadUrlMock,
|
|
}));
|
|
|
|
describe('ImageCanvasReferenceSlot', () => {
|
|
beforeEach(() => {
|
|
useResolvedAssetReadUrlMock.mockImplementation(
|
|
(
|
|
source: string | null | undefined,
|
|
options?: { objectKey?: string | null },
|
|
) => ({
|
|
resolvedUrl: options?.objectKey
|
|
? `https://oss.example.com/${options.objectKey}?signature=1`
|
|
: (source ?? ''),
|
|
isResolving: false,
|
|
shouldResolve: Boolean(options?.objectKey),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it('resolves private generated reference thumbnails through objectKey', () => {
|
|
const { container } = render(
|
|
<ImageCanvasReferenceSlot
|
|
tone="character"
|
|
icon={<span data-testid="fallback-icon" />}
|
|
imageSrc="/generated-character-drafts/editor/legacy-resources/stale.png"
|
|
objectKey="generated-character-drafts/editor/legacy-resources/editor-resource-1.png"
|
|
label="角色参考"
|
|
ariaLabel="角色参考"
|
|
/>,
|
|
);
|
|
|
|
const image = container.querySelector('img');
|
|
|
|
expect(useResolvedAssetReadUrlMock).toHaveBeenCalledWith(
|
|
'/generated-character-drafts/editor/legacy-resources/stale.png',
|
|
expect.objectContaining({
|
|
objectKey:
|
|
'generated-character-drafts/editor/legacy-resources/editor-resource-1.png',
|
|
}),
|
|
);
|
|
expect(image?.getAttribute('src')).toBe(
|
|
'https://oss.example.com/generated-character-drafts/editor/legacy-resources/editor-resource-1.png?signature=1',
|
|
);
|
|
});
|
|
|
|
it('keeps an explicitly marked reference remove action visible', () => {
|
|
render(
|
|
<ImageCanvasReferenceSlot
|
|
icon={<span />}
|
|
imageSrc="/reference.png"
|
|
label="参考图1"
|
|
ariaLabel="参考图1"
|
|
onRemove={vi.fn()}
|
|
alwaysShowRemove
|
|
/>,
|
|
);
|
|
|
|
expect(
|
|
screen.getByRole('button', { name: '删除参考图1' }).className,
|
|
).toContain('image-canvas-editor__reference-chip-remove--always-visible');
|
|
});
|
|
});
|