All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
package sources
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/ejr/feedkit/config"
|
|
fksource "gitea.maximumdirect.net/ejr/feedkit/sources"
|
|
)
|
|
|
|
func TestRegisterBuiltinsRegistersNWSHourlyForecastDriver(t *testing.T) {
|
|
reg := fksource.NewRegistry()
|
|
RegisterBuiltins(reg)
|
|
|
|
in, err := reg.BuildInput(sourceConfigForDriver("nws_forecast_hourly"))
|
|
if err != nil {
|
|
t.Fatalf("BuildInput(nws_forecast_hourly) error = %v", err)
|
|
}
|
|
if _, ok := in.(fksource.PollSource); !ok {
|
|
t.Fatalf("BuildInput(nws_forecast_hourly) type = %T, want PollSource", in)
|
|
}
|
|
}
|
|
|
|
func TestRegisterBuiltinsRegistersNWSNarrativeForecastDriver(t *testing.T) {
|
|
reg := fksource.NewRegistry()
|
|
RegisterBuiltins(reg)
|
|
|
|
in, err := reg.BuildInput(sourceConfigForDriver("nws_forecast_narrative"))
|
|
if err != nil {
|
|
t.Fatalf("BuildInput(nws_forecast_narrative) error = %v", err)
|
|
}
|
|
if _, ok := in.(fksource.PollSource); !ok {
|
|
t.Fatalf("BuildInput(nws_forecast_narrative) type = %T, want PollSource", in)
|
|
}
|
|
}
|
|
|
|
func TestRegisterBuiltinsRegistersNWSForecastDiscussionDriver(t *testing.T) {
|
|
reg := fksource.NewRegistry()
|
|
RegisterBuiltins(reg)
|
|
|
|
in, err := reg.BuildInput(sourceConfigForDriver("nws_forecast_discussion"))
|
|
if err != nil {
|
|
t.Fatalf("BuildInput(nws_forecast_discussion) error = %v", err)
|
|
}
|
|
if _, ok := in.(fksource.PollSource); !ok {
|
|
t.Fatalf("BuildInput(nws_forecast_discussion) type = %T, want PollSource", 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 TestRegisterBuiltinsRegistersAllCurrentDrivers(t *testing.T) {
|
|
reg := fksource.NewRegistry()
|
|
RegisterBuiltins(reg)
|
|
|
|
drivers := []string{
|
|
"nws_observation",
|
|
"nws_alerts",
|
|
"nws_forecast_hourly",
|
|
"nws_forecast_narrative",
|
|
"nws_forecast_discussion",
|
|
"openmeteo_observation",
|
|
"openmeteo_forecast",
|
|
"openweather_observation",
|
|
}
|
|
|
|
for _, driver := range drivers {
|
|
in, err := reg.BuildInput(sourceConfigForDriver(driver))
|
|
if err != nil {
|
|
t.Fatalf("BuildInput(%s) error = %v", driver, err)
|
|
}
|
|
if _, ok := in.(fksource.PollSource); !ok {
|
|
t.Fatalf("BuildInput(%s) type = %T, want PollSource", driver, in)
|
|
}
|
|
}
|
|
}
|
|
|
|
func sourceConfigForDriver(driver string) config.SourceConfig {
|
|
url := "https://example.invalid"
|
|
if driver == "openweather_observation" {
|
|
url = "https://example.invalid?units=metric"
|
|
}
|
|
return config.SourceConfig{
|
|
Name: "test-source",
|
|
Driver: driver,
|
|
Mode: config.SourceModePoll,
|
|
Params: map[string]any{
|
|
"url": url,
|
|
"user_agent": "test-agent",
|
|
},
|
|
}
|
|
}
|