Skip to content

Commit 112bb75

Browse files
Add unit tests for useFolderSearch functionality
1 parent 7ca5594 commit 112bb75

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import { describe, expect, it } from 'vitest';
2+
import { ref } from 'vue';
3+
import {
4+
createFolders,
5+
createNestedFolders,
6+
createSpecialCharFolders,
7+
createWorkBookmarks,
8+
} from '../../test-utils/bookmarkFactory';
9+
import { useFolderSearch } from '../useFolderSearch';
10+
11+
describe('useFolderSearch', () => {
12+
describe('searchFolders', () => {
13+
it('returns empty results when query is empty', () => {
14+
const allFolders = ref(createWorkBookmarks());
15+
const { searchQuery, searchResults, searchFolders } =
16+
useFolderSearch(allFolders);
17+
18+
searchQuery.value = '';
19+
searchFolders();
20+
21+
expect(searchResults.value).toEqual([]);
22+
});
23+
24+
it('finds folders by name (case-insensitive)', () => {
25+
const allFolders = ref(createWorkBookmarks());
26+
const { searchQuery, searchResults, searchFolders } =
27+
useFolderSearch(allFolders);
28+
29+
searchQuery.value = 'WORK';
30+
searchFolders();
31+
32+
expect(searchResults.value).toHaveLength(2);
33+
expect(searchResults.value[0].title).toBe('Work Projects');
34+
expect(searchResults.value[1].title).toBe('work notes');
35+
});
36+
37+
it('limits results to 10 folders maximum', () => {
38+
const allFolders = ref(createFolders(15));
39+
const { searchQuery, searchResults, searchFolders } =
40+
useFolderSearch(allFolders);
41+
42+
searchQuery.value = 'Folder'; // Matches all 15 folders
43+
searchFolders();
44+
45+
expect(searchResults.value).toHaveLength(10);
46+
});
47+
48+
it('finds folders with special characters', () => {
49+
const allFolders = ref(createSpecialCharFolders());
50+
const { searchQuery, searchResults, searchFolders } =
51+
useFolderSearch(allFolders);
52+
53+
searchQuery.value = '$100';
54+
searchFolders();
55+
56+
expect(searchResults.value).toHaveLength(1);
57+
expect(searchResults.value[0].title).toBe('Price: $100 (USD)');
58+
});
59+
60+
it('searches within nested folder structures', () => {
61+
const allFolders = ref(createNestedFolders());
62+
const { searchQuery, searchResults, searchFolders } =
63+
useFolderSearch(allFolders);
64+
65+
searchQuery.value = 'Fiction';
66+
searchFolders();
67+
68+
expect(searchResults.value.length).toBeGreaterThan(0);
69+
expect(searchResults.value.some((r) => r.title === 'Fiction')).toBe(true);
70+
});
71+
});
72+
});

0 commit comments

Comments
 (0)