| |
| |
| |
| |
| |
| |
|
|
| import { mount } from '@vue/test-utils'; |
| import SearchInput from './SearchInput.vue'; |
|
|
| describe('CoreHome/SearchInput', () => { |
| it('renders the search icon and translated placeholder', () => { |
| const wrapper = mount(SearchInput, { |
| props: { |
| modelValue: '', |
| }, |
| }); |
|
|
| expect(wrapper.find('.icon-search').exists()).toBe(true); |
| expect(wrapper.find('input').attributes('placeholder')).toBe('General_Search'); |
| }); |
|
|
| it('reflects the provided model value', () => { |
| const wrapper = mount(SearchInput, { |
| props: { |
| modelValue: 'segment', |
| }, |
| }); |
|
|
| expect((wrapper.find('input').element as HTMLInputElement).value).toBe('segment'); |
| }); |
|
|
| it('emits update:modelValue when the input value changes', async () => { |
| const wrapper = mount(SearchInput, { |
| props: { |
| modelValue: '', |
| }, |
| }); |
|
|
| await wrapper.find('input').setValue('country'); |
|
|
| expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['country']); |
| }); |
|
|
| it('clears to an empty string when the clear button is clicked', async () => { |
| const wrapper = mount(SearchInput, { |
| props: { |
| modelValue: 'country', |
| showClear: true, |
| }, |
| }); |
|
|
| await wrapper.find('.searchInputClear').trigger('click'); |
|
|
| expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['']); |
| }); |
| }); |
|
|