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
Этот коммит содержится в:
Jesús Espino
2019-07-26 10:34:01 +02:00
коммит произвёл GitHub
родитель b73b6b4c36
Коммит 447589a06e
2 изменённых файлов: 51 добавлений и 7 удалений

Просмотреть файл

@@ -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) {