MCPcopy Index your code
hub / github.com/coder/coder / TestNullTime_UnmarshalJSON

Function TestNullTime_UnmarshalJSON

codersdk/time_test.go:61–119  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

59}
60
61func TestNullTime_UnmarshalJSON(t *testing.T) {
62 t.Parallel()
63
64 t1, err := time.Parse(time.RFC3339, "2022-08-18T00:00:00Z")
65 require.NoError(t, err)
66 bt1, err := json.Marshal(t1)
67 require.NoError(t, err)
68
69 type request struct {
70 Time codersdk.NullTime `json:"time"`
71 }
72
73 tests := []struct {
74 name string
75 data string
76 want codersdk.NullTime
77 wantErr bool
78 }{
79 {
80 name: "null",
81 data: `{"time": null}`,
82 want: codersdk.NullTime{},
83 },
84 {
85 name: "empty",
86 data: `{}`,
87 want: codersdk.NullTime{},
88 },
89 {
90 name: "empty string",
91 data: `{"time": ""}`,
92 wantErr: true,
93 },
94 {
95 name: "valid time",
96 data: fmt.Sprintf(`{"time": %s}`, bt1),
97 want: codersdk.NewNullTime(t1, true),
98 },
99 {
100 name: "invalid time",
101 data: fmt.Sprintf(`{"time": %q}`, `2022-08-18T00:00:00`),
102 wantErr: true,
103 },
104 }
105 for _, tt := range tests {
106 t.Run(tt.name, func(t *testing.T) {
107 t.Parallel()
108
109 var req request
110 err := json.Unmarshal([]byte(tt.data), &req)
111 if tt.wantErr {
112 require.Error(t, err)
113 return
114 }
115 require.NoError(t, err)
116 require.Equal(t, tt.want, req.Time)
117 })
118 }

Callers

nothing calls this directly

Calls 7

NewNullTimeFunction · 0.92
ParseMethod · 0.65
RunMethod · 0.65
MarshalMethod · 0.45
UnmarshalMethod · 0.45
ErrorMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected