test(characterization): pin _add_period_details over details text, observations and budgets

Real NOAA forecast text rarely carries humidity, gusts or pressure, and never a precipitation probability in a phrasing the extractor matches, so the length check and several formats went unexercised. A matrix of five synthetic forecast texts, three observation dicts (none, full, falsy values), five current lengths and two budgets pins the output; goldens generated on the code before the next commit.
This commit is contained in:
agessaman committed 2026-10-01 16:03:11 -07:00
1 parent 5ff0f847fc
commit 74772207a3
2 files changed
+181

No files matched your search

@@ -0,0 +1,152 @@
[
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52°",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 45%RH 💧52°",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 45%RH 💧52° 👁️10mi",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 📊1012hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 👁️10mi 📊1012hPa",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 💨40",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 👁️10mi 💨40",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 👁️10mi",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 70%RH 🌦️40%",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 🌦️40% 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 🌦️40% 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 🌦️40% 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 🌦️40% 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 52%RH 💧48°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 🌦️40% 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 🌦️40% 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 52%RH 💧48° 👁️9mi 🌦️40% 💨18mph 📊1016hPa",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi 🌦️40%",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi 🌦️40%",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi 🌦️40%",
" | Today: ☀️Sunny 75°",
" | Today: ☀️Sunny 75° 70%RH 👁️10mi 🌦️40%"
]
@@ -133,3 +133,32 @@ def test_noaa_forecast_text_with_long_forecasts(name):
cmd.noaa_session, _ = _session(data, drop_periods=drop)
results[f"drop{drop}-len{max_length}"] = cmd.get_noaa_weather(lat, lon, max_length=max_length)[0]
assert_golden(f"noaa_wx_long_{name}", results)
DETAIL_TEXTS = [
"Mostly sunny, with a high near 70. Humidity 45%. Dew point 52. Visibility 10 miles.",
"Showers likely. Chance of precipitation is 60%. Wind gusts as high as 25 mph. Pressure 1012 mb.",
"Rain. Chance of precipitation is 90%. Humidity around 88 percent. Gusts up to 40 mph.",
"Clear. Low around 40.",
"Cloudy with a 40% chance of rain. Humidity 70%. Wind gusts as high as 30 mph.",
]
OBSERVATIONS = [
None,
{"humidity": 52, "dew_point": 48, "visibility": 9, "wind_gusts": "18mph", "pressure": 1016},
{"humidity": 0, "dew_point": None, "visibility": 10},
]
def test_add_period_details_matrix():
cmd = _wx()
results = []
for text in DETAIL_TEXTS:
for observation in OBSERVATIONS:
for length in (0, 40, 80, 100, 115):
for budget in (130, 200):
results.append(
cmd._add_period_details(
" | Today: ☀️Sunny 75°", text, length, max_length=budget, observation_data=observation
)
)
assert_golden("noaa_wx_period_details", results)