1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
- import { createPinia, setActivePinia } from 'pinia'
- import { waitForNextTick } from '#tests/support/utils.ts'
- import { useRecentSearches } from '../useRecentSearches.ts'
- setActivePinia(createPinia())
- describe('useRecentSearches', () => {
- beforeEach(() => {
- localStorage.clear()
- })
- const { recentSearches, addSearch, removeSearch, clearSearches } =
- useRecentSearches()
- test('prevents duplicate search terms', () => {
- addSearch('test search')
- addSearch('test search')
- expect(recentSearches.value).toEqual(['test search'])
- })
- test('maintains maximum length and removes oldest items', () => {
- for (let i = 1; i <= 11; i += 1) {
- addSearch(`search ${i}`)
- }
- expect(recentSearches.value).toEqual([
- 'search 2',
- 'search 3',
- 'search 4',
- 'search 5',
- 'search 6',
- 'search 7',
- 'search 8',
- 'search 9',
- 'search 10',
- 'search 11',
- ])
- })
- test('removeSearch removes a specific item', () => {
- clearSearches()
- addSearch('test 1')
- addSearch('test 2')
- expect(recentSearches.value).toEqual(['test 1', 'test 2'])
- removeSearch('test 1')
- expect(recentSearches.value).toEqual(['test 2'])
- })
- test('clearSearches removes all items', () => {
- addSearch('test 1')
- addSearch('test 2')
- clearSearches()
- expect(recentSearches.value).toEqual([])
- })
- test('persists searches in localStorage', async () => {
- addSearch('test storage')
- await waitForNextTick()
- const { recentSearches: newInstance } = useRecentSearches()
- expect(newInstance.value).toEqual(['test storage'])
- })
- })
|