import { describe, expect, it } from 'vitest'; import { locationPages } from '$lib/content/locations'; import { buildAreaServed, buildBreadcrumb, buildLocationSeo } from './seo'; import type { LocationPageContent } from '$lib/types'; describe('seo helpers', () => { it('derives area served from location content', () => { const areaServed = buildAreaServed(); expect(areaServed).toHaveLength(locationPages.length); expect(areaServed[0]).toEqual({ '@type': 'Place', name: `${locationPages[0].suburb}, Auckland, New Zealand` }); }); it('builds location seo from data with sensible defaults', () => { const seo = buildLocationSeo(locationPages[0]); expect(seo.title).toBe('Dog Walkers in Mt Eden | Goodwalk Auckland'); expect(seo.canonicalPath).toBe('/locations/mt-eden'); expect(seo.image).toBe('/images/auckland-pack-walk-small-dogs-group.jpg'); expect(seo.imageAlt).toBe('Goodwalk dog walkers in Mt Eden, Auckland'); expect(seo.structuredData).toHaveLength(2); }); it('builds breadcrumbs from real paths', () => { const breadcrumb = buildBreadcrumb([ { name: 'Home', url: 'https://www.goodwalk.co.nz' }, { name: 'Mt Eden', path: '/locations/mt-eden' } ]); expect(breadcrumb.itemListElement).toEqual([ { '@type': 'ListItem', position: 1, name: 'Home', item: 'https://www.goodwalk.co.nz' }, { '@type': 'ListItem', position: 2, name: 'Mt Eden', item: 'https://www.goodwalk.co.nz/locations/mt-eden' } ]); }); it('uses the first park image for seo when no explicit seo image is set', () => { const location: LocationPageContent = { suburb: 'Test Suburb', slug: 'test-suburb', intro: 'Test intro', parks: [ { name: 'Test Park', description: 'A local park for testing.', image: { src: '/images/test-park-photo.webp', alt: 'Dogs walking through Test Park' } } ] }; const seo = buildLocationSeo(location); expect(seo.image).toBe('/images/test-park-photo.webp'); expect(seo.imageAlt).toBe('Dogs walking through Test Park'); }); });