Skip to content

Commit 9461850

Browse files
authored
test: adds test cases for various components (#354)
* test(BottomNavigation): adds test cases for BottomNavigation component * test(Breadcrumbs): adds test cases for Breadcrumbs component * test(ButtonGroup): adds test cases for ButtonGroup component * test(Card): adds test cases for Card component * test(Carousel): adds test cases for Carousel component * test(ChatBubble): adds test cases for ChatBubble component * test(Collapse): adds test cases for Collapse component * test(Countdown): adds test cases for Countdown component * test(Divider): adds test cases for Divider component * test(Drawer): adds test cases for Drawer component * test(Dropdown): adds test cases for Dropdown component * test(FileInput): adds test cases for FileInput component * test(Form): adds test cases for Form component * test(Hero): adds test cases for Hero component * test(Indicator): adds test cases for Indicator component * test(InputGroup): adds test cases for InputGroup component * test(Kbd): adds test cases for Kbd component * test(Link): adds test cases for Link component * test(Mask): adds test cases for Mask component * test(Menu): adds test cases for Menu component * test(NavBar): adds test cases for NavBar component * test(Pagination): adds test cases for Pagination component * test(PhoneMockup): adds test cases for PhoneMockup component * test(Progress): adds test cases for Progress component * test(RadialProgress): adds test cases for RadialProgress component * test(Stack): adds test cases for Stack component * test(Stats): adds test cases for Stats component * test(Steps): adds test cases for Steps component * test(Swap): adds test cases for Swap component * test(Table): adds test cases for Table component * test(Theme): adds test cases for Theme component * test(Toast): adds test cases for Toast component * test(Tooltip): adds test cases for Tooltip component * test(WindowMockup): adds test cases for WindowMockup component
1 parent 01168ec commit 9461850

4 files changed

Lines changed: 187 additions & 0 deletions

File tree

src/Theme/Theme.test.tsx

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { render, screen } from '@testing-library/react'
2+
import Theme from './'
3+
4+
describe('Theme', () => {
5+
it('Should render children elements', () => {
6+
render(
7+
<Theme>
8+
<div>Child component</div>
9+
</Theme>
10+
)
11+
12+
const childComponent = screen.getByText('Child component')
13+
expect(childComponent).toBeInTheDocument()
14+
})
15+
16+
it('Should render with default theme if no dataTheme prop is provided', () => {
17+
render(<Theme data-testid="theme-div" />)
18+
19+
const renderedDiv = screen.getByTestId('theme-div')
20+
expect(renderedDiv).toHaveAttribute('data-theme', 'light')
21+
})
22+
23+
it('Should use closest ancestor theme if no dataTheme prop is provided', () => {
24+
render(
25+
<div data-theme="ancestor-theme" data-testid="ancestor-div">
26+
<Theme />
27+
</div>
28+
)
29+
30+
const renderedDiv = screen.getByTestId('ancestor-div')
31+
expect(renderedDiv).toHaveAttribute('data-theme', 'ancestor-theme')
32+
})
33+
34+
it('Should pass down data-theme prop to the rendered div', () => {
35+
render(<Theme dataTheme="dark" data-testid="theme-div" />)
36+
37+
const renderedDiv = screen.getByTestId('theme-div')
38+
expect(renderedDiv).toHaveAttribute('data-theme', 'dark')
39+
})
40+
41+
it('Should update theme when dataTheme prop changes', () => {
42+
render(<Theme dataTheme="light" data-testid="theme-div-1" />)
43+
44+
let renderedDiv = screen.getByTestId('theme-div-1')
45+
expect(renderedDiv).toHaveAttribute('data-theme', 'light')
46+
47+
render(<Theme dataTheme="dark" data-testid="theme-div-2" />)
48+
49+
renderedDiv = screen.getByTestId('theme-div-2')
50+
expect(renderedDiv).toHaveAttribute('data-theme', 'dark')
51+
})
52+
})

src/Toast/Toast.test.tsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { render, screen } from '@testing-library/react'
2+
import Toast from './'
3+
4+
describe('Toast', () => {
5+
it('Should render children elements', () => {
6+
render(
7+
<Toast>
8+
<div>Child component</div>
9+
</Toast>
10+
)
11+
12+
const childComponent = screen.getByText('Child component')
13+
expect(childComponent).toBeInTheDocument()
14+
})
15+
16+
it('Should render with default horizontal and vertical options', () => {
17+
render(<Toast data-testid="toast-div" />)
18+
19+
const renderedDiv = screen.getByTestId('toast-div')
20+
expect(renderedDiv).toHaveClass('toast-end')
21+
expect(renderedDiv).toHaveClass('toast-bottom')
22+
})
23+
24+
it('Should render with custom horizontal and vertical options', () => {
25+
render(<Toast horizontal="start" vertical="top" data-testid="toast-div" />)
26+
27+
const renderedDiv = screen.getByTestId('toast-div')
28+
expect(renderedDiv).toHaveClass('toast-start')
29+
expect(renderedDiv).toHaveClass('toast-top')
30+
})
31+
32+
it('Should apply additional class names', () => {
33+
render(<Toast className="custom-toast" data-testid="toast-div" />)
34+
35+
const renderedDiv = screen.getByTestId('toast-div')
36+
expect(renderedDiv).toHaveClass('custom-toast')
37+
})
38+
})

src/Tooltip/Tooltip.test.tsx

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { render, screen } from '@testing-library/react'
2+
import Tooltip from './'
3+
4+
describe('Tooltip', () => {
5+
it('Should render with message and children', () => {
6+
render(
7+
<Tooltip message="Tooltip message">
8+
<button>Hover me</button>
9+
</Tooltip>
10+
)
11+
12+
const tooltipButton = screen.getByText('Hover me')
13+
expect(tooltipButton).toBeInTheDocument()
14+
15+
const tooltipDiv = screen.getByRole('tooltip')
16+
expect(tooltipDiv).toHaveAttribute('data-tip', 'Tooltip message')
17+
})
18+
19+
it('Should render with default styles and position', () => {
20+
render(<Tooltip message="Tooltip message" />)
21+
22+
const tooltipDiv = screen.getByRole('tooltip')
23+
expect(tooltipDiv).toHaveClass('tooltip')
24+
expect(tooltipDiv).not.toHaveClass('tooltip-open')
25+
expect(tooltipDiv).not.toHaveClass('tooltip-primary')
26+
expect(tooltipDiv).not.toHaveClass('tooltip-top')
27+
})
28+
29+
it('Should render with custom styles and position', () => {
30+
render(
31+
<Tooltip message="Tooltip message" open color="primary" position="top" />
32+
)
33+
34+
const tooltipDiv = screen.getByRole('tooltip')
35+
expect(tooltipDiv).toHaveClass('tooltip-open')
36+
expect(tooltipDiv).toHaveClass('tooltip-primary')
37+
expect(tooltipDiv).toHaveClass('tooltip-top')
38+
})
39+
40+
it('Should apply additional class names', () => {
41+
render(<Tooltip message="Tooltip message" className="custom-class" />)
42+
43+
const tooltipDiv = screen.getByRole('tooltip')
44+
expect(tooltipDiv).toHaveClass('custom-class')
45+
})
46+
})
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { render, screen } from '@testing-library/react'
2+
import WindowMockup from './'
3+
4+
describe('WindowMockup', () => {
5+
it('Should render WindowMockup', () => {
6+
render(<WindowMockup />)
7+
const windowMockup = screen.getByLabelText('Window mockup')
8+
expect(windowMockup).toBeInTheDocument()
9+
expect(windowMockup).toHaveClass('mockup-window')
10+
})
11+
12+
it('Should render with frameColor and backgroundColor', () => {
13+
render(
14+
<WindowMockup frameColor="primary" backgroundColor="accent">
15+
Content
16+
</WindowMockup>
17+
)
18+
const windowMockup = screen.getByLabelText('Window mockup')
19+
expect(windowMockup).toBeInTheDocument()
20+
expect(windowMockup).toHaveClass(
21+
'mockup-window',
22+
'border-primary',
23+
'bg-primary'
24+
)
25+
})
26+
27+
it('Should render with border and borderColor', () => {
28+
render(
29+
<WindowMockup border borderColor="error">
30+
Content
31+
</WindowMockup>
32+
)
33+
const windowMockup = screen.getByLabelText('Window mockup')
34+
expect(windowMockup).toBeInTheDocument()
35+
expect(windowMockup).toHaveClass('mockup-window', 'border', 'border-error')
36+
})
37+
38+
it('Should apply additional class names', () => {
39+
render(<WindowMockup className="custom-class">Content</WindowMockup>)
40+
const windowMockup = screen.getByLabelText('Window mockup')
41+
expect(windowMockup).toBeInTheDocument()
42+
expect(windowMockup).toHaveClass('mockup-window', 'custom-class')
43+
})
44+
45+
it('Should render with data-theme attribute', () => {
46+
render(<WindowMockup dataTheme="dark">Content</WindowMockup>)
47+
const windowMockup = screen.getByLabelText('Window mockup')
48+
expect(windowMockup).toBeInTheDocument()
49+
expect(windowMockup).toHaveAttribute('data-theme', 'dark')
50+
})
51+
})

0 commit comments

Comments
 (0)