Files
go-fa-api/time_test.go
2026-05-25 22:27:18 +02:00

78 lines
1.7 KiB
Go

package fa
import (
"testing"
"time"
)
func TestParseFADate(t *testing.T) {
must := func(layout, s string) time.Time {
t.Helper()
v, err := time.ParseInLocation(layout, s, time.UTC)
if err != nil {
t.Fatalf("setup: parse %q: %v", s, err)
}
return v
}
cases := []struct {
name string
in string
want time.Time
}{
{
name: "standard popup_date",
in: "Mar 17, 2026 04:21 PM",
want: must("Jan 2, 2006 03:04 PM", "Mar 17, 2026 04:21 PM"),
},
{
name: "ordinal suffix",
in: "Mar 17th, 2026 04:21 PM",
want: must("Jan 2, 2006 03:04 PM", "Mar 17, 2026 04:21 PM"),
},
{
name: "no padding",
in: "Mar 7, 2026 4:21 PM",
want: must("Jan 2, 2006 3:04 PM", "Mar 7, 2026 4:21 PM"),
},
{
name: "rfc3339",
in: "2026-03-17T16:21:00Z",
want: must(time.RFC3339, "2026-03-17T16:21:00Z"),
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
got, err := ParseFADate(tc.in)
if err != nil {
t.Fatalf("ParseFADate(%q) error = %v", tc.in, err)
}
if !got.Equal(tc.want) {
t.Errorf("ParseFADate(%q) = %s; want %s", tc.in, got, tc.want)
}
})
}
}
func TestParseFADate_Empty(t *testing.T) {
if _, err := ParseFADate(""); err == nil {
t.Fatal("expected error for empty string")
}
}
func TestStripOrdinals(t *testing.T) {
cases := map[string]string{
"Mar 1st, 2026": "Mar 1, 2026",
"Mar 2nd, 2026": "Mar 2, 2026",
"Mar 3rd, 2026": "Mar 3, 2026",
"Mar 4th, 2026": "Mar 4, 2026",
"already clean": "already clean",
"Mar 1st 2nd": "Mar 1 2",
}
for in, want := range cases {
if got := stripOrdinals(in); got != want {
t.Errorf("stripOrdinals(%q) = %q; want %q", in, got, want)
}
}
}