/** * 구운 HTML → 사이트맵·목록 값. * * ★ 이 테스트가 지키는 것은 **커플링 하나**다. 사이트맵의 lastmod 는 페이지가 head 에 * 선언한 dateModified 와 같은 값이어야 한다 — 구글이 lastmod 를 신뢰하는 조건이 * "페이지의 실제 수정과 대조해 맞을 것" 이기 때문이다. head.ts 가 태그 모양을 바꾸면 * readBakedLastmod 는 조용히 undefined 를 내고 사이트맵은 mtime 으로 되돌아간다 — * 빌드는 통과하고 화면도 멀쩡한, 눈으로 못 찾는 종류의 회귀다. 그래서 붙인다. */ import {describe, expect, it} from 'vitest'; import {MOONLIGHT_STAY_PAYLOAD} from '../fixtures/moonlight-stay'; import {readBakedLastmod, readBakedTitle} from './directory'; import {renderHead} from './head'; import {homeMeta} from './meta'; /** 실제 프리렌더와 같은 경로로 head 를 굽는다(prerender.ts prerenderSite). */ function bakedHead(): string { const payload = MOONLIGHT_STAY_PAYLOAD; return renderHead({payload, meta: homeMeta(payload)}); } describe('readBakedLastmod', () => { it('head 가 선언한 dateModified 를 그대로 돌려준다', () => { expect(readBakedLastmod(bakedHead())).toBe(MOONLIGHT_STAY_PAYLOAD.site.updatedAt); }); it('메타가 없으면 undefined — 호출부가 mtime 으로 떨어진다', () => { expect(readBakedLastmod('