mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-03-05 13:10:24 +00:00
## Summary Adds a little indicator circle when new workflow menu items are added that the user has not seen ## Changes - **What**: Adds a hidden setting to track menu items flagged as new that have been seen ## Screenshots (if applicable) <img width="164" height="120" alt="image" src="https://github.com/user-attachments/assets/ac36673d-fbf1-42ff-9a9e-1371eb96115b" /> ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-9220-Add-indicator-circle-when-new-unseen-menu-items-are-available-3126d73d3650819cb8cde854d6b6510b) by [Unito](https://www.unito.io)
83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import { shallowMount } from '@vue/test-utils'
|
|
import { describe, expect, it, vi } from 'vitest'
|
|
|
|
import WorkflowActionsList from '@/components/common/WorkflowActionsList.vue'
|
|
import type {
|
|
WorkflowMenuAction,
|
|
WorkflowMenuItem
|
|
} from '@/types/workflowMenuItem'
|
|
|
|
function createWrapper(items: WorkflowMenuItem[]) {
|
|
return shallowMount(WorkflowActionsList, {
|
|
props: { items },
|
|
global: { renderStubDefaultSlot: true }
|
|
})
|
|
}
|
|
|
|
describe('WorkflowActionsList', () => {
|
|
it('renders action items with label and icon', () => {
|
|
const items: WorkflowMenuItem[] = [
|
|
{ id: 'save', label: 'Save', icon: 'pi pi-save', command: vi.fn() }
|
|
]
|
|
|
|
const wrapper = createWrapper(items)
|
|
|
|
expect(wrapper.text()).toContain('Save')
|
|
expect(wrapper.find('.pi-save').exists()).toBe(true)
|
|
})
|
|
|
|
it('renders separator items', () => {
|
|
const items: WorkflowMenuItem[] = [
|
|
{ id: 'before', label: 'Before', icon: 'pi pi-a', command: vi.fn() },
|
|
{ separator: true },
|
|
{ id: 'after', label: 'After', icon: 'pi pi-b', command: vi.fn() }
|
|
]
|
|
|
|
const wrapper = createWrapper(items)
|
|
const html = wrapper.html()
|
|
|
|
expect(html).toContain('dropdown-menu-separator-stub')
|
|
expect(wrapper.text()).toContain('Before')
|
|
expect(wrapper.text()).toContain('After')
|
|
})
|
|
|
|
it('dispatches command on select', async () => {
|
|
const command = vi.fn()
|
|
const items: WorkflowMenuItem[] = [
|
|
{ id: 'action', label: 'Action', icon: 'pi pi-play', command }
|
|
]
|
|
|
|
const wrapper = createWrapper(items)
|
|
const item = wrapper.findComponent({ name: 'DropdownMenuItem' })
|
|
await item.vm.$emit('select')
|
|
|
|
expect(command).toHaveBeenCalledOnce()
|
|
})
|
|
|
|
it('renders badge when present', () => {
|
|
const items: WorkflowMenuItem[] = [
|
|
{
|
|
id: 'new-feature',
|
|
label: 'New Feature',
|
|
icon: 'pi pi-star',
|
|
command: vi.fn(),
|
|
badge: 'NEW'
|
|
}
|
|
]
|
|
|
|
const wrapper = createWrapper(items)
|
|
|
|
expect(wrapper.text()).toContain('NEW')
|
|
})
|
|
|
|
it('does not render badge when absent', () => {
|
|
const items: WorkflowMenuAction[] = [
|
|
{ id: 'plain', label: 'Plain', icon: 'pi pi-check', command: vi.fn() }
|
|
]
|
|
|
|
const wrapper = createWrapper(items)
|
|
|
|
expect(wrapper.text()).not.toContain('NEW')
|
|
})
|
|
})
|