import { render, screen } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import { ItemCard } from '../item-card';

const baseItem = {
  id: 'i-1',
  title: 'Vintage Tee',
  price: 1500,
  condition: 'EUC',
  storeName: 'Revive',
};

describe('ItemCard rating badge', () => {
  it('renders "★ 4.8 (142)" when storeReviewCount > 0', () => {
    render(
      <ItemCard
        item={{
          ...baseItem,
          storeAverageRating: 4.8,
          storeReviewCount: 142,
        }}
      />,
    );
    expect(screen.getByText('★')).toBeInTheDocument();
    expect(screen.getByText('4.8')).toBeInTheDocument();
    expect(screen.getByText('(142)')).toBeInTheDocument();
  });

  it('renders muted "No reviews yet" when storeReviewCount === 0', () => {
    render(
      <ItemCard
        item={{
          ...baseItem,
          storeAverageRating: null,
          storeReviewCount: 0,
        }}
      />,
    );
    expect(screen.getByText('No reviews yet')).toBeInTheDocument();
    expect(screen.queryByText('★')).toBeNull();
  });

  it('renders nothing rating-related when both fields are undefined (legacy item rows)', () => {
    render(<ItemCard item={baseItem} />);
    expect(screen.queryByText('★')).toBeNull();
    expect(screen.queryByText('No reviews yet')).toBeNull();
  });

  it('rounds the rating to one decimal (4.85 → 4.9)', () => {
    render(
      <ItemCard
        item={{
          ...baseItem,
          storeAverageRating: 4.85,
          storeReviewCount: 3,
        }}
      />,
    );
    expect(screen.getByText('4.9')).toBeInTheDocument();
  });
});
