github.com/wgh-/mattermost-server@v4.8.0-rc2+incompatible/store/storetest/status_store.go (about) 1 // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package storetest 5 6 import ( 7 "testing" 8 9 "github.com/mattermost/mattermost-server/model" 10 "github.com/mattermost/mattermost-server/store" 11 ) 12 13 func TestStatusStore(t *testing.T, ss store.Store) { 14 t.Run("", func(t *testing.T) { testStatusStore(t, ss) }) 15 t.Run("ActiveUserCount", func(t *testing.T) { testActiveUserCount(t, ss) }) 16 } 17 18 func testStatusStore(t *testing.T, ss store.Store) { 19 status := &model.Status{UserId: model.NewId(), Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""} 20 21 if err := (<-ss.Status().SaveOrUpdate(status)).Err; err != nil { 22 t.Fatal(err) 23 } 24 25 status.LastActivityAt = 10 26 27 if err := (<-ss.Status().SaveOrUpdate(status)).Err; err != nil { 28 t.Fatal(err) 29 } 30 31 if err := (<-ss.Status().Get(status.UserId)).Err; err != nil { 32 t.Fatal(err) 33 } 34 35 status2 := &model.Status{UserId: model.NewId(), Status: model.STATUS_AWAY, Manual: false, LastActivityAt: 0, ActiveChannel: ""} 36 if err := (<-ss.Status().SaveOrUpdate(status2)).Err; err != nil { 37 t.Fatal(err) 38 } 39 40 status3 := &model.Status{UserId: model.NewId(), Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""} 41 if err := (<-ss.Status().SaveOrUpdate(status3)).Err; err != nil { 42 t.Fatal(err) 43 } 44 45 if result := <-ss.Status().GetOnlineAway(); result.Err != nil { 46 t.Fatal(result.Err) 47 } else { 48 statuses := result.Data.([]*model.Status) 49 for _, status := range statuses { 50 if status.Status == model.STATUS_OFFLINE { 51 t.Fatal("should not have returned offline statuses") 52 } 53 } 54 } 55 56 if result := <-ss.Status().GetOnline(); result.Err != nil { 57 t.Fatal(result.Err) 58 } else { 59 statuses := result.Data.([]*model.Status) 60 for _, status := range statuses { 61 if status.Status != model.STATUS_ONLINE { 62 t.Fatal("should not have returned offline statuses") 63 } 64 } 65 } 66 67 if result := <-ss.Status().GetByIds([]string{status.UserId, "junk"}); result.Err != nil { 68 t.Fatal(result.Err) 69 } else { 70 statuses := result.Data.([]*model.Status) 71 if len(statuses) != 1 { 72 t.Fatal("should only have 1 status") 73 } 74 } 75 76 if err := (<-ss.Status().ResetAll()).Err; err != nil { 77 t.Fatal(err) 78 } 79 80 if result := <-ss.Status().Get(status.UserId); result.Err != nil { 81 t.Fatal(result.Err) 82 } else { 83 status := result.Data.(*model.Status) 84 if status.Status != model.STATUS_OFFLINE { 85 t.Fatal("should be offline") 86 } 87 } 88 89 if result := <-ss.Status().UpdateLastActivityAt(status.UserId, 10); result.Err != nil { 90 t.Fatal(result.Err) 91 } 92 } 93 94 func testActiveUserCount(t *testing.T, ss store.Store) { 95 status := &model.Status{UserId: model.NewId(), Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""} 96 store.Must(ss.Status().SaveOrUpdate(status)) 97 98 if result := <-ss.Status().GetTotalActiveUsersCount(); result.Err != nil { 99 t.Fatal(result.Err) 100 } else { 101 count := result.Data.(int64) 102 if count <= 0 { 103 t.Fatal() 104 } 105 } 106 }