import { describe, expect, it } from 'vitest';
import MagazineSearchBody from './MagazineSearchBody.astro';
import { SEARCH_HIT, assertSearchInputHasNoPlaceholder, renderBodyComponent } from '../../test/body-component-render';

describe('MagazineSearchBody', () => {
  it('renders results when hits are present', async () => {
    const html = await renderBodyComponent(MagazineSearchBody, {
      q: 'alpha',
      hasQuery: true,
      hits: [SEARCH_HIT],
      nextHref: null,
    });
    assertSearchInputHasNoPlaceholder(html);
    expect(html).toContain('class="magazine-search__results"');
    expect(html).toContain('Search hit title');
  });

  it('renders empty state when query has no hits', async () => {
    const html = await renderBodyComponent(MagazineSearchBody, {
      q: 'missing',
      hasQuery: true,
      hits: [],
      nextHref: null,
    });
    expect(html).toContain('No results.');
    expect(html).not.toContain('class="magazine-search__results"');
  });

  it('omits results and empty state before a query is submitted', async () => {
    const html = await renderBodyComponent(MagazineSearchBody, {
      q: '',
      hasQuery: false,
      hits: [],
      nextHref: null,
    });
    expect(html).not.toContain('No results.');
    expect(html).not.toContain('class="magazine-search__results"');
    assertSearchInputHasNoPlaceholder(html);
  });
});
