More robust guest members for users and tests for it (#11700)
* More robust guest members for users and tests for it * Fixing shadow variables * Fixing shadow variables
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b73b6b4c36
Коммит
447589a06e
@@ -1939,7 +1939,7 @@ func (s SqlChannelStore) AnalyticsDeletedTypeCount(teamId string, channelType st
|
||||
|
||||
func (s SqlChannelStore) GetMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) {
|
||||
var dbMembers channelMemberWithSchemeRolesList
|
||||
_, err := s.GetReplica().Select(&dbMembers, CHANNEL_MEMBERS_WITH_SCHEME_SELECT_QUERY+"WHERE ChannelMembers.UserId = :UserId AND (Teams.Id = :TeamId OR Teams.Id IS NULL)", map[string]interface{}{"TeamId": teamId, "UserId": userId})
|
||||
_, err := s.GetReplica().Select(&dbMembers, CHANNEL_MEMBERS_WITH_SCHEME_SELECT_QUERY+"WHERE ChannelMembers.UserId = :UserId AND (Teams.Id = :TeamId OR Teams.Id = '' OR Teams.Id IS NULL)", map[string]interface{}{"TeamId": teamId, "UserId": userId})
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlChannelStore.GetMembersForUser", "store.sql_channel.get_members.app_error", nil, "teamId="+teamId+", userId="+userId+", err="+err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
@@ -1630,13 +1630,57 @@ func testChannelStoreGetMembersForUser(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Channel().SaveMember(&m2)
|
||||
require.Nil(t, err)
|
||||
|
||||
members, err := ss.Channel().GetMembersForUser(o1.TeamId, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
t.Run("with channels", func(t *testing.T) {
|
||||
var members *model.ChannelMembers
|
||||
members, err = ss.Channel().GetMembersForUser(o1.TeamId, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
|
||||
// no unread messages
|
||||
if len(*members) != 2 {
|
||||
t.Fatal("wrong number of members")
|
||||
}
|
||||
assert.Len(t, *members, 2)
|
||||
})
|
||||
|
||||
t.Run("with channels and direct messages", func(t *testing.T) {
|
||||
_, err = ss.Channel().CreateDirectChannel(model.NewId(), m1.UserId)
|
||||
require.Nil(t, err)
|
||||
_, err = ss.Channel().CreateDirectChannel(model.NewId(), m1.UserId)
|
||||
require.Nil(t, err)
|
||||
// other user direct message
|
||||
_, err = ss.Channel().CreateDirectChannel(model.NewId(), model.NewId())
|
||||
require.Nil(t, err)
|
||||
|
||||
var members *model.ChannelMembers
|
||||
members, err = ss.Channel().GetMembersForUser(o1.TeamId, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Len(t, *members, 4)
|
||||
})
|
||||
|
||||
t.Run("with channels, direct channels and group messages", func(t *testing.T) {
|
||||
userIds := []string{model.NewId(), model.NewId(), model.NewId(), m1.UserId}
|
||||
group := &model.Channel{
|
||||
Name: model.GetGroupNameFromUserIds(userIds),
|
||||
DisplayName: "test",
|
||||
Type: model.CHANNEL_GROUP,
|
||||
}
|
||||
var channel *model.Channel
|
||||
channel, err = ss.Channel().Save(group, 10000)
|
||||
require.Nil(t, err)
|
||||
for _, userId := range userIds {
|
||||
cm := &model.ChannelMember{
|
||||
UserId: userId,
|
||||
ChannelId: channel.Id,
|
||||
NotifyProps: model.GetDefaultChannelNotifyProps(),
|
||||
SchemeUser: true,
|
||||
}
|
||||
|
||||
_, err = ss.Channel().SaveMember(cm)
|
||||
require.Nil(t, err)
|
||||
}
|
||||
var members *model.ChannelMembers
|
||||
members, err = ss.Channel().GetMembersForUser(o1.TeamId, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Len(t, *members, 5)
|
||||
})
|
||||
}
|
||||
|
||||
func testChannelStoreGetMembersForUserWithPagination(t *testing.T, ss store.Store) {
|
||||
|
||||
Ссылка в новой задаче
Block a user