MCPcopy
hub / github.com/cli/cli / TestRunSendTelemetry

Function TestRunSendTelemetry

pkg/cmd/send-telemetry/send_telemetry_test.go:109–198  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

107}
108
109func TestRunSendTelemetry(t *testing.T) {
110 tests := []struct {
111 name string
112 payload telemetry.SendTelemetryPayload
113 serverErr error
114 wantErr bool
115 assertFunc func(t *testing.T, req *observability.RecordEventsRequest)
116 }{
117 {
118 name: "posts single event to endpoint",
119 payload: telemetry.SendTelemetryPayload{
120 Events: []telemetry.PayloadEvent{
121 {
122 Type: "command_invocation",
123 Dimensions: map[string]string{
124 "command": "gh pr create",
125 "device_id": "abc123",
126 "os": "darwin",
127 },
128 Measures: map[string]int64{"duration_ms": 150},
129 },
130 },
131 },
132 assertFunc: func(t *testing.T, req *observability.RecordEventsRequest) {
133 t.Helper()
134 require.Len(t, req.Events, 1)
135 event := req.Events[0]
136 assert.Equal(t, "github-cli", event.App)
137 assert.Equal(t, "command_invocation", event.EventType)
138 assert.Equal(t, "gh pr create", event.Dimensions["command"])
139 assert.Equal(t, "abc123", event.Dimensions["device_id"])
140 assert.Equal(t, "darwin", event.Dimensions["os"])
141 },
142 },
143 {
144 name: "posts multiple events in single batch request",
145 payload: telemetry.SendTelemetryPayload{
146 Events: []telemetry.PayloadEvent{
147 {Type: "event1", Dimensions: map[string]string{"a": "1"}},
148 {Type: "event2", Dimensions: map[string]string{"b": "2"}},
149 },
150 },
151 assertFunc: func(t *testing.T, req *observability.RecordEventsRequest) {
152 t.Helper()
153 require.Len(t, req.Events, 2)
154 assert.Equal(t, "1", req.Events[0].Dimensions["a"])
155 assert.Equal(t, "2", req.Events[1].Dimensions["b"])
156 assert.Equal(t, "github-cli", req.Events[0].App)
157 assert.Equal(t, "event1", req.Events[0].EventType)
158 assert.Equal(t, "github-cli", req.Events[1].App)
159 assert.Equal(t, "event2", req.Events[1].EventType)
160 },
161 },
162 {
163 name: "empty events list produces no request",
164 payload: telemetry.SendTelemetryPayload{
165 Events: []telemetry.PayloadEvent{},
166 },

Callers

nothing calls this directly

Calls 9

NewTelemetryAPIServerFunction · 0.92
mustMarshalFunction · 0.85
runSendTelemetryFunction · 0.85
EqualMethod · 0.80
HelperMethod · 0.65
LenMethod · 0.65
RunMethod · 0.65
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected