mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 14:30:41 +00:00
Backport of #9134 to core/1.40. Conflicts: 25 snapshot PNGs (accepted theirs), 2 Vue files (CSS class ordering — accepted theirs). **Original PR:** https://github.com/Comfy-Org/ComfyUI_frontend/pull/9134 **Pipeline ticket:** 15e1f241-efaa-4fe5-88ca-4ccc7bfb3345 Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: GitHub Action <action@github.com>
99 lines
2.4 KiB
TypeScript
99 lines
2.4 KiB
TypeScript
import { createTestingPinia } from '@pinia/testing'
|
|
import { mount } from '@vue/test-utils'
|
|
import { describe, expect, it, vi } from 'vitest'
|
|
import { nextTick } from 'vue'
|
|
import { createI18n } from 'vue-i18n'
|
|
|
|
import { useQueueSettingsStore } from '@/stores/queueStore'
|
|
|
|
import BatchCountEdit from './BatchCountEdit.vue'
|
|
|
|
const maxBatchCount = 16
|
|
|
|
vi.mock('@/platform/settings/settingStore', () => ({
|
|
useSettingStore: () => ({
|
|
get: (settingId: string) =>
|
|
settingId === 'Comfy.QueueButton.BatchCountLimit' ? maxBatchCount : 1
|
|
})
|
|
}))
|
|
|
|
const i18n = createI18n({
|
|
legacy: false,
|
|
locale: 'en',
|
|
messages: {
|
|
en: {
|
|
g: {
|
|
increment: 'Increment',
|
|
decrement: 'Decrement'
|
|
},
|
|
menu: {
|
|
batchCount: 'Batch Count'
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
function createWrapper(initialBatchCount = 1) {
|
|
const pinia = createTestingPinia({
|
|
createSpy: vi.fn,
|
|
stubActions: false,
|
|
initialState: {
|
|
queueSettingsStore: {
|
|
batchCount: initialBatchCount
|
|
}
|
|
}
|
|
})
|
|
|
|
const wrapper = mount(BatchCountEdit, {
|
|
global: {
|
|
plugins: [pinia, i18n],
|
|
directives: {
|
|
tooltip: () => {}
|
|
}
|
|
}
|
|
})
|
|
|
|
const queueSettingsStore = useQueueSettingsStore()
|
|
|
|
return { wrapper, queueSettingsStore }
|
|
}
|
|
|
|
describe('BatchCountEdit', () => {
|
|
it('doubles the current batch count when increment is clicked', async () => {
|
|
const { wrapper, queueSettingsStore } = createWrapper(3)
|
|
|
|
await wrapper.get('button[aria-label="Increment"]').trigger('click')
|
|
|
|
expect(queueSettingsStore.batchCount).toBe(6)
|
|
})
|
|
|
|
it('halves the current batch count when decrement is clicked', async () => {
|
|
const { wrapper, queueSettingsStore } = createWrapper(9)
|
|
|
|
await wrapper.get('button[aria-label="Decrement"]').trigger('click')
|
|
|
|
expect(queueSettingsStore.batchCount).toBe(4)
|
|
})
|
|
|
|
it('clamps typed values to queue limits on blur', async () => {
|
|
const { wrapper, queueSettingsStore } = createWrapper(2)
|
|
const input = wrapper.get('input')
|
|
|
|
await input.setValue('999')
|
|
await input.trigger('blur')
|
|
await nextTick()
|
|
|
|
expect(queueSettingsStore.batchCount).toBe(maxBatchCount)
|
|
expect((input.element as HTMLInputElement).value).toBe(
|
|
String(maxBatchCount)
|
|
)
|
|
|
|
await input.setValue('0')
|
|
await input.trigger('blur')
|
|
await nextTick()
|
|
|
|
expect(queueSettingsStore.batchCount).toBe(1)
|
|
expect((input.element as HTMLInputElement).value).toBe('1')
|
|
})
|
|
})
|