diff --git a/src/components/TopMenuSection.test.ts b/src/components/TopMenuSection.test.ts index b767ab7f8..16b6430d1 100644 --- a/src/components/TopMenuSection.test.ts +++ b/src/components/TopMenuSection.test.ts @@ -1,5 +1,6 @@ import { createTestingPinia } from '@pinia/testing' import { mount } from '@vue/test-utils' +import type { MenuItem } from 'primevue/menuitem' import { beforeEach, describe, expect, it, vi } from 'vitest' import { computed, nextTick } from 'vue' import { createI18n } from 'vue-i18n' @@ -44,7 +45,8 @@ function createWrapper(pinia = createTestingPinia({ createSpy: vi.fn })) { queueProgressOverlay: { viewJobHistory: 'View job history', expandCollapsedQueue: 'Expand collapsed queue', - activeJobsShort: '{count} active | {count} active' + activeJobsShort: '{count} active | {count} active', + clearQueueTooltip: 'Clear queue' } } } @@ -58,7 +60,12 @@ function createWrapper(pinia = createTestingPinia({ createSpy: vi.fn })) { SubgraphBreadcrumb: true, QueueProgressOverlay: true, CurrentUserButton: true, - LoginButton: true + LoginButton: true, + ContextMenu: { + name: 'ContextMenu', + props: ['model'], + template: '
' + } }, directives: { tooltip: () => {} @@ -185,4 +192,24 @@ describe('TopMenuSection', () => { await toggleButton.trigger('click') expect(sidebarTabStore.activeSidebarTabId).toBe(null) }) + + it('disables the clear queue context menu item when no queued jobs exist', () => { + const wrapper = createWrapper() + const menu = wrapper.findComponent({ name: 'ContextMenu' }) + const model = menu.props('model') as MenuItem[] + expect(model[0]?.label).toBe('Clear queue') + expect(model[0]?.disabled).toBe(true) + }) + + it('enables the clear queue context menu item when queued jobs exist', async () => { + const wrapper = createWrapper() + const queueStore = useQueueStore() + queueStore.pendingTasks = [createTask('pending-1', 'pending')] + + await nextTick() + + const menu = wrapper.findComponent({ name: 'ContextMenu' }) + const model = menu.props('model') as MenuItem[] + expect(model[0]?.disabled).toBe(false) + }) }) diff --git a/src/components/TopMenuSection.vue b/src/components/TopMenuSection.vue index 712846f81..d365d3fd8 100644 --- a/src/components/TopMenuSection.vue +++ b/src/components/TopMenuSection.vue @@ -51,6 +51,7 @@ class="px-3" data-testid="queue-overlay-toggle" @click="toggleQueueOverlay" + @contextmenu.stop.prevent="showQueueContextMenu" > {{ activeJobsLabel }} @@ -63,6 +64,7 @@ }} +