import React from 'react';
import {render, screen, waitFor} from '@testing-library/react';

jest.mock('next/link', () => ({
  __esModule: true,
  default: ({children, href, ...rest}: {children: React.ReactNode; href: string}) => <a href={href} {...rest}>{children}</a>,
}));
jest.mock('@/services/evenementService', () => ({getAffichesAdherents: jest.fn()}));

import AffichesAdherents from '../AffichesAdherents';
import {getAffichesAdherents} from '@/services/evenementService';

const mockedGetAffiches = getAffichesAdherents as jest.Mock;

describe('AffichesAdherents', () => {
  beforeEach(() => jest.clearAllMocks());

  it('shouldScrollThePostersOfUpcomingMemberEventsLinkedToTheEvent', async () => {
    mockedGetAffiches.mockResolvedValue([
      {eveId: 12, libelle: 'Fest-noz de Carhaix', date: '2026-11-07', vilNom: 'Carhaix', afficheUrl: 'https://pimcore.test/12.jpg'},
      {eveId: 20, libelle: 'Concert à Lorient', date: '2026-11-20', vilNom: 'Lorient', afficheUrl: 'https://pimcore.test/20.jpg'},
    ]);
    render(<AffichesAdherents locale="fr" />);

    await waitFor(() => expect(screen.getByTestId('footer-affiches')).toBeInTheDocument());
    expect(mockedGetAffiches).toHaveBeenCalledWith(12);
    expect(screen.getByRole('img', {name: 'Fest-noz de Carhaix'})).toHaveAttribute('src', 'https://pimcore.test/12.jpg');
    expect(screen.getByRole('img', {name: 'Fest-noz de Carhaix'}).closest('a')).toHaveAttribute('href', '/fr/evenement/12/fest-noz-de-carhaix');
    expect(screen.getByRole('img', {name: 'Concert à Lorient'}).closest('a')).toHaveAttribute('href', '/fr/evenement/20/concert-a-lorient');
    expect(screen.getByText('footer_affiches_title')).toBeInTheDocument();
  });

  it('shouldRenderNothingWithoutUpcomingMemberEvent', async () => {
    mockedGetAffiches.mockResolvedValue([]);
    const {container} = render(<AffichesAdherents locale="fr" />);

    await waitFor(() => expect(mockedGetAffiches).toHaveBeenCalled());
    expect(container).toBeEmptyDOMElement();
  });
});
