Files
new-api-custom/web/src/components/multi-select/__tests__/option-hint.test.tsx
T
cneicy ceddfd3d6b feat: sync deployed v1.0.0-rc.38-custom.42
Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
2026-09-26 04:49:11 +08:00

54 lines
1.8 KiB
TypeScript

/*
Copyright (C) 2023-2026 QuantumNous
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
For commercial licensing, please contact support@quantumnous.com
*/
import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { expect, test } from 'vitest'
import { MultiSelect } from '@/components/multi-select'
test('hinted options show the hint in the dropdown and mark their chips without changing the chip name', async () => {
const user = userEvent.setup()
render(
<MultiSelect
options={[
{ value: 'alias', label: 'alias', hint: 'Redirects to upstream' },
{ value: 'plain', label: 'plain' },
]}
selected={['alias', 'plain']}
onChange={() => undefined}
copyChipOnClick
/>
)
expect(screen.getByRole('button', { name: 'alias' })).toBeVisible()
expect(screen.getByTitle('Redirects to upstream')).toHaveAttribute(
'aria-hidden',
'true'
)
expect(screen.getAllByTitle('Redirects to upstream')).toHaveLength(1)
await user.click(screen.getByRole('combobox'))
expect(screen.getByRole('option', { name: /^alias/ })).toHaveTextContent(
'Redirects to upstream'
)
expect(screen.getByRole('option', { name: 'plain' })).not.toHaveTextContent(
'Redirects to upstream'
)
})