All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
49 lines
1.7 KiB
Go
49 lines
1.7 KiB
Go
package postgres
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/ejr/weatherapi/internal/platform/constants"
|
|
)
|
|
|
|
func TestQueriesUseParametersNotHardcodedValues(t *testing.T) {
|
|
if !strings.Contains(queryCurrentConditionsSummary, "make_interval(mins => $1)") {
|
|
t.Fatalf("current conditions summary query must use $1 minutes parameter")
|
|
}
|
|
if strings.Contains(queryCurrentConditionsSummary, "30 minutes") {
|
|
t.Fatalf("current conditions summary query should not hardcode 30 minutes")
|
|
}
|
|
if !strings.Contains(queryCurrentConditionsSummary, "MAX(condition_code)") {
|
|
t.Fatalf("current conditions summary query should compute max condition code")
|
|
}
|
|
if !strings.Contains(queryCurrentConditionsSummary, "ORDER BY observed_at DESC") || !strings.Contains(queryCurrentConditionsSummary, "LIMIT 1") {
|
|
t.Fatalf("current conditions summary query should select latest is_day")
|
|
}
|
|
|
|
if !strings.Contains(queryRecentObservations, "LIMIT $1") {
|
|
t.Fatalf("recent observations query must use parameterized limit")
|
|
}
|
|
if strings.Contains(queryRecentObservations, "LIMIT 5") {
|
|
t.Fatalf("recent observations query should not hardcode limit=5")
|
|
}
|
|
|
|
if !strings.Contains(queryObservationPresentWeather, "event_id = ANY($1)") {
|
|
t.Fatalf("observation present weather query must use parameterized event list")
|
|
}
|
|
|
|
if !strings.Contains(queryForecastPeriodsAt, "LIMIT $2") {
|
|
t.Fatalf("forecast query must use parameterized limit")
|
|
}
|
|
if strings.Contains(queryForecastPeriodsAt, "LIMIT 5") {
|
|
t.Fatalf("forecast query should not hardcode limit=5")
|
|
}
|
|
}
|
|
|
|
func TestWindowMinutesUsesObservationWindowConstant(t *testing.T) {
|
|
got := windowMinutes(constants.ObservationWindow)
|
|
if got != 30 {
|
|
t.Fatalf("expected 30 minutes from constants.ObservationWindow, got %d", got)
|
|
}
|
|
}
|