WMO weather_code 51~57(이슬비 3단계), 61~67(비/어는비 혼재) 등을 "이슬비"·"비" 같은 큰 구간으로 뭉쳐 표시하던 것을 코드 하나당 고유 라벨로 바꿨다. 서버 프리렌더 스냅샷(site_payload._WEATHER_CONDITION_BY_CODE)과 브라우저 재조회 (use-live-weather.ts WEATHER_CONDITION_BY_CODE)가 같은 표를 봐야 하이드레이션 전후로 문구가 안 바뀐다는 기존 불변식은 유지한다. - docs/WEATHER.md: 27개 코드 전체를 "구간→분류" 표에서 "코드→고유 라벨" 표로 재작성 - weather_notes.json: 코드별 문구 갱신 - use-live-weather.ts/.test.ts, weather.test.tsx: 새 라벨 반영
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import {expect, it} from 'vitest';
|
|
import {condition} from './use-live-weather';
|
|
|
|
const WEATHER_CODE_LABELS: Record<number, string> = {
|
|
0: '맑음',
|
|
1: '대체로 맑음',
|
|
2: '구름 조금',
|
|
3: '흐림',
|
|
45: '안개',
|
|
48: '착빙성 안개',
|
|
51: '가벼운 이슬비',
|
|
53: '보통 이슬비',
|
|
55: '강한 이슬비',
|
|
56: '가벼운 착빙성 이슬비',
|
|
57: '강한 착빙성 이슬비',
|
|
61: '약한 비',
|
|
63: '보통 비',
|
|
65: '강한 비',
|
|
66: '약한 착빙성 비',
|
|
67: '강한 착빙성 비',
|
|
71: '약한 눈',
|
|
73: '보통 눈',
|
|
75: '강한 눈',
|
|
77: '싸라기눈',
|
|
80: '약한 소나기',
|
|
81: '보통 소나기',
|
|
82: '강한 소나기',
|
|
85: '약한 소나기눈',
|
|
86: '강한 소나기눈',
|
|
95: '뇌우',
|
|
96: '약한 우박 뇌우',
|
|
99: '강한 우박 뇌우',
|
|
};
|
|
|
|
it('gives every WMO weather code its own label', () => {
|
|
for (const [code, label] of Object.entries(WEATHER_CODE_LABELS)) {
|
|
expect(condition(Number(code))).toBe(label);
|
|
}
|
|
});
|
|
|
|
it('falls back to overcast for unknown codes', () => {
|
|
expect(condition(4)).toBe('흐림');
|
|
expect(condition(-1)).toBe('흐림');
|
|
});
|