386534a415
- 为避免prop drilling把原有的刷新画布集中到一个useContext中, 在此基础上实现画布聚焦, 并在画布agent中使用  Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/123 Co-authored-by: 王德宇 <kvtodev@outlook.com> Co-committed-by: 王德宇 <kvtodev@outlook.com>
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
/* @vitest-environment jsdom */
|
|
|
|
import { act, renderHook } from '@testing-library/react';
|
|
import type { ReactNode } from 'react';
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import {
|
|
useImageCanvasActions,
|
|
} from './ImageCanvasActionsContext';
|
|
import { ImageCanvasActionsProvider } from './ImageCanvasActionsProvider';
|
|
|
|
describe('ImageCanvasActionsContext', () => {
|
|
it('exposes the editor-scoped canvas actions', () => {
|
|
const focusResource = vi.fn(() => ({ successed: true }));
|
|
const refreshCanvas = vi.fn();
|
|
const { result } = renderHook(useImageCanvasActions, {
|
|
wrapper: ({ children }: { children: ReactNode }) => (
|
|
<ImageCanvasActionsProvider
|
|
focusResource={focusResource}
|
|
refreshCanvas={refreshCanvas}
|
|
>
|
|
{children}
|
|
</ImageCanvasActionsProvider>
|
|
),
|
|
});
|
|
|
|
let focusResult: { successed: boolean } | undefined;
|
|
act(() => {
|
|
focusResult = result.current.focusResource('resource-a');
|
|
result.current.refreshCanvas();
|
|
});
|
|
|
|
expect(focusResult).toEqual({ successed: true });
|
|
expect(focusResource).toHaveBeenCalledWith('resource-a');
|
|
expect(refreshCanvas).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('fails clearly when consumed outside the editor provider', () => {
|
|
expect(() => renderHook(useImageCanvasActions)).toThrow(
|
|
'useImageCanvasActions must be used within ImageCanvasActionsProvider',
|
|
);
|
|
});
|
|
});
|