import React from 'react'; import { describe, it, expect } from 'vitest'; import { render } from '@testing-library/react'; import { PixelTestimonialCard } from '../../cards/PixelTestimonialCard'; describe('PixelTestimonialCard', () => { it('renders quote inside blockquote', () => { const { container, getByText } = render( , ); const blockquote = container.querySelector('blockquote'); expect(blockquote).toBeTruthy(); expect(getByText(/This kit shipped my landing page in a day\./)).toBeTruthy(); }); it('renders name and role', () => { const { getByText } = render( , ); expect(getByText('Ada Lovelace')).toBeTruthy(); expect(getByText(/Founder/)).toBeTruthy(); }); it('stars=5 renders 5 stars', () => { const { container } = render( , ); const stars = container.querySelectorAll('[data-pxl-star]'); expect(stars.length).toBe(5); }); it('verified=true renders verified badge', () => { const { container } = render( , ); const badge = container.querySelector('[data-pxl-verified]'); expect(badge).toBeTruthy(); }); it('quoteSize="long" applies min-h-[9em]', () => { const { container } = render( , ); const slot = container.querySelector('[data-pxl-quote-slot]') as HTMLElement; expect(slot).toBeTruthy(); expect(slot.className).toContain('min-h-[9em]'); }); it('variant="quote" omits card border classes', () => { const { container } = render( , ); const article = container.querySelector('article') as HTMLElement; expect(article).toBeTruthy(); expect(article.className).not.toContain('border-2'); expect(article.className).not.toContain('border-retro-border'); }); it('avatar renders with name fallback when no src', () => { const { container } = render( , ); const avatar = container.querySelector('[data-pxl-avatar]') as HTMLElement; expect(avatar).toBeTruthy(); // Initials "AL" fallback expect(avatar.textContent).toContain('AL'); }); });