[backport rh-test] fix: improve template URL loading UX and prevent re-triggering (#6654)

Backport of #6593 to `rh-test`

Automatically created by backport workflow.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6654-backport-rh-test-fix-improve-template-URL-loading-UX-and-prevent-re-triggering-2a86d73d36508163834fdea17353ed37)
by [Unito](https://www.unito.io)

Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Christian Byrne <c.byrne@comfy.org>
This commit is contained in:
Comfy Org PR Bot
2025-11-12 08:17:56 +09:00
committed by GitHub
parent dd1eff2344
commit 299ddbf3c0
5 changed files with 79 additions and 15 deletions

View File

@@ -14,10 +14,14 @@ import { useTemplateUrlLoader } from '@/platform/workflow/templates/composables/
// Mock vue-router
let mockQueryParams: Record<string, string | undefined> = {}
const mockRouterReplace = vi.fn()
vi.mock('vue-router', () => ({
useRoute: vi.fn(() => ({
query: mockQueryParams
})),
useRouter: vi.fn(() => ({
replace: mockRouterReplace
}))
}))
@@ -217,4 +221,43 @@ describe('useTemplateUrlLoader', () => {
life: 3000
})
})
it('removes template params from URL after successful load', async () => {
mockQueryParams = {
template: 'flux_simple',
source: 'custom',
other: 'param'
}
const { loadTemplateFromUrl } = useTemplateUrlLoader()
await loadTemplateFromUrl()
expect(mockRouterReplace).toHaveBeenCalledWith({
query: { other: 'param' }
})
})
it('removes template params from URL even on error', async () => {
mockQueryParams = { template: 'invalid', source: 'custom', other: 'param' }
mockLoadWorkflowTemplate.mockResolvedValueOnce(false)
const { loadTemplateFromUrl } = useTemplateUrlLoader()
await loadTemplateFromUrl()
expect(mockRouterReplace).toHaveBeenCalledWith({
query: { other: 'param' }
})
})
it('removes template params from URL even on exception', async () => {
mockQueryParams = { template: 'flux_simple', other: 'param' }
mockLoadTemplates.mockRejectedValueOnce(new Error('Network error'))
const { loadTemplateFromUrl } = useTemplateUrlLoader()
await loadTemplateFromUrl()
expect(mockRouterReplace).toHaveBeenCalledWith({
query: { other: 'param' }
})
})
})