package sources import ( "strings" "testing" "gitea.maximumdirect.net/ejr/feedkit/config" fksource "gitea.maximumdirect.net/ejr/feedkit/sources" "gitea.maximumdirect.net/ejr/weatherfeeder/internal/sources/openweather" "gitea.maximumdirect.net/ejr/weatherfeeder/internal/sources/spc" ) func TestRegisterBuiltinsRegistersCurrentPollDrivers(t *testing.T) { reg := fksource.NewRegistry() RegisterBuiltins(reg) if len(pollDriverRegistrations) == 0 { t.Fatalf("pollDriverRegistrations is empty") } for _, tt := range pollDriverRegistrations { tt := tt t.Run(tt.driver, func(t *testing.T) { in, err := reg.BuildInput(sourceConfigForDriver(tt.driver)) if err != nil { t.Fatalf("BuildInput(%q) error = %v", tt.driver, err) } if _, ok := in.(fksource.PollSource); !ok { t.Fatalf("BuildInput(%q) type = %T, want PollSource", tt.driver, in) } }) } } func TestRegisterBuiltinsDoesNotRegisterLegacyNWSForecastDriver(t *testing.T) { reg := fksource.NewRegistry() RegisterBuiltins(reg) _, err := reg.BuildInput(sourceConfigForDriver("nws_forecast")) if err == nil { t.Fatalf("BuildInput(nws_forecast) expected unknown driver error") } if !strings.Contains(err.Error(), `unknown source driver: "nws_forecast"`) { t.Fatalf("error = %q, want unknown source driver for nws_forecast", err) } } func sourceConfigForDriver(driver string) config.SourceConfig { url := "https://example.invalid" if driver == openweather.DriverObservation { url = "https://example.invalid?units=metric" } params := map[string]any{ "url": url, "user_agent": "test-agent", } if driver == spc.DriverConvectiveOutlook { params["latitude"] = 38.6239 params["longitude"] = -90.3571 } return config.SourceConfig{ Name: "test-source", Driver: driver, Mode: config.SourceModePoll, Params: params, } }