-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathomikuji_test.go
77 lines (69 loc) · 1.32 KB
/
omikuji_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package omikuji
import (
"encoding/json"
"io/ioutil"
"net/http"
"net/http/httptest"
"testing"
"time"
)
var cases = []struct {
name string
time time.Time
}{
{
name: "case1",
time: time.Date(2019, 1, 1, 0, 0, 0, 0, time.UTC),
},
{
name: "case2",
time: time.Date(2019, 1, 1, 23, 59, 59, 0, time.UTC),
},
{
name: "case3",
time: time.Date(2019, 1, 2, 0, 0, 0, 0, time.UTC),
},
{
name: "case4",
time: time.Date(2019, 1, 2, 23, 59, 59, 0, time.UTC),
},
{
name: "case5",
time: time.Date(2019, 1, 3, 0, 0, 0, 0, time.UTC),
},
{
name: "case6",
time: time.Date(2019, 1, 3, 23, 59, 59, 0, time.UTC),
},
}
func getResult(time time.Time, t *testing.T) *Result {
t.Helper()
o := New(time)
w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/", nil)
o.Handler(w, r)
rw := w.Result()
defer rw.Body.Close()
if rw.StatusCode != http.StatusOK {
t.Fatal("unexpected status code")
}
b, err := ioutil.ReadAll(rw.Body)
if err != nil {
t.Fatal("unexpected error")
}
re := &Result{}
if err := json.Unmarshal(b, &re); err != nil {
t.Fatal("failed json unmarshal")
}
return re
}
func TestOmikuji(t *testing.T) {
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
re := getResult(c.time, t)
if re.Type != "大吉" {
t.Errorf("got %v, want %v", re.Type, "大吉")
}
})
}
}