Refresh SPC outlook definition sources

This commit is contained in:
2026-08-13 01:12:47 +00:00
parent 41b86109e3
commit 27849813db
4 changed files with 88 additions and 14 deletions

View File

@@ -65,11 +65,9 @@ func TestSPCConvectiveOutlooksModuleBuildsPromptSafeRiskProduct(t *testing.T) {
if got.Day != 1 || got.OutlookType != "categorical" || got.Label != "SLGT" || got.LabelText != "Slight Risk" {
t.Fatalf("outlook = %#v, want categorical slight risk fields", got)
}
if got.BackgroundDefinition == nil ||
got.BackgroundDefinition.PlainLanguage != "Scattered severe storms possible." ||
got.BackgroundDefinition.OfficialDescription != "Isolated intense storms are possible within the risk area, but severe weather is generally expected to be short-lived and/or not widespread." ||
got.BackgroundDefinition.RelativeLevel != "2 of 5" {
t.Fatalf("background definition = %#v, want Slight Risk helper", got.BackgroundDefinition)
wantBackground := spcOutlookBackgroundDefinition("categorical", "SLGT")
if got.BackgroundDefinition == nil || wantBackground == nil || *got.BackgroundDefinition != *wantBackground {
t.Fatalf("background definition = %#v, want matching Slight Risk helper %#v", got.BackgroundDefinition, wantBackground)
}
if got.PeriodBegins != "2026-05-29 at 11:00 AM" || got.PeriodEnds != "2026-05-30 at 7:00 AM" || got.IssuedAt != "2026-05-29 at 8:45 AM" {
t.Fatalf("outlook times = %#v, want friendly local labels", got)
@@ -193,6 +191,36 @@ func TestSPCOutlookBackgroundDefinitionsAssetHasUsableEntries(t *testing.T) {
}
}
func TestSPCOutlookBackgroundDefinitionAssetRecordsProvenance(t *testing.T) {
data, err := spcConvectiveOutlookDefinitionAssets.ReadFile("assets/spc_convective_outlook_definitions.json")
if err != nil {
t.Fatalf("ReadFile() error = %v", err)
}
var asset spcOutlookBackgroundDefinitionAsset
if err := json.Unmarshal(data, &asset); err != nil {
t.Fatalf("Unmarshal() error = %v", err)
}
if asset.Provenance.ReviewedOn == "" || asset.Provenance.ReviewOwner == "" || asset.Provenance.ReviewSchedule == "" {
t.Fatalf("asset provenance = %#v, want review metadata", asset.Provenance)
}
wantSources := map[string]string{
"https://www.spc.noaa.gov/about/outlooks/": "categorical outlook descriptions",
"https://www.spc.noaa.gov/exper/conditional-intensity-information": "conditional intensity group descriptions",
}
if len(asset.Provenance.Sources) != len(wantSources) {
t.Fatalf("asset provenance sources = %#v, want %d authoritative sources", asset.Provenance.Sources, len(wantSources))
}
for _, source := range asset.Provenance.Sources {
if source.UpdatedOn == "" || wantSources[source.URL] != source.AppliesTo {
t.Fatalf("asset provenance source = %#v, want authoritative source metadata", source)
}
delete(wantSources, source.URL)
}
if len(wantSources) != 0 {
t.Fatalf("asset provenance missing sources = %#v", wantSources)
}
}
func TestSPCRiskDigestDefaultPolicyConstants(t *testing.T) {
if defaultSPCRiskDigestOutlookType != "categorical" {
t.Fatalf("defaultSPCRiskDigestOutlookType = %q, want categorical", defaultSPCRiskDigestOutlookType)