add tests
This commit is contained in:
153
apps/website/components/admin/AdminDataTable.test.tsx
Normal file
153
apps/website/components/admin/AdminDataTable.test.tsx
Normal file
@@ -0,0 +1,153 @@
|
||||
/**
|
||||
* AdminDataTable Component Tests
|
||||
*
|
||||
* Tests for the AdminDataTable component that provides a consistent
|
||||
* container for high-density admin tables.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { AdminDataTable } from './AdminDataTable';
|
||||
import { describe, it, expect } from 'vitest';
|
||||
|
||||
describe('AdminDataTable', () => {
|
||||
it('should render children content', () => {
|
||||
render(
|
||||
<AdminDataTable>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Test Data</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</AdminDataTable>
|
||||
);
|
||||
|
||||
expect(screen.getByText('Test Data')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should render with maxHeight prop', () => {
|
||||
render(
|
||||
<AdminDataTable maxHeight={400}>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Scrollable Content</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</AdminDataTable>
|
||||
);
|
||||
|
||||
expect(screen.getByText('Scrollable Content')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should render with string maxHeight prop', () => {
|
||||
render(
|
||||
<AdminDataTable maxHeight="500px">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Scrollable Content</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</AdminDataTable>
|
||||
);
|
||||
|
||||
expect(screen.getByText('Scrollable Content')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should render without maxHeight prop', () => {
|
||||
render(
|
||||
<AdminDataTable>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Content</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</AdminDataTable>
|
||||
);
|
||||
|
||||
expect(screen.getByText('Content')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should render multiple table rows', () => {
|
||||
render(
|
||||
<AdminDataTable>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Row 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Row 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Row 3</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</AdminDataTable>
|
||||
);
|
||||
|
||||
expect(screen.getByText('Row 1')).toBeInTheDocument();
|
||||
expect(screen.getByText('Row 2')).toBeInTheDocument();
|
||||
expect(screen.getByText('Row 3')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should render with complex table structure', () => {
|
||||
render(
|
||||
<AdminDataTable>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Data 1</td>
|
||||
<td>Data 2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</AdminDataTable>
|
||||
);
|
||||
|
||||
expect(screen.getByText('Header 1')).toBeInTheDocument();
|
||||
expect(screen.getByText('Header 2')).toBeInTheDocument();
|
||||
expect(screen.getByText('Data 1')).toBeInTheDocument();
|
||||
expect(screen.getByText('Data 2')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should render with nested components', () => {
|
||||
const NestedComponent = () => (
|
||||
<div>
|
||||
<span>Nested</span>
|
||||
<button>Action</button>
|
||||
</div>
|
||||
);
|
||||
|
||||
render(
|
||||
<AdminDataTable>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<NestedComponent />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</AdminDataTable>
|
||||
);
|
||||
|
||||
expect(screen.getByText('Nested')).toBeInTheDocument();
|
||||
expect(screen.getByText('Action')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user