Skip to content

Commit b3e0a68

Browse files
committed
test: add unit tests for AchievementsSkeleton Component
1 parent 4fda518 commit b3e0a68

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { render, screen } from '@testing-library/react';
2+
import { describe, it, expect } from 'vitest';
3+
4+
import AchievementsSkeleton from './AchievementsSkeleton';
5+
6+
describe('AchievementsSkeleton', () => {
7+
it(' renders without crashing', () => {
8+
expect(render(<AchievementsSkeleton />));
9+
});
10+
it(' renders exactly 4 skeleton cells.', () => {
11+
render(<AchievementsSkeleton />);
12+
const cells = screen.getAllByTestId('skeleton-cell');
13+
expect(cells).toHaveLength(4);
14+
});
15+
it('each cell has the shimmer class.', () => {
16+
render(<AchievementsSkeleton />);
17+
const cells = screen.getAllByTestId('skeleton-cell');
18+
19+
cells.forEach((cell) => {
20+
expect(cell.classList).toContain('shimmer');
21+
});
22+
});
23+
it('uses a grid-cols-2 layout.', () => {
24+
const { container } = render(<AchievementsSkeleton />);
25+
expect(container.querySelector('.grid-cols-2')).toBeTruthy();
26+
});
27+
});

components/dashboard/AchievementsSkeleton.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ export default function AchievementsSkeleton() {
22
return (
33
<div className="grid grid-cols-2 gap-2">
44
{[...Array(4)].map((_, i) => (
5-
<div key={i} className="h-16 shimmer rounded border border-white/5" />
5+
<div
6+
key={i}
7+
className="h-16 shimmer rounded border border-white/5"
8+
data-testid="skeleton-cell"
9+
/>
610
))}
711
</div>
812
);

0 commit comments

Comments
 (0)