mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
* lint: turn on type import rules setting up for verbatimModuleSyntax * lint: --fix for type imports
111 lines
3.2 KiB
TypeScript
111 lines
3.2 KiB
TypeScript
import { createTestingPinia } from '@pinia/testing'
|
|
import { mount } from '@vue/test-utils'
|
|
import Badge from 'primevue/badge'
|
|
import PrimeVue from 'primevue/config'
|
|
import InputText from 'primevue/inputtext'
|
|
import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'
|
|
import { createApp } from 'vue'
|
|
import { createI18n } from 'vue-i18n'
|
|
|
|
import EditableText from '@/components/common/EditableText.vue'
|
|
import TreeExplorerTreeNode from '@/components/common/TreeExplorerTreeNode.vue'
|
|
import type { RenderedTreeExplorerNode } from '@/types/treeExplorerTypes'
|
|
import { InjectKeyHandleEditLabelFunction } from '@/types/treeExplorerTypes'
|
|
|
|
// Create a mock i18n instance
|
|
const i18n = createI18n({
|
|
legacy: false,
|
|
locale: 'en',
|
|
messages: {}
|
|
})
|
|
|
|
describe('TreeExplorerTreeNode', () => {
|
|
const mockNode = {
|
|
key: '1',
|
|
label: 'Test Node',
|
|
leaf: false,
|
|
totalLeaves: 3,
|
|
icon: 'pi pi-folder',
|
|
type: 'folder',
|
|
handleRename: () => {}
|
|
} as RenderedTreeExplorerNode
|
|
|
|
const mockHandleEditLabel = vi.fn()
|
|
|
|
beforeAll(() => {
|
|
// Create a Vue app instance for PrimeVuePrimeVue
|
|
const app = createApp({})
|
|
app.use(PrimeVue)
|
|
vi.useFakeTimers()
|
|
})
|
|
|
|
afterAll(() => {
|
|
vi.useRealTimers()
|
|
})
|
|
|
|
it('renders correctly', () => {
|
|
const wrapper = mount(TreeExplorerTreeNode, {
|
|
props: { node: mockNode },
|
|
global: {
|
|
components: { EditableText, Badge },
|
|
plugins: [createTestingPinia(), i18n],
|
|
provide: {
|
|
[InjectKeyHandleEditLabelFunction]: mockHandleEditLabel
|
|
}
|
|
}
|
|
})
|
|
|
|
expect(wrapper.find('.tree-node').exists()).toBe(true)
|
|
expect(wrapper.find('.tree-folder').exists()).toBe(true)
|
|
expect(wrapper.find('.tree-leaf').exists()).toBe(false)
|
|
expect(wrapper.findComponent(EditableText).props('modelValue')).toBe(
|
|
'Test Node'
|
|
)
|
|
// @ts-expect-error fixme ts strict error
|
|
expect(wrapper.findComponent(Badge).props()['value'].toString()).toBe('3')
|
|
})
|
|
|
|
it('makes node label editable when renamingEditingNode matches', async () => {
|
|
const wrapper = mount(TreeExplorerTreeNode, {
|
|
props: {
|
|
node: {
|
|
...mockNode,
|
|
isEditingLabel: true
|
|
}
|
|
},
|
|
global: {
|
|
components: { EditableText, Badge, InputText },
|
|
plugins: [createTestingPinia(), i18n, PrimeVue],
|
|
provide: {
|
|
[InjectKeyHandleEditLabelFunction]: mockHandleEditLabel
|
|
}
|
|
}
|
|
})
|
|
|
|
const editableText = wrapper.findComponent(EditableText)
|
|
expect(editableText.props('isEditing')).toBe(true)
|
|
})
|
|
|
|
it('triggers handleEditLabel callback when editing is finished', async () => {
|
|
const handleEditLabelMock = vi.fn()
|
|
|
|
const wrapper = mount(TreeExplorerTreeNode, {
|
|
props: {
|
|
node: {
|
|
...mockNode,
|
|
isEditingLabel: true
|
|
}
|
|
},
|
|
global: {
|
|
components: { EditableText, Badge, InputText },
|
|
provide: { [InjectKeyHandleEditLabelFunction]: handleEditLabelMock },
|
|
plugins: [createTestingPinia(), i18n, PrimeVue]
|
|
}
|
|
})
|
|
|
|
const editableText = wrapper.findComponent(EditableText)
|
|
editableText.vm.$emit('edit', 'New Node Name')
|
|
expect(handleEditLabelMock).toHaveBeenCalledOnce()
|
|
})
|
|
})
|