import {getAenLogo} from './logoService';
import http from '@/http';

const mockedHttp = http as jest.Mocked<typeof http>;

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

  it('shouldReturnTheLogoUrlOfTheEntry', async () => {
    mockedHttp.get.mockResolvedValueOnce({status: 200, data: {url: 'https://media.tamm-kreiz.bzh/logo.png'}});

    expect(await getAenLogo(2025)).toBe('https://media.tamm-kreiz.bzh/logo.png');
    expect(mockedHttp.get).toHaveBeenCalledWith('/media/annuaire_entree/2025/Logo');
  });

  it('shouldReturnNullWhenTheApiServesAPlaceholderImage', async () => {
    mockedHttp.get.mockResolvedValueOnce({
      status: 200,
      data: {url: 'https://dummyimage.com/600x400/f60/fff&text=Votre+image+ici...'},
    });

    expect(await getAenLogo(2025)).toBeNull();
  });

  it('shouldReturnNullWhenThereIsNoUrl', async () => {
    mockedHttp.get.mockResolvedValueOnce({status: 200, data: {}});

    expect(await getAenLogo(2025)).toBeNull();
  });

  it('shouldReturnNullWhenTheApiFails', async () => {
    mockedHttp.get.mockRejectedValueOnce(new Error('HTTP 404'));

    expect(await getAenLogo('2025')).toBeNull();
  });
});
