forked from hswaw/hscloud
Serge Bazanski
8ef457feee
This will let us populate upcoming events server-side on the website (or serve this data in a format that can be more easily consumed by JS). Change-Id: I0f6b5bf9831f4d07acebb4eb77a7d88b63fe8e46
73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package calendar
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestWarsawDate(t *testing.T) {
|
|
makeTime := func(s string) EventTime {
|
|
t.Helper()
|
|
warsaw, err := time.LoadLocation("Europe/Warsaw")
|
|
if err != nil {
|
|
t.Fatalf("could not get Warsaw timezone: %v", err)
|
|
}
|
|
ti, err := time.ParseInLocation("2006/01/02 15:04", s, warsaw)
|
|
if err != nil {
|
|
t.Fatal("could not parse test time %q: %v", s, err)
|
|
}
|
|
return EventTime{
|
|
Time: ti,
|
|
}
|
|
}
|
|
makeDay := func(s string) EventTime {
|
|
t.Helper()
|
|
ti, err := time.Parse("2006/01/02", s)
|
|
if err != nil {
|
|
t.Fatal("could not parse test day %q: %v", s, err)
|
|
}
|
|
return EventTime{
|
|
Time: ti,
|
|
WholeDay: true,
|
|
}
|
|
}
|
|
for i, te := range []struct {
|
|
start EventTime
|
|
end EventTime
|
|
want string
|
|
}{
|
|
{
|
|
makeTime("2021/03/14 13:37"), makeTime("2021/04/20 21:37"),
|
|
"2021/03/14 13:37 - 2021/04/20 21:37",
|
|
},
|
|
{
|
|
makeTime("2021/04/20 13:37"), makeTime("2021/04/20 21:37"),
|
|
"2021/04/20 13:37 - 21:37",
|
|
},
|
|
{
|
|
makeDay("2021/06/01"), makeDay("2021/07/01"),
|
|
"2021/06/01 - 30",
|
|
},
|
|
{
|
|
makeDay("2021/03/14"), makeDay("2021/04/21"),
|
|
"2021/03/14 - 2021/04/20",
|
|
},
|
|
{
|
|
makeDay("2021/04/20"), makeDay("2021/04/21"),
|
|
"2021/04/20",
|
|
},
|
|
} {
|
|
te := te
|
|
t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
|
|
ev := UpcomingEvent{
|
|
Start: &te.start,
|
|
End: &te.end,
|
|
}
|
|
got := ev.WarsawDate()
|
|
if got != te.want {
|
|
t.Fatalf("wanted %q, got %q", te.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|