/** @jest-environment node */
const mockGetDealers = jest.fn();
jest.mock('@/lib/dealer-directory', () => ({
  ...jest.requireActual('@/lib/dealer-directory'),
  getDealersForApex: (...a: unknown[]) => mockGetDealers(...a),
}));

import { generateMetadata } from '../[domainSlug]/[region]/page';
import { MIN_DEALERS_FOR_REGION_PAGE } from '@/lib/dealer-directory';

const texan = (i: number) => ({
  subdomain: `tx-${i}`,
  businessName: `Dealer ${i}`,
  city: 'Austin',
  state: 'TX',
  country: 'US',
  description: 'desc',
  logoUrl: null,
  customDomain: null,
  customDomainStatus: 'none',
  subscriptionTier: 'Starter',
  pageContent: null,
});

describe('region page metadata', () => {
  it('canonical is the public /dealers/{region} URL', async () => {
    mockGetDealers.mockResolvedValue(
      Array.from({ length: MIN_DEALERS_FOR_REGION_PAGE }, (_, i) => texan(i))
    );
    const m = await generateMetadata({
      params: Promise.resolve({ domainSlug: 'myamsoil-com', region: 'texas' }),
    });
    expect(m.alternates?.canonical).toBe('https://myamsoil.com/dealers/texas');
    expect(m.title).toContain('Texas');
  });

  it('returns empty metadata for unknown region slugs (page 404s)', async () => {
    const m = await generateMetadata({
      params: Promise.resolve({ domainSlug: 'myamsoil-com', region: 'ann-arbor' }),
    });
    expect(m).toEqual({});
  });
});
