diff --git a/src/tests/Tables_tests/TableBase.test.js b/src/tests/Tables_tests/TableBase.test.js new file mode 100644 index 00000000..7f48656e --- /dev/null +++ b/src/tests/Tables_tests/TableBase.test.js @@ -0,0 +1,91 @@ +import React from 'react'; +import { render, screen, fireEvent } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { Actions, EnableState, StatusColumn, TableBase } from '../../components/Tables/TableBase'; + +jest.mock('../../components/ComponentsLib', () => ({ + Checkbox: ({ isChecked, checkHandler }) => ( + + ), + AddButton: ({ disabled, onClick }) => ( + + ), +})); + +describe('Actions Component', () => { + test('renders edit and delete buttons and triggers click events', () => { + const onEditClick = jest.fn(); + const onDeleteClick = jest.fn(); + + const { container } = render(); + + const editButton = container.querySelector('.edit'); + const deleteButton = container.querySelector('.delete'); + + fireEvent.click(editButton); + fireEvent.click(deleteButton); + + expect(onEditClick).toHaveBeenCalledTimes(1); + expect(onDeleteClick).toHaveBeenCalledTimes(1); + }); +}); + +describe('EnableState Component', () => { + test('renders checkbox with correct state and triggers change event', () => { + const checkHandler = jest.fn(); + + render(); + + const checkbox = screen.getByTestId('checkbox'); + expect(checkbox.checked).toBe(true); + + fireEvent.click(checkbox); + expect(checkHandler).toHaveBeenCalledTimes(1); + }); +}); + +describe('StatusColumn Component', () => { + test('renders "done" icon when there are no messages', () => { + const { container } = render(); + + const doneIcon = container.querySelector('svg'); + expect(doneIcon).toBeInTheDocument(); + + const checkmarkPath = doneIcon.querySelectorAll('path')[1]; + expect(checkmarkPath.getAttribute('d')).toBe('M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z'); + }); +}); + +describe('TableBase Component', () => { + test('renders table with headers and calls onClick when AddButton is clicked', () => { + const onClick = jest.fn(); + const headers = ['Header 1', 'Header 2']; + + render(); + + const header1 = screen.getByText(/Header 1/i); + const header2 = screen.getByText(/Header 2/i); + const addButton = screen.getByTestId('add-button'); + + expect(header1).toBeInTheDocument(); + expect(header2).toBeInTheDocument(); + + fireEvent.click(addButton); + expect(onClick).toHaveBeenCalledTimes(1); + }); + + test('does not render "Add" button when hideAddBtn is true', () => { + const onClick = jest.fn(); + const headers = ['Header 1', 'Header 2']; + + render(); + + const addButton = screen.queryByTestId('add-button'); + expect(addButton).not.toBeInTheDocument(); + }); +});