import { render, screen } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import { ActivityCardSkeleton } from './ActivityCardSkeleton';
import React from 'react';
describe('ActivityCardSkeleton', () => {
it('renders the default number of skeleton rows (5)', () => {
render();
expect(screen.getAllByRole('listitem')).toHaveLength(5);
});
it('renders a custom number of rows', () => {
render();
expect(screen.getAllByRole('listitem')).toHaveLength(3);
});
it('renders zero rows when rows is 0', () => {
render();
expect(screen.queryAllByRole('listitem')).toHaveLength(0);
});
it('renders the title skeleton plus per-row skeletons (avatar, text, badge)', () => {
const { container } = render();
// 1 title skeleton + 2 rows * 3 skeletons each (avatar, action line, timestamp) + badge... = 1 + 2*4
const skeletons = container.querySelectorAll('[data-slot="skeleton"]');
// Title (1) + per row: avatar, action line, timestamp, badge = 4 -> 1 + 2*4 = 9
expect(skeletons.length).toBe(9);
});
it('applies a custom className to the root Card', () => {
const { container } = render();
expect(container.querySelector('[data-slot="card"]')).toHaveClass('custom-activity');
});
it('forwards extra props to the root Card element', () => {
render();
expect(screen.getByTestId('activity-skeleton')).toBeInTheDocument();
});
});