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) {
|
func (s SqlChannelStore) GetMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) {
|
||||||
var dbMembers channelMemberWithSchemeRolesList
|
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 {
|
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)
|
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)
|
_, err = ss.Channel().SaveMember(&m2)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
members, err := ss.Channel().GetMembersForUser(o1.TeamId, m1.UserId)
|
t.Run("with channels", func(t *testing.T) {
|
||||||
require.Nil(t, err)
|
var members *model.ChannelMembers
|
||||||
|
members, err = ss.Channel().GetMembersForUser(o1.TeamId, m1.UserId)
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
// no unread messages
|
assert.Len(t, *members, 2)
|
||||||
if len(*members) != 2 {
|
})
|
||||||
t.Fatal("wrong number of members")
|
|
||||||
}
|
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) {
|
func testChannelStoreGetMembersForUserWithPagination(t *testing.T, ss store.Store) {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user