diff --git a/src/components/queue/QueueOverlayExpanded.test.ts b/src/components/queue/QueueOverlayExpanded.test.ts new file mode 100644 index 000000000..89c3064df --- /dev/null +++ b/src/components/queue/QueueOverlayExpanded.test.ts @@ -0,0 +1,85 @@ +import { mount } from '@vue/test-utils' +import { describe, expect, it, vi } from 'vitest' + +import type { JobListItem } from '@/composables/queue/useJobList' + +vi.mock('@/composables/queue/useJobMenu', () => ({ + useJobMenu: () => ({ jobMenuEntries: [] }) +})) + +vi.mock('@/composables/useErrorHandling', () => ({ + useErrorHandling: () => ({ + wrapWithErrorHandlingAsync: unknown>( + fn: T + ) => fn + }) +})) + +import QueueOverlayExpanded from '@/components/queue/QueueOverlayExpanded.vue' + +const QueueOverlayHeaderStub = { + template: '
' +} + +const JobFiltersBarStub = { + template: '
' +} + +const JobAssetsListStub = { + name: 'JobAssetsList', + template: '
' +} + +const JobContextMenuStub = { + template: '
' +} + +const createJob = (): JobListItem => ({ + id: 'job-1', + title: 'Job 1', + meta: 'meta', + state: 'pending' +}) + +const mountComponent = () => + mount(QueueOverlayExpanded, { + props: { + headerTitle: 'Jobs', + queuedCount: 1, + selectedJobTab: 'All', + selectedWorkflowFilter: 'all', + selectedSortMode: 'mostRecent', + displayedJobGroups: [], + hasFailedJobs: false + }, + global: { + stubs: { + QueueOverlayHeader: QueueOverlayHeaderStub, + JobFiltersBar: JobFiltersBarStub, + JobAssetsList: JobAssetsListStub, + JobContextMenu: JobContextMenuStub + } + } + }) + +describe('QueueOverlayExpanded', () => { + it('renders JobAssetsList', () => { + const wrapper = mountComponent() + expect(wrapper.find('.job-assets-list-stub').exists()).toBe(true) + }) + + it('re-emits list item actions from JobAssetsList', async () => { + const wrapper = mountComponent() + const job = createJob() + const jobAssetsList = wrapper.findComponent({ name: 'JobAssetsList' }) + + jobAssetsList.vm.$emit('cancel-item', job) + jobAssetsList.vm.$emit('delete-item', job) + jobAssetsList.vm.$emit('view-item', job) + await wrapper.vm.$nextTick() + + expect(wrapper.emitted('cancelItem')?.[0]).toEqual([job]) + expect(wrapper.emitted('deleteItem')?.[0]).toEqual([job]) + expect(wrapper.emitted('viewItem')?.[0]).toEqual([job]) + }) +}) diff --git a/src/components/queue/QueueOverlayExpanded.vue b/src/components/queue/QueueOverlayExpanded.vue index cfde91f63..dc44e8b83 100644 --- a/src/components/queue/QueueOverlayExpanded.vue +++ b/src/components/queue/QueueOverlayExpanded.vue @@ -21,7 +21,7 @@ />
-