from services.weather_notes import weather_notes from services.site_payload import _weather def test_all_weather_cases_have_five_unique_lines(): notes = weather_notes() assert set(notes["noteSets"]) == {"맑음", "구름많음", "흐림", "안개", "이슬비", "비", "소나기", "눈", "뇌우"} assert set(notes["tempNoteSets"]) == {"혹서", "더움", "선선", "쌀쌀", "추움"} lines = [line for key in ("noteSets", "tempNoteSets") for group in notes[key].values() for line in group] # 하늘 9 · 기온대 5, 케이스마다 다섯 줄. 같은 문장이 두 번 나오면 순환이 멈춘 것처럼 보인다. assert len(lines) == len(set(lines)) == 70 def test_templates_are_not_mutated_by_a_payload(): notes = weather_notes() notes["noteSets"]["비"].clear() assert len(weather_notes()["noteSets"]["비"]) == 5 def test_payload_attaches_notes_only_to_real_observations(): assert _weather({"body": {}}) is None weather = _weather({"body": {"temperature": 0, "weather_code": 71, "observed_at": "2026-09-15T12:00"}}) assert weather["condition"] == "눈" assert weather["temperature"] == 0 assert len(weather["tempNoteSets"]["추움"]) == 5