// Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
import { onMounted, ref } from 'vue'
import { renderComponent } from '#tests/support/components/index.ts'
import CommonInputSearch, {
type CommonInputSearchExpose,
} from '../CommonInputSearch.vue'
describe('testing input for searching', () => {
it('renders input', async () => {
const view = renderComponent(CommonInputSearch, {
vModel: {
modelValue: '',
},
})
expect(view.getByIconName('search')).toBeInTheDocument()
expect(view.queryByIconName('close-small')).not.toBeInTheDocument()
await view.events.type(view.getByRole('searchbox'), 'test')
const clearButton = view.getByIconName('close-small')
expect(clearButton).toBeInTheDocument()
await view.events.click(clearButton)
expect(view.getByRole('searchbox')).toHaveDisplayValue('')
})
it('can focus outside of the component', async () => {
let focus: () => void
const component = {
components: { CommonInputSearch },
template: ``,
setup() {
const searchInput = ref()
onMounted(() => {
;({ focus } = searchInput.value!)
})
return { searchInput }
},
}
const view = renderComponent(component)
focus!()
expect(view.getByRole('searchbox')).toHaveFocus()
})
})