/* * Copyright 2025 coze-dev Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { expect, vi, describe, test } from 'vitest'; import { fireEvent, render, screen } from '@testing-library/react'; import { type SelectProps } from '@coze-arch/coze-design'; import { SinglelineSelect } from '../src/components/singleline-select'; const handleChangeMock = vi.fn(); vi.mock('@coze-arch/i18n', () => ({ I18n: { t: (key: string) => key, }, })); vi.mock('@coze-arch/coze-design', () => ({ // eslint-disable-next-line @typescript-eslint/naming-convention Select: (props: SelectProps) => { const { optionList, onChange } = props; return ( <> {optionList?.map(option => (
onChange?.(option.value)}> {option.value}
))} ); }, })); describe('singleline select test', () => { test('render', async () => { await render( , ); const text = await screen.queryByText('test'); expect(text).not.toBeNull(); await render( , ); const errorMsg = await screen.queryByText('test-error'); expect(errorMsg).not.toBeNull(); }); test('change', async () => { await render( , ); const selector = await screen.queryByText('test'); await fireEvent.click(selector!); expect(handleChangeMock).toBeCalledWith('test'); }); });