Files
website/src/lib/title.test.ts
Stan Runge a10585a4d2
All checks were successful
Test and deploy staging / staging (push) Successful in 18s
add game tracker with owned pokemon data and call of duty mastery
Fold catchemall into /projects/game-tracker (old URL redirects) and add
Call of Duty tracking for Black Ops through WWII.

- Pokémon catalog is now owned: locations, encounters and per-game
  evolution methods are built from the pinned PokéAPI snapshot and seeded.
- Pokémon you can evolve or breed in a game count as obtainable; mythicals
  without another route are marked event-only.
- Detail dialog with evolution chain and where to find it, location pages
  with admin notes and pictures, and admin corrections that survive reseeds.
- Call of Duty weapons, milestones and Steam achievements per game, with
  derived Diamond / Dark Matter / Solar / Black Sky / Chrome tiers.
- New migration (db:migrate:game-tracker), seeds (db:seed, db:seed:cod) and
  deploy preflight checks for them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 17:36:18 +00:00

23 lines
919 B
TypeScript

import { describe, expect, it } from 'vitest';
import { formatTitle, getTitle, siteEnvironment } from './title';
describe('site titles', () => {
it('uses one suffix and an environment prefix', () => {
expect(getTitle('/', 'DEV')).toBe('(DEV) Home | Stan Runge');
expect(getTitle('/projects/game-tracker/pokemon', 'STAGING')).toBe(
'(STAGING) Catchemall | Stan Runge'
);
expect(formatTitle('A blog post')).toBe('A blog post | Stan Runge');
});
it('gives unlisted routes a readable title', () => {
expect(getTitle('/projects/typing-practice')).toBe('typing practice | Stan Runge');
});
it('labels development and staging without labelling production', () => {
expect(siteEnvironment(true, 'https://staging.stanrunge.dev')).toBe('DEV');
expect(siteEnvironment(false, 'https://staging.stanrunge.dev')).toBe('STAGING');
expect(siteEnvironment(false, 'https://stanrunge.dev')).toBeNull();
});
});