blob: 1e95306a8f212c7c5c1111218c9748c21a692e34 [file] [log] [blame]
Serge Bazanski8ef457f2021-07-11 14:42:38 +00001package calendar
2
3import (
4 "fmt"
5 "testing"
6 "time"
7)
8
9func TestWarsawDate(t *testing.T) {
10 makeTime := func(s string) EventTime {
11 t.Helper()
12 warsaw, err := time.LoadLocation("Europe/Warsaw")
13 if err != nil {
14 t.Fatalf("could not get Warsaw timezone: %v", err)
15 }
16 ti, err := time.ParseInLocation("2006/01/02 15:04", s, warsaw)
17 if err != nil {
18 t.Fatal("could not parse test time %q: %v", s, err)
19 }
20 return EventTime{
21 Time: ti,
22 }
23 }
24 makeDay := func(s string) EventTime {
25 t.Helper()
26 ti, err := time.Parse("2006/01/02", s)
27 if err != nil {
28 t.Fatal("could not parse test day %q: %v", s, err)
29 }
30 return EventTime{
31 Time: ti,
32 WholeDay: true,
33 }
34 }
35 for i, te := range []struct {
36 start EventTime
37 end EventTime
38 want string
39 }{
40 {
41 makeTime("2021/03/14 13:37"), makeTime("2021/04/20 21:37"),
42 "2021/03/14 13:37 - 2021/04/20 21:37",
43 },
44 {
45 makeTime("2021/04/20 13:37"), makeTime("2021/04/20 21:37"),
46 "2021/04/20 13:37 - 21:37",
47 },
48 {
49 makeDay("2021/06/01"), makeDay("2021/07/01"),
50 "2021/06/01 - 30",
51 },
52 {
53 makeDay("2021/03/14"), makeDay("2021/04/21"),
54 "2021/03/14 - 2021/04/20",
55 },
56 {
57 makeDay("2021/04/20"), makeDay("2021/04/21"),
58 "2021/04/20",
59 },
60 } {
61 te := te
62 t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
63 ev := UpcomingEvent{
64 Start: &te.start,
65 End: &te.end,
66 }
67 got := ev.WarsawDate()
68 if got != te.want {
69 t.Fatalf("wanted %q, got %q", te.want, got)
70 }
71 })
72 }
73}