|
1 | 1 | import userEvent from '@testing-library/user-event';
|
2 |
| -import { fireEvent, waitFor, act, getByLabelText } from '@testing-library/react'; |
| 2 | +import { fireEvent, waitFor, act, getByLabelText, getByText } from '@testing-library/react'; |
3 | 3 | import { Table } from '../Table';
|
4 | 4 | import { TableBody, TableCell, TableRow } from '../TableBody';
|
5 | 5 | import { TableFooter, TableFooterCell, TableFooterRow } from '../TableFooter';
|
@@ -341,6 +341,50 @@ describe('<Table />', () => {
|
341 | 341 | expect(getAllByRole('row')[0]).toHaveTextContent('completed');
|
342 | 342 | });
|
343 | 343 |
|
| 344 | + it('should render table with single select', async () => { |
| 345 | + const onSelectionChange = jest.fn(); |
| 346 | + const user = userEvent.setup(); |
| 347 | + const { getByText } = renderWithTheme( |
| 348 | + <Table |
| 349 | + data={{ nodes: nodes.slice(0, 5) }} |
| 350 | + selectionType="single" |
| 351 | + onSelectionChange={onSelectionChange} |
| 352 | + > |
| 353 | + {(tableData) => ( |
| 354 | + <> |
| 355 | + <TableHeader> |
| 356 | + <TableHeaderRow> |
| 357 | + <TableHeaderCell>Payment ID</TableHeaderCell> |
| 358 | + <TableHeaderCell>Amount</TableHeaderCell> |
| 359 | + <TableHeaderCell>Status</TableHeaderCell> |
| 360 | + <TableHeaderCell>Type</TableHeaderCell> |
| 361 | + <TableHeaderCell>Method</TableHeaderCell> |
| 362 | + <TableHeaderCell>Name</TableHeaderCell> |
| 363 | + </TableHeaderRow> |
| 364 | + </TableHeader> |
| 365 | + <TableBody> |
| 366 | + {tableData.map((tableItem, index) => ( |
| 367 | + <TableRow item={tableItem} key={index}> |
| 368 | + <TableCell>{tableItem.paymentId}</TableCell> |
| 369 | + <TableCell>{tableItem.amount}</TableCell> |
| 370 | + <TableCell>{tableItem.status}</TableCell> |
| 371 | + <TableCell>{tableItem.type}</TableCell> |
| 372 | + <TableCell>{tableItem.method}</TableCell> |
| 373 | + <TableCell>{tableItem.name}</TableCell> |
| 374 | + </TableRow> |
| 375 | + ))} |
| 376 | + </TableBody> |
| 377 | + </> |
| 378 | + )} |
| 379 | + </Table>, |
| 380 | + ); |
| 381 | + |
| 382 | + const selectableRow = getByText('rzp01').closest('td'); |
| 383 | + if (selectableRow) await user.click(selectableRow); |
| 384 | + expect(onSelectionChange).toHaveBeenCalledTimes(1); |
| 385 | + expect(onSelectionChange).toHaveBeenCalledWith({ values: [nodes[0]] }); |
| 386 | + }); |
| 387 | + |
344 | 388 | it('should render table with pagination', async () => {
|
345 | 389 | const onPageChange = jest.fn();
|
346 | 390 | const onPageSizeChange = jest.fn();
|
|
0 commit comments