From 46f969e5ddbe4404dbc82dbe78ab2fa101d9922e Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Thu, 21 Jun 2018 13:42:20 -0400 Subject: MM-10425 Include active_channel in cluster update user status messages (#8967) * Include active_channel in cluster update user status messages * Update to use new ToJson method * Update tests --- model/status.go | 21 ++++++++++++++++++++- model/status_test.go | 29 ++++++++++++++++++----------- 2 files changed, 38 insertions(+), 12 deletions(-) (limited to 'model') diff --git a/model/status.go b/model/status.go index cf5899446..7888c60a4 100644 --- a/model/status.go +++ b/model/status.go @@ -24,10 +24,18 @@ type Status struct { Status string `json:"status"` Manual bool `json:"manual"` LastActivityAt int64 `json:"last_activity_at"` - ActiveChannel string `json:"-" db:"-"` + ActiveChannel string `json:"active_channel,omitempty" db:"-"` } func (o *Status) ToJson() string { + tempChannelId := o.ActiveChannel + o.ActiveChannel = "" + b, _ := json.Marshal(o) + o.ActiveChannel = tempChannelId + return string(b) +} + +func (o *Status) ToClusterJson() string { b, _ := json.Marshal(o) return string(b) } @@ -39,7 +47,18 @@ func StatusFromJson(data io.Reader) *Status { } func StatusListToJson(u []*Status) string { + activeChannels := make([]string, len(u)) + for index, s := range u { + activeChannels[index] = s.ActiveChannel + s.ActiveChannel = "" + } + b, _ := json.Marshal(u) + + for index, s := range u { + s.ActiveChannel = activeChannels[index] + } + return string(b) } diff --git a/model/status_test.go b/model/status_test.go index 4b15fb32e..d2e519006 100644 --- a/model/status_test.go +++ b/model/status_test.go @@ -7,10 +7,12 @@ import ( "encoding/json" "strings" "testing" + + "github.com/stretchr/testify/assert" ) func TestStatus(t *testing.T) { - status := Status{NewId(), STATUS_ONLINE, true, 0, ""} + status := Status{NewId(), STATUS_ONLINE, true, 0, "123"} json := status.ToJson() status2 := StatusFromJson(strings.NewReader(json)) @@ -29,10 +31,17 @@ func TestStatus(t *testing.T) { if status.Manual != status2.Manual { t.Fatal("Manual should have matched") } + + assert.Equal(t, "", status2.ActiveChannel) + + json = status.ToClusterJson() + status2 = StatusFromJson(strings.NewReader(json)) + + assert.Equal(t, status.ActiveChannel, status2.ActiveChannel) } func TestStatusListToJson(t *testing.T) { - statuses := []*Status{{NewId(), STATUS_ONLINE, true, 0, ""}, {NewId(), STATUS_OFFLINE, true, 0, ""}} + statuses := []*Status{{NewId(), STATUS_ONLINE, true, 0, "123"}, {NewId(), STATUS_OFFLINE, true, 0, ""}} jsonStatuses := StatusListToJson(statuses) var dat []map[string]interface{} @@ -40,15 +49,13 @@ func TestStatusListToJson(t *testing.T) { panic(err) } - if len(dat) != 2 { - t.Fatal("Status array should contain 2 elements") - } - if statuses[0].UserId != dat[0]["user_id"] { - t.Fatal("UserId should be equal") - } - if statuses[1].UserId != dat[1]["user_id"] { - t.Fatal("UserId should be equal") - } + assert.Equal(t, len(dat), 2) + + _, ok := dat[0]["active_channel"] + assert.False(t, ok) + assert.Equal(t, statuses[0].ActiveChannel, "123") + assert.Equal(t, statuses[0].UserId, dat[0]["user_id"]) + assert.Equal(t, statuses[1].UserId, dat[1]["user_id"]) } func TestStatusListFromJson(t *testing.T) { -- cgit v1.2.3-1-g7c22