diff --git a/.gitignore b/.gitignore index cc85814..f06af3f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ -# Compiled application binary +# Compiled application binary and testing workspace /weatherreporter +/workspace # ---> Go # If you prefer the allow list template instead of the deny list, see community template: diff --git a/docs/config.md b/docs/config.md index dc29db8..9b1b826 100644 --- a/docs/config.md +++ b/docs/config.md @@ -45,7 +45,7 @@ config test suite. - `timeout`: HTTP timeout duration. Default: `10s`. - `precision`: numeric precision query value. Default: `1`. - `units`: Weather API units query value. Default: `us`. -- `timezone`: report timezone and Weather API timezone query value where supported. Default: `Chicago`. +- `timezone`: report timezone and Weather API timezone query value where supported. Default: `America/Chicago`. - `format`: Weather API response format. Must be `json`. Default: `json`. Timezone values may be IANA names, configured aliases such as `Chicago` and @@ -88,7 +88,7 @@ Each entry has: - `end` `start` and `end` use `HH:MM`. The default entries are overnight, morning, -afternoon, and evening. +midday, afternoon, and evening. ### `recent_change` diff --git a/examples/config.yml b/examples/config.yml index ea6d837..1434640 100644 --- a/examples/config.yml +++ b/examples/config.yml @@ -1,9 +1,9 @@ weather_api: - base_url: https://weather.api.example.com/ + base_url: https://weather.api.rakestrawhome.com/ timeout: 15s precision: 1 units: us - timezone: Chicago + timezone: "America/Chicago" format: json missing_source: @@ -28,12 +28,15 @@ dayparts: end: "06:00" - name: morning start: "06:00" - end: "12:00" + end: "10:00" + - name: midday + start: "10:00" + end: "15:00" - name: afternoon - start: "12:00" - end: "18:00" + start: "15:00" + end: "17:00" - name: evening - start: "18:00" + start: "17:00" end: "24:00" recent_change: diff --git a/internal/adapters/weatherapi/client_test.go b/internal/adapters/weatherapi/client_test.go index ca1db34..a1b17d1 100644 --- a/internal/adapters/weatherapi/client_test.go +++ b/internal/adapters/weatherapi/client_test.go @@ -72,7 +72,7 @@ func TestFetchBundleBuildsExpectedQueries(t *testing.T) { t.Fatalf("request %q missing format=json or units=us", rawURL) } if strings.HasPrefix(rawURL, "/forecast/") { - if !strings.Contains(rawURL, "precision=1") || !strings.Contains(rawURL, "tz=Chicago") { + if !strings.Contains(rawURL, "precision=1") || !strings.Contains(rawURL, "tz=America%2FChicago") { t.Fatalf("forecast request %q missing precision or tz", rawURL) } } diff --git a/internal/briefing/daily_test.go b/internal/briefing/daily_test.go index 5d25ae5..93998a3 100644 --- a/internal/briefing/daily_test.go +++ b/internal/briefing/daily_test.go @@ -55,8 +55,8 @@ func TestDailyBriefingFromRepresentativeFixture(t *testing.T) { if pkg.Daily == nil { t.Fatal("Daily = nil") } - if len(pkg.Daily.Dayparts) != 4 { - t.Fatalf("Dayparts length = %d, want 4", len(pkg.Daily.Dayparts)) + if len(pkg.Daily.Dayparts) != 5 { + t.Fatalf("Dayparts length = %d, want 5", len(pkg.Daily.Dayparts)) } if len(pkg.Daily.RelevantAlerts) != 1 { t.Fatalf("RelevantAlerts length = %d, want 1", len(pkg.Daily.RelevantAlerts)) @@ -237,9 +237,10 @@ func mustResolveDaily(t *testing.T, location *time.Location) report.Resolved { func defaultDayparts() []forecast.DaypartDefinition { return []forecast.DaypartDefinition{ {Name: "overnight", Start: "00:00", End: "06:00"}, - {Name: "morning", Start: "06:00", End: "12:00"}, - {Name: "afternoon", Start: "12:00", End: "18:00"}, - {Name: "evening", Start: "18:00", End: "24:00"}, + {Name: "morning", Start: "06:00", End: "10:00"}, + {Name: "midday", Start: "10:00", End: "15:00"}, + {Name: "afternoon", Start: "15:00", End: "17:00"}, + {Name: "evening", Start: "17:00", End: "24:00"}, } } diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 584e1fe..a989661 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -17,8 +17,8 @@ func TestDefaults(t *testing.T) { if cfg.WeatherAPI.Units != "us" { t.Fatalf("Units = %q, want us", cfg.WeatherAPI.Units) } - if cfg.WeatherAPI.Timezone != "Chicago" { - t.Fatalf("Timezone = %q, want Chicago", cfg.WeatherAPI.Timezone) + if cfg.WeatherAPI.Timezone != "America/Chicago" { + t.Fatalf("Timezone = %q, want America/Chicago", cfg.WeatherAPI.Timezone) } if cfg.WeatherAPI.Format != "json" { t.Fatalf("Format = %q, want json", cfg.WeatherAPI.Format) @@ -34,8 +34,8 @@ func TestLoadExampleConfig(t *testing.T) { t.Fatalf("LoadFile() error = %v", err) } - if cfg.WeatherAPI.BaseURL != "https://weather.api.example.com/" { - t.Fatalf("BaseURL = %q, want example URL", cfg.WeatherAPI.BaseURL) + if cfg.WeatherAPI.BaseURL != "https://weather.api.rakestrawhome.com/" { + t.Fatalf("BaseURL = %q, want configured example URL", cfg.WeatherAPI.BaseURL) } if cfg.WeatherAPI.Timeout != 15*time.Second { t.Fatalf("Timeout = %s, want 15s", cfg.WeatherAPI.Timeout) diff --git a/internal/config/defaults.go b/internal/config/defaults.go index cce805a..778050a 100644 --- a/internal/config/defaults.go +++ b/internal/config/defaults.go @@ -10,7 +10,7 @@ func Defaults() Config { Timeout: 10 * time.Second, Precision: 1, Units: "us", - Timezone: "Chicago", + Timezone: "America/Chicago", Format: "json", }, MissingSource: MissingSourceConfig{ @@ -30,9 +30,10 @@ func Defaults() Config { }, Dayparts: []DaypartConfig{ {Name: "overnight", Start: "00:00", End: "06:00"}, - {Name: "morning", Start: "06:00", End: "12:00"}, - {Name: "afternoon", Start: "12:00", End: "18:00"}, - {Name: "evening", Start: "18:00", End: "24:00"}, + {Name: "morning", Start: "06:00", End: "10:00"}, + {Name: "midday", Start: "10:00", End: "15:00"}, + {Name: "afternoon", Start: "15:00", End: "17:00"}, + {Name: "evening", Start: "17:00", End: "24:00"}, }, RecentChange: RecentChangeConfig{ TemperatureDegrees: 5,