diff --git a/v5/client_test.go b/v5/client_test.go index 73282fd..38f779a 100644 --- a/v5/client_test.go +++ b/v5/client_test.go @@ -9,6 +9,7 @@ import ( "net/http" "net/url" "os" + "reflect" "strconv" "strings" "testing" @@ -273,6 +274,10 @@ func TestClient_CustomerChange(t *testing.T) { Street: "Кутузовский", Building: "14", }, + Tags: []Tag{ + {"first", "#3e89b6", false}, + {"second", "#ffa654", false}, + }, } defer gock.Off() @@ -337,7 +342,23 @@ func TestClient_CustomerChange(t *testing.T) { Get(fmt.Sprintf("/api/v5/customers/%v", f.ExternalID)). MatchParam("by", ByExternalID). Reply(200). - BodyString(`{"success": true}`) + BodyString(`{ + "success": true, + "customer": { + "tags": [ + { + "name": "first", + "color": "#3e89b6", + "attached": false + }, + { + "name": "second", + "color": "#ffa654", + "attached": false + } + ] + } + }`) data, status, err := c.Customer(f.ExternalID, ByExternalID, "") if err.Error() != "" { @@ -351,6 +372,10 @@ func TestClient_CustomerChange(t *testing.T) { if data.Success != true { t.Errorf("%v", err.ApiError()) } + + if !reflect.DeepEqual(data.Customer.Tags, f.Tags) { + t.Errorf("%v", err.ApiError()) + } } func TestClient_CustomerChange_Fail(t *testing.T) { diff --git a/v5/types.go b/v5/types.go index b7e198b..f33c7bf 100644 --- a/v5/types.go +++ b/v5/types.go @@ -26,24 +26,24 @@ type Pagination struct { // Address type type Address struct { - Index string `json:"index,omitempty"` - CountryIso string `json:"countryIso,omitempty"` - Region string `json:"region,omitempty"` - RegionID int `json:"regionId,omitempty"` - City string `json:"city,omitempty"` - CityID int `json:"cityId,omitempty"` - CityType string `json:"cityType,omitempty"` - Street string `json:"street,omitempty"` - StreetID int `json:"streetId,omitempty"` - StreetType string `json:"streetType,omitempty"` - Building string `json:"building,omitempty"` - Flat string `json:"flat,omitempty"` - Floor int `json:"floor,omitempty"` - Block int `json:"block,omitempty"` - House string `json:"house,omitempty"` - Metro string `json:"metro,omitempty"` - Notes string `json:"notes,omitempty"` - Text string `json:"text,omitempty"` + Index string `json:"index,omitempty"` + CountryIso string `json:"countryIso,omitempty"` + Region string `json:"region,omitempty"` + RegionID int `json:"regionId,omitempty"` + City string `json:"city,omitempty"` + CityID int `json:"cityId,omitempty"` + CityType string `json:"cityType,omitempty"` + Street string `json:"street,omitempty"` + StreetID int `json:"streetId,omitempty"` + StreetType string `json:"streetType,omitempty"` + Building string `json:"building,omitempty"` + Flat string `json:"flat,omitempty"` + Floor int `json:"floor,omitempty"` + Block int `json:"block,omitempty"` + House string `json:"house,omitempty"` + Metro string `json:"metro,omitempty"` + Notes string `json:"notes,omitempty"` + Text string `json:"text,omitempty"` } // GeoHierarchyRow type @@ -628,15 +628,15 @@ type Segment struct { // SettingsNode represents an item in settings. All settings nodes contains only string value and update time for now. type SettingsNode struct { - Value string `json:"value"` + Value string `json:"value"` UpdatedAt string `json:"updated_at"` } // Settings type. Contains retailCRM configuration. type Settings struct { DefaultCurrency SettingsNode `json:"default_currency"` - SystemLanguage SettingsNode `json:"system_language"` - Timezone SettingsNode `json:"timezone"` + SystemLanguage SettingsNode `json:"system_language"` + Timezone SettingsNode `json:"timezone"` } /** @@ -1101,3 +1101,10 @@ type Activity struct { Active bool `json:"active"` Freeze bool `json:"freeze"` } + +// Tag struct +type Tag struct { + Name string `json:"name,omitempty"` + Color string `json:"color,omitempty"` + Attached bool `json:"attached,omitempty"` +}