import { render, screen } from '@testing-library/react';
import type React from 'react';
import { describe, expect, it, vi } from 'vitest';
import { SwapSettingsSlippageDescription } from './SwapSettingsSlippageDescription';
import { SwapSettingsSlippageInput } from './SwapSettingsSlippageInput';
import { SwapSettingsSlippageLayoutBottomSheet } from './SwapSettingsSlippageLayoutBottomSheet';
import { SwapSettingsSlippageTitle } from './SwapSettingsSlippageTitle';
vi.mock('./SwapSettingsSlippageTitle', () => ({
SwapSettingsSlippageTitle: ({ children }: { children: React.ReactNode }) => (
{children}
),
}));
vi.mock('./SwapSettingsSlippageDescription', () => ({
SwapSettingsSlippageDescription: ({
children,
}: {
children: React.ReactNode;
}) => {children}
,
}));
vi.mock('./SwapSettingsSlippageInput', () => ({
SwapSettingsSlippageInput: () => Input
,
}));
vi.mock('../styles/theme', () => ({
cn: (...args: string[]) => args.join(' '),
background: { default: 'bg-default' },
border: { default: 'border-default' },
pressable: { shadow: 'pressable-shadow' },
}));
describe('SwapSettingsSlippageLayoutBottomSheet', () => {
it('renders with all child components', () => {
render(
Title
Description
,
);
expect(
screen.getByTestId('ockSwapSettingsLayout_container'),
).toBeInTheDocument();
expect(screen.getByTestId('mock-title')).toBeInTheDocument();
expect(screen.getByTestId('mock-description')).toBeInTheDocument();
expect(screen.getByTestId('mock-input')).toBeInTheDocument();
});
it('applies custom className', () => {
render(
Title
,
);
const container = screen.getByTestId('ockSwapSettingsLayout_container');
expect(container.className).toContain('custom-class');
});
it('renders without any valid child components', () => {
render(
test
,
);
expect(
screen.getByTestId('ockSwapSettingsLayout_container'),
).toBeInTheDocument();
expect(screen.queryByTestId('mock-title')).not.toBeInTheDocument();
expect(screen.queryByTestId('mock-description')).not.toBeInTheDocument();
expect(screen.queryByTestId('mock-input')).not.toBeInTheDocument();
});
});