Files
Genarrative/src/components/image-editor/ImageCanvasReferenceSlot.test.tsx
T
menghao e4e3cab559
Project CI / Repository checks (push) Successful in 3m3s
Project CI / Frontend tests (push) Successful in 3m32s
Project CI / Backend tests (push) Successful in 5m45s
Project CI / Native shell tests (push) Successful in 16m17s
修复画布参考图上传删除链路 (#164)
主站规范生成支持多张参考图

修复普通生成参考图删除与提交状态不同步

优化触屏设备删除按钮可达性并补充回归测试

---------

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>
2026-08-21 11:55:32 +08:00

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');
});
});