forked from hswaw/hscloud
74 lines
1.4 KiB
Go
74 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)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|