-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtimestamp_test.go
77 lines (57 loc) · 1.4 KB
/
timestamp_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 time_test
import (
"encoding/json"
"github.com/gmox/go-time"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
t "time"
)
type testStruct struct {
Timestamp *time.Timestamp `json:"date"`
}
var _ = Describe("Timestamp", func() {
It("Constructs with date time", func () {
rf := t.Now()
tm := time.Timestamp{
rf,
}
Expect(tm.Time).To(Equal(rf))
})
It("Decodes with date string", func () {
data := []byte(`{"date":"2018-09-07T16:39:21-04:00"}`)
expected := &time.Timestamp{
Time: t.Date(2018, 9, 7, 16, 39, 21, 0, t.Local),
}
var tm testStruct
if err := json.Unmarshal(data, &tm); err != nil {
panic(err)
}
Expect(tm.Timestamp).To(Not(BeNil()))
Expect(tm.Timestamp).To(Equal(expected))
})
It("Decodes with Unix timestamp", func () {
data := []byte(`{"date":1545231388}`)
expected := &time.Timestamp{
Time: t.Date(2018, 12, 19, 9, 56, 28, 0, t.Local),
}
var tm testStruct
if err := json.Unmarshal(data, &tm); err != nil {
panic(err)
}
Expect(tm.Timestamp).To(Not(BeNil()))
Expect(tm.Timestamp).To(Equal(expected))
})
It("Encodes timestamp", func () {
data := testStruct {
Timestamp: &time.Timestamp{
Time: t.Date(2018, 9, 7, 16, 39, 21, 0, t.UTC),
},
}
expected := []byte(`{"date":"2018-09-07T16:39:21Z"}`)
encoded, err := json.Marshal(data)
if err != nil {
panic(err)
}
Expect(encoded).To(Equal(expected))
})
})