mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-23 00:04:06 +00:00
Merge remote-tracking branch 'origin/main' into bl-stacked-assets
This commit is contained in:
135
src/platform/assets/composables/useAssetSelectionStore.test.ts
Normal file
135
src/platform/assets/composables/useAssetSelectionStore.test.ts
Normal file
@@ -0,0 +1,135 @@
|
||||
import { createPinia, setActivePinia } from 'pinia'
|
||||
import { beforeEach, describe, expect, it } from 'vitest'
|
||||
|
||||
import { useAssetSelectionStore } from './useAssetSelectionStore'
|
||||
|
||||
describe('useAssetSelectionStore', () => {
|
||||
beforeEach(() => {
|
||||
setActivePinia(createPinia())
|
||||
})
|
||||
|
||||
describe('addToSelection', () => {
|
||||
it('adds an asset ID to the selection', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
expect(store.isSelected('asset-1')).toBe(true)
|
||||
expect(store.selectedCount).toBe(1)
|
||||
})
|
||||
|
||||
it('can add multiple IDs', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.addToSelection('asset-2')
|
||||
expect(store.selectedCount).toBe(2)
|
||||
})
|
||||
})
|
||||
|
||||
describe('removeFromSelection', () => {
|
||||
it('removes an asset ID from the selection', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.removeFromSelection('asset-1')
|
||||
expect(store.isSelected('asset-1')).toBe(false)
|
||||
expect(store.selectedCount).toBe(0)
|
||||
})
|
||||
})
|
||||
|
||||
describe('setSelection', () => {
|
||||
it('replaces entire selection with new IDs', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.addToSelection('asset-2')
|
||||
|
||||
store.setSelection(['asset-3', 'asset-4'])
|
||||
|
||||
expect(store.isSelected('asset-1')).toBe(false)
|
||||
expect(store.isSelected('asset-2')).toBe(false)
|
||||
expect(store.isSelected('asset-3')).toBe(true)
|
||||
expect(store.isSelected('asset-4')).toBe(true)
|
||||
expect(store.selectedCount).toBe(2)
|
||||
})
|
||||
|
||||
it('can set to empty selection', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.setSelection([])
|
||||
expect(store.selectedCount).toBe(0)
|
||||
})
|
||||
})
|
||||
|
||||
describe('clearSelection', () => {
|
||||
it('clears all selections and resets lastSelectedIndex', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.setLastSelectedIndex(5)
|
||||
|
||||
store.clearSelection()
|
||||
|
||||
expect(store.selectedCount).toBe(0)
|
||||
expect(store.lastSelectedIndex).toBe(-1)
|
||||
})
|
||||
|
||||
it('resets lastSelectedAssetId', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.setLastSelectedAssetId('asset-1')
|
||||
|
||||
store.clearSelection()
|
||||
|
||||
expect(store.lastSelectedAssetId).toBe(null)
|
||||
})
|
||||
})
|
||||
|
||||
describe('toggleSelection', () => {
|
||||
it('adds unselected item', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.toggleSelection('asset-1')
|
||||
expect(store.isSelected('asset-1')).toBe(true)
|
||||
})
|
||||
|
||||
it('removes selected item', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.toggleSelection('asset-1')
|
||||
expect(store.isSelected('asset-1')).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('isSelected', () => {
|
||||
it('returns true for selected items', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
expect(store.isSelected('asset-1')).toBe(true)
|
||||
})
|
||||
|
||||
it('returns false for unselected items', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
expect(store.isSelected('asset-1')).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('setLastSelectedIndex', () => {
|
||||
it('updates lastSelectedIndex', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.setLastSelectedIndex(10)
|
||||
expect(store.lastSelectedIndex).toBe(10)
|
||||
})
|
||||
})
|
||||
|
||||
describe('computed properties', () => {
|
||||
it('hasSelection returns true when items are selected', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
expect(store.hasSelection).toBe(false)
|
||||
store.addToSelection('asset-1')
|
||||
expect(store.hasSelection).toBe(true)
|
||||
})
|
||||
|
||||
it('selectedIdsArray returns array of selected IDs', () => {
|
||||
const store = useAssetSelectionStore()
|
||||
store.addToSelection('asset-1')
|
||||
store.addToSelection('asset-2')
|
||||
expect(store.selectedIdsArray).toContain('asset-1')
|
||||
expect(store.selectedIdsArray).toContain('asset-2')
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user