github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/model/status_test.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package model
     5  
     6  import (
     7  	"encoding/json"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestStatus(t *testing.T) {
    15  	status := Status{NewId(), STATUS_ONLINE, true, 0, "123"}
    16  	json := status.ToJson()
    17  	status2 := StatusFromJson(strings.NewReader(json))
    18  
    19  	assert.Equal(t, status.UserId, status2.UserId, "UserId should have matched")
    20  	assert.Equal(t, status.Status, status2.Status, "Status should have matched")
    21  	assert.Equal(t, status.LastActivityAt, status2.LastActivityAt, "LastActivityAt should have matched")
    22  	assert.Equal(t, status.Manual, status2.Manual, "Manual should have matched")
    23  	assert.Equal(t, "", status2.ActiveChannel)
    24  
    25  	json = status.ToClusterJson()
    26  	status2 = StatusFromJson(strings.NewReader(json))
    27  
    28  	assert.Equal(t, status.ActiveChannel, status2.ActiveChannel)
    29  }
    30  
    31  func TestStatusListToJson(t *testing.T) {
    32  	statuses := []*Status{{NewId(), STATUS_ONLINE, true, 0, "123"}, {NewId(), STATUS_OFFLINE, true, 0, ""}}
    33  	jsonStatuses := StatusListToJson(statuses)
    34  
    35  	var dat []map[string]interface{}
    36  	if err := json.Unmarshal([]byte(jsonStatuses), &dat); err != nil {
    37  		panic(err)
    38  	}
    39  
    40  	assert.Equal(t, len(dat), 2)
    41  
    42  	_, ok := dat[0]["active_channel"]
    43  	assert.False(t, ok)
    44  	assert.Equal(t, statuses[0].ActiveChannel, "123")
    45  	assert.Equal(t, statuses[0].UserId, dat[0]["user_id"])
    46  	assert.Equal(t, statuses[1].UserId, dat[1]["user_id"])
    47  }
    48  
    49  func TestStatusListFromJson(t *testing.T) {
    50  	const jsonStream = `
    51      		 [{"user_id":"k39fowpzhfffjxeaw8ecyrygme","status":"online","manual":true,"last_activity_at":0},{"user_id":"e9f1bbg8wfno7b3k7yk79bbwfy","status":"offline","manual":true,"last_activity_at":0}]
    52      	`
    53  	var dat []map[string]interface{}
    54  	if err := json.Unmarshal([]byte(jsonStream), &dat); err != nil {
    55  		panic(err)
    56  	}
    57  
    58  	toDec := strings.NewReader(jsonStream)
    59  	statusesFromJson := StatusListFromJson(toDec)
    60  
    61  	assert.Equal(t, statusesFromJson[0].UserId, dat[0]["user_id"], "UserId should be equal")
    62  	assert.Equal(t, statusesFromJson[1].UserId, dat[1]["user_id"], "UserId should be equal")
    63  }