mirror of
https://github.com/mattermost/mattermost.git
synced 2026-05-28 04:35:04 -04:00
* [MM-68273] Add system messages for share / unshare events * Fix CI * Address feedback * Fix CI * Remove unknown prop * Add missing tests
93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package sharedchannel
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mattermost/mattermost/server/public/model"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func newTestService() *Service {
|
|
return &Service{
|
|
changeSignal: make(chan struct{}, 1),
|
|
tasks: make(map[string]syncTask),
|
|
}
|
|
}
|
|
|
|
func TestAddTask_OriginRemoteIDMerge(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
firstOrigin string
|
|
secondOrigin string
|
|
expectedOrigin string
|
|
}{
|
|
{
|
|
name: "same remote origin is preserved",
|
|
firstOrigin: "remote-A",
|
|
secondOrigin: "remote-A",
|
|
expectedOrigin: "remote-A",
|
|
},
|
|
{
|
|
name: "local then remote clears origin",
|
|
firstOrigin: "",
|
|
secondOrigin: "remote-A",
|
|
expectedOrigin: "",
|
|
},
|
|
{
|
|
name: "remote then local clears origin",
|
|
firstOrigin: "remote-A",
|
|
secondOrigin: "",
|
|
expectedOrigin: "",
|
|
},
|
|
{
|
|
name: "different remotes clears origin",
|
|
firstOrigin: "remote-A",
|
|
secondOrigin: "remote-B",
|
|
expectedOrigin: "",
|
|
},
|
|
{
|
|
name: "both local stays empty",
|
|
firstOrigin: "",
|
|
secondOrigin: "",
|
|
expectedOrigin: "",
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
scs := newTestService()
|
|
channelID := "channel-1"
|
|
|
|
first := newSyncTask(channelID, "", "", nil, nil)
|
|
first.originRemoteID = tc.firstOrigin
|
|
scs.addTask(first)
|
|
|
|
second := newSyncTask(channelID, "", "", nil, nil)
|
|
second.originRemoteID = tc.secondOrigin
|
|
scs.addTask(second)
|
|
|
|
merged, ok := scs.tasks[first.id]
|
|
require.True(t, ok, "task should exist")
|
|
assert.Equal(t, tc.expectedOrigin, merged.originRemoteID)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestStripSharedChannelStatePostsForSync(t *testing.T) {
|
|
sd := &syncData{
|
|
posts: []*model.Post{
|
|
{Id: "state-1", Type: model.PostTypeSharedChannelState, ChannelId: "ch1", Message: "ignored"},
|
|
{Id: "user-1", Type: model.PostTypeDefault, ChannelId: "ch1", Message: "hello"},
|
|
},
|
|
}
|
|
|
|
stripSharedChannelStatePostsForSync(sd)
|
|
|
|
require.Len(t, sd.posts, 1)
|
|
assert.Equal(t, "user-1", sd.posts[0].Id)
|
|
assert.Equal(t, model.PostTypeDefault, sd.posts[0].Type)
|
|
}
|