Onboarding / Deployment Scripts / Marketing updates
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
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.png');
|
||||
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');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user