diff --git a/web/app/components/snippets/components/__tests__/workflow-panel.spec.tsx b/web/app/components/snippets/components/__tests__/workflow-panel.spec.tsx new file mode 100644 index 00000000000..e897216e6a3 --- /dev/null +++ b/web/app/components/snippets/components/__tests__/workflow-panel.spec.tsx @@ -0,0 +1,52 @@ +import type { PanelProps } from '@/app/components/workflow/panel' +import type { SnippetInputField } from '@/models/snippet' +import { render, waitFor } from '@testing-library/react' +import SnippetWorkflowPanel from '../workflow-panel' + +let capturedPanelProps: PanelProps | null = null + +vi.mock('@/app/components/workflow/panel', () => ({ + default: (props: PanelProps) => { + capturedPanelProps = props + return
{props.components?.left}
+ }, +})) + +const defaultFields: SnippetInputField[] = [] + +describe('SnippetWorkflowPanel', () => { + beforeEach(() => { + vi.clearAllMocks() + capturedPanelProps = null + }) + + // Verifies snippet panel wires version history support into the shared workflow panel. + describe('Rendering', () => { + it('should pass snippet version history panel props to the shared workflow panel', async () => { + render( + , + ) + + await waitFor(() => { + expect(capturedPanelProps?.versionHistoryPanelProps?.getVersionListUrl).toBe('/snippets/snippet-1/workflows') + expect(capturedPanelProps?.versionHistoryPanelProps?.deleteVersionUrl?.('version-1')).toBe('/snippets/snippet-1/workflows/version-1') + expect(capturedPanelProps?.versionHistoryPanelProps?.restoreVersionUrl('version-1')).toBe('/snippets/snippet-1/workflows/version-1/restore') + expect(capturedPanelProps?.versionHistoryPanelProps?.updateVersionUrl?.('version-1')).toBe('/snippets/snippet-1/workflows/version-1') + expect(capturedPanelProps?.versionHistoryPanelProps?.latestVersionId).toBe('') + }) + }) + }) +}) diff --git a/web/app/components/snippets/components/snippet-children.tsx b/web/app/components/snippets/components/snippet-children.tsx index 1c3728290ff..b812e56a714 100644 --- a/web/app/components/snippets/components/snippet-children.tsx +++ b/web/app/components/snippets/components/snippet-children.tsx @@ -56,6 +56,7 @@ const SnippetChildren = ({ /> { + const versionHistoryPanelProps = useMemo(() => { + return { + getVersionListUrl: `/snippets/${snippetId}/workflows`, + deleteVersionUrl: (versionId: string) => `/snippets/${snippetId}/workflows/${versionId}`, + restoreVersionUrl: (versionId: string) => `/snippets/${snippetId}/workflows/${versionId}/restore`, + updateVersionUrl: (versionId: string) => `/snippets/${snippetId}/workflows/${versionId}`, + latestVersionId: '', + } + }, [snippetId]) + const panelProps: PanelProps = useMemo(() => { return { components: { left: ( ), }, + versionHistoryPanelProps, } }, [ editingField, @@ -103,6 +117,7 @@ const SnippetWorkflowPanel = ({ onRemoveField, onSecondarySortChange, onSubmitField, + versionHistoryPanelProps, ]) return