import { describe, test, expect } from 'vitest';
import { Navbar } from './Navbar';

const toHtml = (Navbar as any).toHtml;

describe('Navbar.toHtml hamburger accessibility (F2.3)', () => {
  test('mobile toggle button has an accessible name, aria-expanded, and aria-controls', () => {
    const { html } = toHtml({ showMobileMenu: true }, '');
    expect(html).toMatch(/class="navbar-hamburger"[^>]*aria-label="Toggle navigation menu"/);
    expect(html).toMatch(/aria-expanded="false"/);
    expect(html).toMatch(/aria-controls="navbar-links"/);
  });

  test('aria-controls target id exists on the links container', () => {
    const { html } = toHtml({ showMobileMenu: true }, '');
    expect(html).toContain('id="navbar-links"');
  });

  test('toggle script flips aria-expanded on click', () => {
    const { html } = toHtml({ showMobileMenu: true }, '');
    expect(html).toMatch(/setAttribute\(['"]aria-expanded['"]/);
  });

  test('no mobile menu: no hamburger button emitted', () => {
    const { html } = toHtml({ showMobileMenu: false }, '');
    expect(html).not.toContain('navbar-hamburger');
  });
});
