From 1ea6a6ec9d28b62a6c8a19103d2eef96aceb20e6 Mon Sep 17 00:00:00 2001 From: Vragov Roman Date: Wed, 16 Nov 2022 14:38:51 +0300 Subject: [PATCH] Add `Utm` field to the `CustomersResponseItem` struct --- v1/client_test.go | 41 ++++++++++++++++++++++++++++++++++++++++- v1/types.go | 9 +++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/v1/client_test.go b/v1/client_test.go index b9fb62c..ee47787 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 c73a464..dd36a1b 100644 --- a/v1/types.go +++ b/v1/types.go @@ -286,6 +286,7 @@ type ( Language string `json:"language,omitempty"` Phone string `json:"phone,omitempty"` Email string `json:"email,omitempty"` + Utm *Utm `json:"utm,omitempty"` } ChatResponseItem struct { @@ -591,6 +592,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