Skip to content

Commit 1cd5ed3

Browse files
committed
test: Fix searchbox tests
1 parent 71a25cc commit 1cd5ed3

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

src/components/common/SearchBox.test.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ describe('SearchBox', () => {
5050
await input.setValue('test')
5151

5252
// Model should not update immediately
53-
expect(wrapper.emitted('update:modelValue')).toBeFalsy()
53+
expect(wrapper.emitted('search')).toBeFalsy()
5454

5555
// Advance timers by 299ms (just before debounce delay)
56-
vi.advanceTimersByTime(299)
56+
await vi.advanceTimersByTimeAsync(299)
5757
await nextTick()
58-
expect(wrapper.emitted('update:modelValue')).toBeFalsy()
58+
expect(wrapper.emitted('search')).toBeFalsy()
5959

6060
// Advance timers by 1ms more (reaching 300ms)
61-
vi.advanceTimersByTime(1)
61+
await vi.advanceTimersByTimeAsync(1)
6262
await nextTick()
6363

6464
// Model should now be updated
@@ -82,19 +82,19 @@ describe('SearchBox', () => {
8282

8383
// Type third character (should reset timer again)
8484
await input.setValue('tes')
85-
vi.advanceTimersByTime(200)
85+
await vi.advanceTimersByTimeAsync(200)
8686
await nextTick()
8787

8888
// Should not have emitted yet (only 200ms passed since last keystroke)
89-
expect(wrapper.emitted('update:modelValue')).toBeFalsy()
89+
expect(wrapper.emitted('search')).toBeFalsy()
9090

9191
// Advance final 100ms to reach 300ms
92-
vi.advanceTimersByTime(100)
92+
await vi.advanceTimersByTimeAsync(100)
9393
await nextTick()
9494

9595
// Should now emit with final value
96-
expect(wrapper.emitted('update:modelValue')).toBeTruthy()
97-
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['tes'])
96+
expect(wrapper.emitted('search')).toBeTruthy()
97+
expect(wrapper.emitted('search')?.[0]).toEqual(['tes', []])
9898
})
9999

100100
it('should only emit final value after rapid typing', async () => {
@@ -105,19 +105,20 @@ describe('SearchBox', () => {
105105
const searchTerms = ['s', 'se', 'sea', 'sear', 'searc', 'search']
106106
for (const term of searchTerms) {
107107
await input.setValue(term)
108-
vi.advanceTimersByTime(50) // Less than debounce delay
108+
await vi.advanceTimersByTimeAsync(50) // Less than debounce delay
109109
}
110+
await nextTick()
110111

111112
// Should not have emitted yet
112-
expect(wrapper.emitted('update:modelValue')).toBeFalsy()
113+
expect(wrapper.emitted('search')).toBeFalsy()
113114

114115
// Complete the debounce delay
115-
vi.advanceTimersByTime(300)
116+
await vi.advanceTimersByTimeAsync(350)
116117
await nextTick()
117118

118119
// Should emit only once with final value
119-
expect(wrapper.emitted('update:modelValue')).toHaveLength(1)
120-
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['search'])
120+
expect(wrapper.emitted('search')).toHaveLength(1)
121+
expect(wrapper.emitted('search')?.[0]).toEqual(['search', []])
121122
})
122123

123124
describe('bidirectional model sync', () => {

src/components/common/SearchBox.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
:autofocus
1515
unstyled
1616
class="absolute inset-0 size-full pl-11 border-none outline-none bg-transparent text-sm"
17+
:aria-label="placeholder"
1718
/>
1819
<IconButton
1920
v-if="filterIcon"

0 commit comments

Comments
 (0)