Validate precipitation probabilities and ice wording
This commit is contained in:
@@ -101,6 +101,11 @@ func BuildDerived(req BuildDerivedRequest) (DerivedFacts, error) {
|
||||
}
|
||||
bundle := req.Collected.Bundle()
|
||||
period := req.Resolved.ValidPeriod
|
||||
if req.Collected.Hourly != nil {
|
||||
if err := forecast.ValidatePrecipitationProbabilities(req.Collected.Hourly.Periods); err != nil {
|
||||
return DerivedFacts{}, err
|
||||
}
|
||||
}
|
||||
spcOutlooks, spcDiscussions := selectSPCConvectiveOutlooks(req.Collected.SPCConvectiveOutlooks, period)
|
||||
derived := DerivedFacts{
|
||||
ValidPeriodHourlyPeriods: forecast.SelectHourlyPeriods(req.Collected.Hourly, period),
|
||||
|
||||
@@ -127,6 +127,21 @@ func TestBuildDerivedDailyIncludesNextDayOvernightAlerts(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildDerivedRejectsInvalidPrecipitationProbability(t *testing.T) {
|
||||
location := testLocation()
|
||||
bundle := testBundle(location)
|
||||
invalid := -1.0
|
||||
bundle.Hourly.Periods[0].ProbabilityOfPrecipitationPercent = &invalid
|
||||
_, err := BuildDerived(BuildDerivedRequest{
|
||||
Resolved: resolveForTest(t, report.Hourly, mustParse("2026-05-29T08:00:00-05:00"), location),
|
||||
Timezone: location.String(),
|
||||
Collected: BuildCollected(bundle),
|
||||
})
|
||||
if err == nil || !strings.Contains(err.Error(), "invalid precipitation probability") {
|
||||
t.Fatalf("BuildDerived() error = %v, want invalid precipitation probability", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildDerivedTomorrow(t *testing.T) {
|
||||
location := testLocation()
|
||||
for _, id := range []report.ID{report.Tomorrow} {
|
||||
|
||||
Reference in New Issue
Block a user