Skip to content

Commit

Permalink
chore: update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
shan8851 committed Feb 17, 2025
1 parent af67090 commit 0c751d1
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 60 deletions.
40 changes: 15 additions & 25 deletions src/core/components/tabs/tabsList/tabsList.test.tsx
Original file line number Diff line number Diff line change
@@ -1,39 +1,29 @@
import { render, screen } from '@testing-library/react';
import { Tabs, type ITabsListProps } from '../../tabs';
import { Tabs } from '../../tabs';
import type { ReactNode } from 'react';

describe('<Tabs.List /> component', () => {
const createSingleTabTestComponent = (props?: Partial<ITabsListProps>) => {
const completeProps: ITabsListProps = { ...props };
return (
<Tabs.Root>
<Tabs.List {...completeProps}>
<Tabs.Trigger label="Tab 1" value="1" />
</Tabs.List>
</Tabs.Root>
);
};
const createMultiTabsTestComponent = (props?: Partial<ITabsListProps>) => {
const completeProps: ITabsListProps = { ...props };
return (
<Tabs.Root>
<Tabs.List {...completeProps}>
const createTestComponent = (children: ReactNode) => (
<Tabs.Root>
<Tabs.List>{children}</Tabs.List>
</Tabs.Root>
);

it('should render multiple tab triggers without crashing', () => {
render(
createTestComponent(
<>
<Tabs.Trigger label="Tab 1" value="1" />
<Tabs.Trigger label="Tab 2" value="2" />
</Tabs.List>
</Tabs.Root>
</>,
),
);
};

it('should render multiple tab triggers without crashing', () => {
render(createMultiTabsTestComponent());

expect(screen.getByText('Tab 1')).toBeInTheDocument();
expect(screen.getByText('Tab 2')).toBeInTheDocument();
});

it('should render null when only a single tab trigger is present', () => {
render(createSingleTabTestComponent());

render(createTestComponent(<Tabs.Trigger label="Tab 1" value="1" />));
expect(screen.queryByText('Tab 1')).not.toBeInTheDocument();
});
});
54 changes: 19 additions & 35 deletions src/core/components/tabs/tabsTrigger/tabsTrigger.test.tsx
Original file line number Diff line number Diff line change
@@ -1,57 +1,41 @@
import { render, screen } from '@testing-library/react';
import { IconType } from '../../icon';
import { Tabs, type ITabsTriggerProps } from '../../tabs';
import { TabsList as RadixTabsList, Tabs as RadixTabsRoot } from '@radix-ui/react-tabs';

describe('<Tabs.Trigger /> component', () => {
const createTestComponent = (tabs: ITabsTriggerProps[]) => (
<Tabs.Root defaultValue="1">
<Tabs.List>
{tabs.map((props, index) => (
<Tabs.Trigger key={index} {...props} />
))}
</Tabs.List>
</Tabs.Root>
);

it('renders a tab', () => {
render(
createTestComponent([
{ label: 'Tab 1', value: '1' },
{ label: 'Tab 2', value: '2' },
]),
const createTestComponent = (props?: Partial<ITabsTriggerProps>) => {
const completeProps: ITabsTriggerProps = {
label: 'Tab 1',
value: '1',
...props,
};

return (
<RadixTabsRoot>
<RadixTabsList>
<Tabs.Trigger {...completeProps} />
</RadixTabsList>
</RadixTabsRoot>
);
};

it('renders a tab', () => {
render(createTestComponent());
const tab = screen.getByRole('tab', { name: 'Tab 1' });
expect(tab).toBeInTheDocument();
expect(tab.getAttribute('disabled')).toBeNull();
});

it('renders the icon when iconRight is provided', () => {
const iconRight = IconType.BLOCKCHAIN_BLOCK;
render(
createTestComponent([
{ label: 'Tab 1', value: '1', iconRight },
{ label: 'Tab 2', value: '2' },
]),
);

render(createTestComponent({ iconRight }));
expect(screen.getByTestId(iconRight)).toBeInTheDocument();
});

it('disables the tab when the disabled property is set to true', () => {
render(
createTestComponent([
{ label: 'Tab 1', value: '1', disabled: true },
{ label: 'Tab 2', value: '2' },
]),
);

render(createTestComponent({ disabled: true }));
const tab = screen.getByRole('tab', { name: 'Tab 1' });
expect(tab.getAttribute('disabled')).toEqual('');
});

it('does not render the Tabs.List or Tabs.Trigger in a single tab setup', () => {
render(createTestComponent([{ label: 'Tab 1', value: '1' }]));
expect(screen.queryByRole('tab')).not.toBeInTheDocument();
});
});

0 comments on commit 0c751d1

Please sign in to comment.