diff --git a/v1/client_test.go b/v1/client_test.go index c8fa32f..cefce56 100644 --- a/v1/client_test.go +++ b/v1/client_test.go @@ -244,10 +244,44 @@ func TestMgClient_Customers(t *testing.T) { defer gock.Off() + response := ` + [ + { + "id": 1, + "channel_id": 1, + "created_at": + "2018-01-01T00:00:00.000000Z", + "utm": { + "source": "test" + } + }, + { + "id": 2, + "channel_id": 1, + "created_at": + "2018-01-01T00:00:00.000000Z", + "utm": { + "source": null + } + }, + { + "id": 3, + "channel_id": 1, + "created_at": + "2018-01-01T00:00:00.000000Z", + "utm": null + }, + { + "id": 4, + "channel_id": 1, + "created_at": "2018-01-01T00:00:00.000000Z" + } + ]` + gock.New(mgURL). Get("/api/bot/v1/customers"). Reply(200). - BodyString(`[{"id": 1,"channel_id": 1, "created_at": "2018-01-01T00:00:00.000000Z"}]`) + BodyString(response) req := CustomersRequest{} @@ -262,6 +296,11 @@ func TestMgClient_Customers(t *testing.T) { for _, customer := range data { assert.NotEmpty(t, customer.ChannelId) } + + assert.Equal(t, "test", data[0].Utm.Source) + assert.Equal(t, "", data[1].Utm.Source) + assert.Nil(t, data[2].Utm) + assert.Nil(t, data[3].Utm) } func TestMgClient_Chats(t *testing.T) { diff --git a/v1/types.go b/v1/types.go index e644f0d..e1f520c 100644 --- a/v1/types.go +++ b/v1/types.go @@ -287,6 +287,7 @@ type ( Language string `json:"language,omitempty"` Phone string `json:"phone,omitempty"` Email string `json:"email,omitempty"` + Utm *Utm `json:"utm,omitempty"` } ChatResponseItem struct { @@ -592,6 +593,14 @@ type ( ID string `json:"id"` Caption string `json:"caption"` } + + Utm struct { + Source string `json:"source"` + Medium string `json:"medium"` + Campaign string `json:"campaign"` + Term string `json:"term"` + Content string `json:"content"` + } ) // Channel settings