/**
 * QuickLinks Component Tests
 *
 * Quick link hrefs arrive pre-resolved (AMSOIL links already carry the
 * dealer's ZO attribution). ZO-attributed links are compensated, so they
 * must carry rel="sponsored" even when they open in the same tab; other
 * links keep the plain security rel semantics.
 */

import { render, screen } from '@testing-library/react';
import { QuickLinks } from '../QuickLinks';
import { QuickLink } from '@/types/dealer';

describe('QuickLinks', () => {
  const links: QuickLink[] = [
    { label: 'Shop AMSOIL', href: 'https://www.amsoil.com/shop/?zo=123456', openInNewTab: true },
    { label: 'Catalog', href: 'https://www.amsoil.com/catalog/?zo=123456', openInNewTab: false },
    { label: 'Our Facebook', href: 'https://facebook.com/dealer', openInNewTab: true },
    { label: 'About Us', href: '/about', openInNewTab: false },
  ];

  it('renders nothing for empty links', () => {
    const { container } = render(<QuickLinks links={[]} />);
    expect(container).toBeEmptyDOMElement();
  });

  it('marks AMSOIL links rel="sponsored" with new-tab security attrs', () => {
    render(<QuickLinks links={links} />);

    const shop = screen.getByText('Shop AMSOIL').closest('a');
    expect(shop).toHaveAttribute('target', '_blank');
    expect(shop).toHaveAttribute('rel', 'sponsored noopener noreferrer');
  });

  it('marks same-tab AMSOIL links rel="sponsored" without noopener', () => {
    render(<QuickLinks links={links} />);

    const catalog = screen.getByText('Catalog').closest('a');
    expect(catalog).not.toHaveAttribute('target');
    expect(catalog).toHaveAttribute('rel', 'sponsored');
  });

  it('keeps plain security rel on non-AMSOIL external links', () => {
    render(<QuickLinks links={links} />);

    const facebook = screen.getByText('Our Facebook').closest('a');
    expect(facebook).toHaveAttribute('target', '_blank');
    expect(facebook).toHaveAttribute('rel', 'noopener noreferrer');
  });

  it('adds no rel to internal same-tab links', () => {
    render(<QuickLinks links={links} />);

    const about = screen.getByText('About Us').closest('a');
    expect(about).not.toHaveAttribute('target');
    expect(about).not.toHaveAttribute('rel');
  });
});
