From 5f61047d02dbc37cb18a0c373067c03a7b4ca4fd Mon Sep 17 00:00:00 2001 From: Max Vovshin <36747317+Hyaxia@users.noreply.github.com> Date: Thu, 18 Jul 2019 17:26:22 +0300 Subject: [PATCH] [16331] Migrated Channel.SaveMember to sync by default (#11158) (#11624) * Added - golang version validation. * Updated error message to include the minor version that is supported. * Fixed issue with variable. * Renamed variable. * Added - golang version validation. Added validation for major and minor versions of go. * Fixed the way the validation is performed. * Changed function declaration (define validate_go_version) to a target (validate_go_version). * remove unneeded call to validate_go_version * [16331] Migrated Channel.SaveMember to sync by default (#10613) * Used require.Nil to check for err variable instaed of using panic with if statement. * Used require.Nil to check for err variable instaed of using panic with if statement in user_store * fixed errors about shadowing with err variable. * Fixed issue with vet tool validation. * Fixed go fmt tool validation. --- app/channel.go | 16 +- store/sqlstore/channel_store.go | 45 ++-- store/store.go | 2 +- .../storetest/channel_member_history_store.go | 5 +- store/storetest/channel_store.go | 211 +++++++++++------- store/storetest/group_store.go | 8 +- store/storetest/mocks/ChannelStore.go | 19 +- store/storetest/post_store.go | 8 +- store/storetest/team_store.go | 12 +- store/storetest/user_store.go | 159 +++++++------ 10 files changed, 293 insertions(+), 192 deletions(-) diff --git a/app/channel.go b/app/channel.go index 3af6a1a419..a3bcb67407 100644 --- a/app/channel.go +++ b/app/channel.go @@ -93,9 +93,7 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin NotifyProps: model.GetDefaultChannelNotifyProps(), } - if cmResult := <-a.Srv.Store.Channel().SaveMember(cm); cmResult.Err != nil { - err = cmResult.Err - } + _, err = a.Srv.Store.Channel().SaveMember(cm) if histErr := a.Srv.Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); histErr != nil { mlog.Warn(fmt.Sprintf("Failed to update ChannelMemberHistory table %v", histErr)) } @@ -240,8 +238,8 @@ func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Chan NotifyProps: model.GetDefaultChannelNotifyProps(), } - if cmresult := <-a.Srv.Store.Channel().SaveMember(cm); cmresult.Err != nil { - return nil, cmresult.Err + if _, err := a.Srv.Store.Channel().SaveMember(cm); err != nil { + return nil, err } if err := a.Srv.Store.ChannelMemberHistory().LogJoinEvent(channel.CreatorId, sc.Id, model.GetMillis()); err != nil { mlog.Warn(fmt.Sprintf("Failed to update ChannelMemberHistory table %v", err)) @@ -466,8 +464,8 @@ func (a *App) createGroupChannel(userIds []string, creatorId string) (*model.Cha SchemeUser: !user.IsGuest(), } - if result := <-a.Srv.Store.Channel().SaveMember(cm); result.Err != nil { - return nil, result.Err + if _, err := a.Srv.Store.Channel().SaveMember(cm); err != nil { + return nil, err } if err := a.Srv.Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); err != nil { mlog.Warn(fmt.Sprintf("Failed to update ChannelMemberHistory table %v", err)) @@ -918,8 +916,8 @@ func (a *App) addUserToChannel(user *model.User, channel *model.Channel, teamMem SchemeGuest: user.IsGuest(), SchemeUser: !user.IsGuest(), } - if result := <-a.Srv.Store.Channel().SaveMember(newMember); result.Err != nil { - mlog.Error(fmt.Sprintf("Failed to add member user_id=%v channel_id=%v err=%v", user.Id, channel.Id, result.Err), mlog.String("user_id", user.Id)) + if _, err = a.Srv.Store.Channel().SaveMember(newMember); err != nil { + mlog.Error(fmt.Sprintf("Failed to add member user_id=%v channel_id=%v err=%v", user.Id, channel.Id, err), mlog.String("user_id", user.Id)) return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user.to.channel.failed.app_error", nil, "", http.StatusInternalServerError) } a.WaitForChannelMembership(channel.Id, user.Id) diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go index 9d81ba6dcd..0a885f6a6f 100644 --- a/store/sqlstore/channel_store.go +++ b/store/sqlstore/channel_store.go @@ -1291,34 +1291,31 @@ var CHANNEL_MEMBERS_WITH_SCHEME_SELECT_QUERY = ` Schemes TeamScheme ON Teams.SchemeId = TeamScheme.Id ` -func (s SqlChannelStore) SaveMember(member *model.ChannelMember) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - defer s.InvalidateAllChannelMembersForUser(member.UserId) +func (s SqlChannelStore) SaveMember(member *model.ChannelMember) (*model.ChannelMember, *model.AppError) { + defer s.InvalidateAllChannelMembersForUser(member.UserId) - // Grab the channel we are saving this member to - channel, errCh := s.GetFromMaster(member.ChannelId) - if errCh != nil { - result.Err = errCh - return - } + // Grab the channel we are saving this member to + channel, errCh := s.GetFromMaster(member.ChannelId) + if errCh != nil { + return nil, errCh + } - transaction, err := s.GetMaster().Begin() - if err != nil { - result.Err = model.NewAppError("SqlChannelStore.SaveMember", "store.sql_channel.save_member.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) - return - } - defer finalizeTransaction(transaction) + transaction, err := s.GetMaster().Begin() + if err != nil { + return nil, model.NewAppError("SqlChannelStore.SaveMember", "store.sql_channel.save_member.open_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) + } + defer finalizeTransaction(transaction) - *result = s.saveMemberT(transaction, member, channel) - if result.Err != nil { - return - } + storeResult := s.saveMemberT(transaction, member, channel) + if storeResult.Err != nil { + return nil, storeResult.Err + } - if err := transaction.Commit(); err != nil { - result.Err = model.NewAppError("SqlChannelStore.SaveMember", "store.sql_channel.save_member.commit_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) - return - } - }) + if err := transaction.Commit(); err != nil { + return nil, model.NewAppError("SqlChannelStore.SaveMember", "store.sql_channel.save_member.commit_transaction.app_error", nil, err.Error(), http.StatusInternalServerError) + } + + return storeResult.Data.(*model.ChannelMember), nil } func (s SqlChannelStore) saveMemberT(transaction *gorp.Transaction, member *model.ChannelMember, channel *model.Channel) store.StoreResult { diff --git a/store/store.go b/store/store.go index 39ca5c5b5c..59fa864ab9 100644 --- a/store/store.go +++ b/store/store.go @@ -158,7 +158,7 @@ type ChannelStore interface { GetAll(teamId string) ([]*model.Channel, *model.AppError) GetChannelsByIds(channelIds []string) ([]*model.Channel, *model.AppError) GetForPost(postId string) (*model.Channel, *model.AppError) - SaveMember(member *model.ChannelMember) StoreChannel + SaveMember(member *model.ChannelMember) (*model.ChannelMember, *model.AppError) UpdateMember(member *model.ChannelMember) (*model.ChannelMember, *model.AppError) GetMembers(channelId string, offset, limit int) (*model.ChannelMembers, *model.AppError) GetMember(channelId string, userId string) (*model.ChannelMember, *model.AppError) diff --git a/store/storetest/channel_member_history_store.go b/store/storetest/channel_member_history_store.go index 2d234bfd04..e26b92b149 100644 --- a/store/storetest/channel_member_history_store.go +++ b/store/storetest/channel_member_history_store.go @@ -207,11 +207,12 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) { // available in the ChannelMemberHistory table. Instead, we'll fall back to the ChannelMembers table for a rough approximation joinTime := int64(1000) leaveTime := joinTime + 5000 - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: channel.Id, UserId: user.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) // in every single case, the user will be included in the export, because ChannelMembers says they were in the channel at some point in // the past, even though the time that they were actually in the channel doesn't necessarily overlap with the export period diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index b798c5396e..d7163348f4 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -304,7 +304,8 @@ func testGetChannelUnread(t *testing.T, ss store.Store) { require.Nil(t, err) cm1 := &model.ChannelMember{ChannelId: c1.Id, UserId: m1.UserId, NotifyProps: notifyPropsModel, MsgCount: 90} - store.Must(ss.Channel().SaveMember(cm1)) + _, err = ss.Channel().SaveMember(cm1) + require.Nil(t, err) // Setup Channel 2 c2 := &model.Channel{TeamId: m2.TeamId, Name: model.NewId(), DisplayName: "Cultural", Type: model.CHANNEL_OPEN, TotalMsgCount: 100} @@ -312,7 +313,8 @@ func testGetChannelUnread(t *testing.T, ss store.Store) { require.Nil(t, err) cm2 := &model.ChannelMember{ChannelId: c2.Id, UserId: m2.UserId, NotifyProps: notifyPropsModel, MsgCount: 90, MentionCount: 5} - store.Must(ss.Channel().SaveMember(cm2)) + _, err = ss.Channel().SaveMember(cm2) + require.Nil(t, err) // Check for Channel 1 if ch, err := ss.Channel().GetChannelUnread(c1.Id, uid); err != nil { @@ -609,13 +611,15 @@ func testChannelStoreDelete(t *testing.T, ss store.Store) { m1.ChannelId = o1.Id m1.UserId = model.NewId() m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{} m2.ChannelId = o2.Id m2.UserId = m1.UserId m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) if err = ss.Channel().Delete(o1.Id, model.GetMillis()); err != nil { t.Fatal(err) @@ -887,13 +891,15 @@ func testChannelMemberStore(t *testing.T, ss store.Store) { o1.ChannelId = c1.Id o1.UserId = u1.Id o1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&o1)) + _, err = ss.Channel().SaveMember(&o1) + require.Nil(t, err) o2 := model.ChannelMember{} o2.ChannelId = c1.Id o2.UserId = u2.Id o2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&o2)) + _, err = ss.Channel().SaveMember(&o2) + require.Nil(t, err) c1t2, _ := ss.Channel().Get(c1.Id, false) assert.EqualValues(t, 0, c1t2.ExtraUpdateAt, "ExtraUpdateAt should be 0") @@ -941,7 +947,7 @@ func testChannelMemberStore(t *testing.T, ss store.Store) { t.Fatal("should have go member") } - if err := (<-ss.Channel().SaveMember(&o1)).Err; err == nil { + if _, err := ss.Channel().SaveMember(&o1); err == nil { t.Fatal("Should have been a duplicate") } @@ -979,13 +985,15 @@ func testChannelDeleteMemberStore(t *testing.T, ss store.Store) { o1.ChannelId = c1.Id o1.UserId = u1.Id o1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&o1)) + _, err = ss.Channel().SaveMember(&o1) + require.Nil(t, err) o2 := model.ChannelMember{} o2.ChannelId = c1.Id o2.UserId = u2.Id o2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&o2)) + _, err = ss.Channel().SaveMember(&o2) + require.Nil(t, err) c1t2, _ := ss.Channel().Get(c1.Id, false) assert.EqualValues(t, 0, c1t2.ExtraUpdateAt, "ExtraUpdateAt should be 0") @@ -1037,19 +1045,22 @@ func testChannelStoreGetChannels(t *testing.T, ss store.Store) { m1.ChannelId = o1.Id m1.UserId = model.NewId() m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{} m2.ChannelId = o1.Id m2.UserId = model.NewId() m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) m3 := model.ChannelMember{} m3.ChannelId = o2.Id m3.UserId = model.NewId() m3.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) list, err := ss.Channel().GetChannels(o1.TeamId, m1.UserId, false) require.Nil(t, err) @@ -1226,17 +1237,19 @@ func testChannelStoreGetMoreChannels(t *testing.T, ss store.Store) { _, err := ss.Channel().Save(&o1, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: o1.Id, UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: o1.Id, UserId: otherUserId1, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) // o2 is a channel on the other team to which the user belongs o2 := model.Channel{ @@ -1248,11 +1261,12 @@ func testChannelStoreGetMoreChannels(t *testing.T, ss store.Store) { _, err = ss.Channel().Save(&o2, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: o2.Id, UserId: otherUserId2, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) // o3 is a channel on the team to which the user does not belong, and thus should show up // in "more channels" @@ -1285,11 +1299,12 @@ func testChannelStoreGetMoreChannels(t *testing.T, ss store.Store) { _, err = ss.Channel().Save(&o5, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: o5.Id, UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) t.Run("only o3 listed in more channels", func(t *testing.T) { list, channelErr := ss.Channel().GetMoreChannels(teamId, userId, 0, 100) @@ -1547,19 +1562,22 @@ func testChannelStoreGetChannelCounts(t *testing.T, ss store.Store) { m1.ChannelId = o1.Id m1.UserId = model.NewId() m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{} m2.ChannelId = o1.Id m2.UserId = model.NewId() m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) m3 := model.ChannelMember{} m3.ChannelId = o2.Id m3.UserId = model.NewId() m3.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) counts, _ := ss.Channel().GetChannelCounts(o1.TeamId, m1.UserId) @@ -1601,13 +1619,15 @@ func testChannelStoreGetMembersForUser(t *testing.T, ss store.Store) { m1.ChannelId = o1.Id m1.UserId = model.NewId() m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{} m2.ChannelId = o2.Id m2.UserId = m1.UserId m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) members, err := ss.Channel().GetMembersForUser(o1.TeamId, m1.UserId) require.Nil(t, err) @@ -1647,13 +1667,15 @@ func testChannelStoreGetMembersForUserWithPagination(t *testing.T, ss store.Stor m1.ChannelId = o1.Id m1.UserId = model.NewId() m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{} m2.ChannelId = o2.Id m2.UserId = m1.UserId m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) members, err := ss.Channel().GetMembersForUserWithPagination(o1.TeamId, m1.UserId, 0, 1) require.Nil(t, err) @@ -1679,7 +1701,8 @@ func testChannelStoreUpdateLastViewedAt(t *testing.T, ss store.Store) { m1.ChannelId = o1.Id m1.UserId = model.NewId() m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) o2 := model.Channel{} o2.TeamId = model.NewId() @@ -1695,7 +1718,8 @@ func testChannelStoreUpdateLastViewedAt(t *testing.T, ss store.Store) { m2.ChannelId = o2.Id m2.UserId = m1.UserId m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) var times map[string]int64 if times, err = ss.Channel().UpdateLastViewedAt([]string{m1.ChannelId}, m1.UserId); err != nil { @@ -1741,7 +1765,8 @@ func testChannelStoreIncrementMentionCount(t *testing.T, ss store.Store) { m1.ChannelId = o1.Id m1.UserId = model.NewId() m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) err = ss.Channel().IncrementMentionCount(m1.ChannelId, m1.UserId) if err != nil { @@ -1781,7 +1806,8 @@ func testUpdateChannelMember(t *testing.T, ss store.Store) { UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(m1)) + _, err = ss.Channel().SaveMember(m1) + require.Nil(t, err) m1.NotifyProps["test"] = "sometext" if _, err := ss.Channel().UpdateMember(m1); err != nil { @@ -1820,14 +1846,16 @@ func testGetMember(t *testing.T, ss store.Store) { UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(m1)) + _, err = ss.Channel().SaveMember(m1) + require.Nil(t, err) m2 := &model.ChannelMember{ ChannelId: c2.Id, UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(m2)) + _, err = ss.Channel().SaveMember(m2) + require.Nil(t, err) if _, err := ss.Channel().GetMember(model.NewId(), userId); err == nil { t.Fatal("should've failed to get member for non-existent channel") @@ -1880,11 +1908,12 @@ func testChannelStoreGetMemberForPost(t *testing.T, ss store.Store) { o1, err := ss.Channel().Save(ch, -1) require.Nil(t, err) - m1 := store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + m1, err := ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: o1.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), - })).(*model.ChannelMember) + }) + require.Nil(t, err) p1, err := ss.Post().Save(&model.Post{ UserId: model.NewId(), @@ -1938,7 +1967,8 @@ func testGetMemberCount(t *testing.T, ss store.Store) { UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) if count, channelErr := ss.Channel().GetMemberCount(c1.Id, false); channelErr != nil { t.Fatalf("failed to get member count: %v", channelErr) @@ -1959,7 +1989,8 @@ func testGetMemberCount(t *testing.T, ss store.Store) { UserId: u2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) if count, channelErr := ss.Channel().GetMemberCount(c1.Id, false); channelErr != nil { t.Fatalf("failed to get member count: %v", channelErr) @@ -1981,7 +2012,8 @@ func testGetMemberCount(t *testing.T, ss store.Store) { UserId: u3.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) if count, channelErr := ss.Channel().GetMemberCount(c1.Id, false); channelErr != nil { t.Fatalf("failed to get member count: %v", channelErr) @@ -2003,7 +2035,8 @@ func testGetMemberCount(t *testing.T, ss store.Store) { UserId: u4.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m4)) + _, err = ss.Channel().SaveMember(&m4) + require.Nil(t, err) if count, err := ss.Channel().GetMemberCount(c1.Id, false); err != nil { t.Fatalf("failed to get member count: %v", err) @@ -2030,14 +2063,16 @@ func testChannelStoreSearchMore(t *testing.T, ss store.Store) { UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{ ChannelId: o1.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) o2 := model.Channel{ TeamId: otherTeamId, @@ -2053,7 +2088,8 @@ func testChannelStoreSearchMore(t *testing.T, ss store.Store) { UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) o3 := model.Channel{ TeamId: teamId, @@ -2205,21 +2241,24 @@ func testChannelStoreSearchInTeam(t *testing.T, ss store.Store) { UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{ ChannelId: o1.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) m3 := model.ChannelMember{ ChannelId: o2.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) o3 := model.Channel{ TeamId: teamId, @@ -2408,21 +2447,24 @@ func testChannelStoreSearchAllChannels(t *testing.T, ss store.Store) { UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{ ChannelId: o1.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) m3 := model.ChannelMember{ ChannelId: o2.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps(), } - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) o3 := model.Channel{ TeamId: t1.Id, @@ -2616,7 +2658,8 @@ func testChannelStoreAutocompleteInTeamForSearch(t *testing.T, ss store.Store, s m1.ChannelId = o1.Id m1.UserId = u1.Id m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) o2 := model.Channel{} o2.TeamId = model.NewId() @@ -2630,7 +2673,8 @@ func testChannelStoreAutocompleteInTeamForSearch(t *testing.T, ss store.Store, s m2.ChannelId = o2.Id m2.UserId = m1.UserId m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) o3 := model.Channel{} o3.TeamId = o1.TeamId @@ -2644,7 +2688,8 @@ func testChannelStoreAutocompleteInTeamForSearch(t *testing.T, ss store.Store, s m3.ChannelId = o3.Id m3.UserId = m1.UserId m3.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) err = ss.Channel().SetDeleteAt(o3.Id, 100, 100) require.Nil(t, err, "channel should have been deleted") @@ -2661,7 +2706,8 @@ func testChannelStoreAutocompleteInTeamForSearch(t *testing.T, ss store.Store, s m4.ChannelId = o4.Id m4.UserId = m1.UserId m4.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m4)) + _, err = ss.Channel().SaveMember(&m4) + require.Nil(t, err) o5 := model.Channel{} o5.TeamId = o1.TeamId @@ -2714,9 +2760,11 @@ func testChannelStoreGetMembersByIds(t *testing.T, ss store.Store) { require.Nil(t, err) m1 := &model.ChannelMember{ChannelId: o1.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps()} - store.Must(ss.Channel().SaveMember(m1)) + _, err = ss.Channel().SaveMember(m1) + require.Nil(t, err) - if members, err := ss.Channel().GetMembersByIds(m1.ChannelId, []string{m1.UserId}); err != nil { + var members *model.ChannelMembers + if members, err = ss.Channel().GetMembersByIds(m1.ChannelId, []string{m1.UserId}); err != nil { t.Fatal(err) } else { rm1 := (*members)[0] @@ -2731,9 +2779,10 @@ func testChannelStoreGetMembersByIds(t *testing.T, ss store.Store) { } m2 := &model.ChannelMember{ChannelId: o1.Id, UserId: model.NewId(), NotifyProps: model.GetDefaultChannelNotifyProps()} - store.Must(ss.Channel().SaveMember(m2)) + _, err = ss.Channel().SaveMember(m2) + require.Nil(t, err) - if members, err := ss.Channel().GetMembersByIds(m1.ChannelId, []string{m1.UserId, m2.UserId, model.NewId()}); err != nil { + if members, err = ss.Channel().GetMembersByIds(m1.ChannelId, []string{m1.UserId, m2.UserId, model.NewId()}); err != nil { t.Fatal(err) } else { if len(*members) != 2 { @@ -2741,7 +2790,7 @@ func testChannelStoreGetMembersByIds(t *testing.T, ss store.Store) { } } - if _, err := ss.Channel().GetMembersByIds(m1.ChannelId, []string{}); err == nil { + if _, err = ss.Channel().GetMembersByIds(m1.ChannelId, []string{}); err == nil { t.Fatal("empty user ids - should have failed") } } @@ -2786,11 +2835,12 @@ func testChannelStoreSearchGroupChannels(t *testing.T, ss store.Store) { require.Nil(t, err) for _, userId := range userIds { - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: gc1.Id, UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) } userIds = []string{u1.Id, u4.Id} @@ -2802,11 +2852,12 @@ func testChannelStoreSearchGroupChannels(t *testing.T, ss store.Store) { require.Nil(t, err) for _, userId := range userIds { - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: gc2.Id, UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) } userIds = []string{u1.Id, u2.Id, u3.Id, u4.Id} @@ -2818,11 +2869,12 @@ func testChannelStoreSearchGroupChannels(t *testing.T, ss store.Store) { require.Nil(t, err) for _, userId := range userIds { - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err := ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: gc3.Id, UserId: userId, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) } defer func() { @@ -3146,9 +3198,9 @@ func testChannelStoreMigrateChannelMembers(t *testing.T, ss store.Store) { NotifyProps: model.GetDefaultChannelNotifyProps(), } - cm1 = (<-ss.Channel().SaveMember(cm1)).Data.(*model.ChannelMember) - cm2 = (<-ss.Channel().SaveMember(cm2)).Data.(*model.ChannelMember) - cm3 = (<-ss.Channel().SaveMember(cm3)).Data.(*model.ChannelMember) + cm1, _ = ss.Channel().SaveMember(cm1) + cm2, _ = ss.Channel().SaveMember(cm2) + cm3, _ = ss.Channel().SaveMember(cm3) lastDoneChannelId := strings.Repeat("0", 26) lastDoneUserId := strings.Repeat("0", 26) @@ -3265,10 +3317,14 @@ func testChannelStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) ExplicitRoles: "custom_only", } - store.Must(ss.Channel().SaveMember(m1)) - store.Must(ss.Channel().SaveMember(m2)) - store.Must(ss.Channel().SaveMember(m3)) - store.Must(ss.Channel().SaveMember(m4)) + _, err := ss.Channel().SaveMember(m1) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(m2) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(m3) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(m4) + require.Nil(t, err) require.Nil(t, ss.Channel().ClearAllCustomRoleAssignments()) @@ -3515,13 +3571,15 @@ func testChannelStoreGetChannelMembersForExport(t *testing.T, ss store.Store) { m1.ChannelId = c1.Id m1.UserId = u1.Id m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{} m2.ChannelId = c2.Id m2.UserId = u1.Id m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) d1, err := ss.Channel().GetChannelMembersForExport(u1.Id, t1.Id) assert.Nil(t, err) @@ -3574,19 +3632,22 @@ func testChannelStoreRemoveAllDeactivatedMembers(t *testing.T, ss store.Store) { m1.ChannelId = c1.Id m1.UserId = u1.Id m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err = ss.Channel().SaveMember(&m1) + require.Nil(t, err) m2 := model.ChannelMember{} m2.ChannelId = c1.Id m2.UserId = u2.Id m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) m3 := model.ChannelMember{} m3.ChannelId = c1.Id m3.UserId = u3.Id m3.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) // Get all the channel members. Check there are 3. d1, err := ss.Channel().GetMembers(c1.Id, 0, 1000) diff --git a/store/storetest/group_store.go b/store/storetest/group_store.go index 241dd1c0e9..cbd4442088 100644 --- a/store/storetest/group_store.go +++ b/store/storetest/group_store.go @@ -1524,12 +1524,12 @@ func pendingMemberRemovalsDataSetup(t *testing.T, ss store.Store) *removalsData } for _, item := range userIDChannelIDs { - res := <-ss.Channel().SaveMember(&model.ChannelMember{ + _, err := ss.Channel().SaveMember(&model.ChannelMember{ UserId: item[0], ChannelId: item[1], NotifyProps: model.GetDefaultChannelNotifyProps(), }) - require.Nil(t, res.Err) + require.Nil(t, err) } return &removalsData{ @@ -2382,14 +2382,14 @@ func testChannelMembersMinusGroupMembers(t *testing.T, ss store.Store) { users = append(users, user) trueOrFalse := int(math.Mod(float64(i), 2)) == 0 - res := <-ss.Channel().SaveMember(&model.ChannelMember{ + _, err := ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: channel.Id, UserId: user.Id, SchemeUser: trueOrFalse, SchemeAdmin: !trueOrFalse, NotifyProps: model.GetDefaultChannelNotifyProps(), }) - require.Nil(t, res.Err) + require.Nil(t, err) } for i := 0; i < numberOfGroups; i++ { diff --git a/store/storetest/mocks/ChannelStore.go b/store/storetest/mocks/ChannelStore.go index 81d1746252..dad08cbc27 100644 --- a/store/storetest/mocks/ChannelStore.go +++ b/store/storetest/mocks/ChannelStore.go @@ -1329,19 +1329,28 @@ func (_m *ChannelStore) SaveDirectChannel(channel *model.Channel, member1 *model } // SaveMember provides a mock function with given fields: member -func (_m *ChannelStore) SaveMember(member *model.ChannelMember) store.StoreChannel { +func (_m *ChannelStore) SaveMember(member *model.ChannelMember) (*model.ChannelMember, *model.AppError) { ret := _m.Called(member) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(*model.ChannelMember) store.StoreChannel); ok { + var r0 *model.ChannelMember + if rf, ok := ret.Get(0).(func(*model.ChannelMember) *model.ChannelMember); ok { r0 = rf(member) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.ChannelMember) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(*model.ChannelMember) *model.AppError); ok { + r1 = rf(member) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // SearchAllChannels provides a mock function with given fields: term, opts diff --git a/store/storetest/post_store.go b/store/storetest/post_store.go index cb70529121..09ee9248ef 100644 --- a/store/storetest/post_store.go +++ b/store/storetest/post_store.go @@ -1181,7 +1181,8 @@ func testPostStoreSearch(t *testing.T, ss store.Store) { m1.ChannelId = c1.Id m1.UserId = userId m1.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) + _, err := ss.Channel().SaveMember(&m1) + require.Nil(t, err) c2 := &model.Channel{} c2.TeamId = teamId @@ -1203,13 +1204,14 @@ func testPostStoreSearch(t *testing.T, ss store.Store) { m3.ChannelId = c3.Id m3.UserId = userId m3.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m3)) + _, err = ss.Channel().SaveMember(&m3) + require.Nil(t, err) o1 := &model.Post{} o1.ChannelId = c1.Id o1.UserId = model.NewId() o1.Message = "corey mattermost new york" - o1, err := ss.Post().Save(o1) + o1, err = ss.Post().Save(o1) require.Nil(t, err) o1a := &model.Post{} diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go index 2393f35349..b2558d7f46 100644 --- a/store/storetest/team_store.go +++ b/store/storetest/team_store.go @@ -1197,9 +1197,11 @@ func testGetChannelUnreadsForAllTeams(t *testing.T, ss store.Store) { require.Nil(t, err) cm1 := &model.ChannelMember{ChannelId: c1.Id, UserId: m1.UserId, NotifyProps: model.GetDefaultChannelNotifyProps(), MsgCount: 90} - store.Must(ss.Channel().SaveMember(cm1)) + _, err = ss.Channel().SaveMember(cm1) + require.Nil(t, err) cm2 := &model.ChannelMember{ChannelId: c2.Id, UserId: m2.UserId, NotifyProps: model.GetDefaultChannelNotifyProps(), MsgCount: 90} - store.Must(ss.Channel().SaveMember(cm2)) + _, err = ss.Channel().SaveMember(cm2) + require.Nil(t, err) if ms1, err := ss.Team().GetChannelUnreadsForAllTeams("", uid); err != nil { t.Fatal(err) @@ -1261,9 +1263,11 @@ func testGetChannelUnreadsForTeam(t *testing.T, ss store.Store) { require.Nil(t, err) cm1 := &model.ChannelMember{ChannelId: c1.Id, UserId: m1.UserId, NotifyProps: model.GetDefaultChannelNotifyProps(), MsgCount: 90} - store.Must(ss.Channel().SaveMember(cm1)) + _, err = ss.Channel().SaveMember(cm1) + require.Nil(t, err) cm2 := &model.ChannelMember{ChannelId: c2.Id, UserId: m1.UserId, NotifyProps: model.GetDefaultChannelNotifyProps(), MsgCount: 90} - store.Must(ss.Channel().SaveMember(cm2)) + _, err = ss.Channel().SaveMember(cm2) + require.Nil(t, err) if ms, err := ss.Team().GetChannelUnreadsForTeam(m1.TeamId, m1.UserId); err != nil { t.Fatal(err) diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go index be925eba1f..8970c72fff 100644 --- a/store/storetest/user_store.go +++ b/store/storetest/user_store.go @@ -706,30 +706,33 @@ func testUserStoreGetProfilesInChannel(t *testing.T, ss store.Store) { c2, err := ss.Channel().Save(ch2, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u3.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c2.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - + }) + require.Nil(t, err) t.Run("get in channel 1, offset 0, limit 100", func(t *testing.T) { result := <-ss.User().GetProfilesInChannel(c1.Id, 0, 100) require.Nil(t, result.Err) @@ -802,30 +805,33 @@ func testUserStoreGetProfilesInChannelByStatus(t *testing.T, ss store.Store) { c2, err := ss.Channel().Save(ch2, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u3.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c2.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - + }) + require.Nil(t, err) require.Nil(t, ss.Status().SaveOrUpdate(&model.Status{ UserId: u1.Id, Status: model.STATUS_DND, @@ -957,29 +963,35 @@ func testUserStoreGetAllProfilesInChannel(t *testing.T, ss store.Store) { c2, err := ss.Channel().Save(ch2, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + if err != nil { + panic(err) + } - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u3.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c2.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) t.Run("all profiles in channel 1, no caching", func(t *testing.T) { var profiles map[string]*model.User @@ -1098,30 +1110,35 @@ func testUserStoreGetProfilesNotInChannel(t *testing.T, ss store.Store) { }, profiles) }) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u3.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c2.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - + }) + if err != nil { + panic(err) + } t.Run("get team 1, channel 1, offset 0, limit 100, after update", func(t *testing.T) { var profiles []*model.User profiles, err = ss.User().GetProfilesNotInChannel(teamId, c1.Id, false, 0, 100, nil) @@ -1298,11 +1315,12 @@ func testUserStoreGetProfileByGroupChannelIdsForUser(t *testing.T, ss store.Stor require.Nil(t, err) for _, uId := range []string{u1.Id, u2.Id, u3.Id} { - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: gc1.Id, UserId: uId, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) } gc2, err := ss.Channel().Save(&model.Channel{ @@ -1313,11 +1331,12 @@ func testUserStoreGetProfileByGroupChannelIdsForUser(t *testing.T, ss store.Stor require.Nil(t, err) for _, uId := range []string{u1.Id, u3.Id, u4.Id} { - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: gc2.Id, UserId: uId, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) } testCases := []struct { @@ -1902,8 +1921,8 @@ func testUserUnreadCount(t *testing.T, ss store.Store) { m2.UserId = u2.Id m2.NotifyProps = model.GetDefaultChannelNotifyProps() - store.Must(ss.Channel().SaveMember(&m1)) - store.Must(ss.Channel().SaveMember(&m2)) + _, err = ss.Channel().SaveMember(&m2) + require.Nil(t, err) m1.ChannelId = c2.Id m2.ChannelId = c2.Id @@ -2599,21 +2618,24 @@ func testUserStoreSearchNotInChannel(t *testing.T, ss store.Store) { c2, err := ss.Channel().Save(&ch2, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c2.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + }) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u3.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + }) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c2.Id, UserId: u2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) testCases := []struct { Description string @@ -2819,21 +2841,24 @@ func testUserStoreSearchInChannel(t *testing.T, ss store.Store) { c2, err := ss.Channel().Save(&ch2, -1) require.Nil(t, err) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + }) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c2.Id, UserId: u2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + }) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: c1.Id, UserId: u3.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) testCases := []struct { Description string @@ -3731,16 +3756,18 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) { UserId: u2.Id, TeamId: t1.Id, }, 100)) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ UserId: u2.Id, ChannelId: cPub1.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + }) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(&model.ChannelMember{ UserId: u2.Id, ChannelId: cPub2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) startTime := u2.CreateAt time.Sleep(10 * time.Millisecond) @@ -3756,16 +3783,18 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) { TeamId: t1.Id, DeleteAt: model.GetMillis(), }, 100)) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ UserId: u3.Id, ChannelId: cPub2.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) - store.Must(ss.Channel().SaveMember(&model.ChannelMember{ + }) + require.Nil(t, err) + _, err = ss.Channel().SaveMember(&model.ChannelMember{ UserId: u3.Id, ChannelId: cPriv.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), - })) + }) + require.Nil(t, err) endTime := u3.CreateAt @@ -3963,12 +3992,12 @@ func testUserStoreGetChannelGroupUsers(t *testing.T, ss store.Store) { userNoGroup := testUsers[2] // add non-group-member to the channel (to prove that the query isn't just returning all members) - res := <-ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: channel.Id, UserId: userNoGroup.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), }) - require.Nil(t, res.Err) + require.Nil(t, err) // create groups var testGroups []*model.Group @@ -4035,12 +4064,12 @@ func testUserStoreGetChannelGroupUsers(t *testing.T, ss store.Store) { requireNUsers(2) // add team membership of allowed user - res = <-ss.Channel().SaveMember(&model.ChannelMember{ + _, err = ss.Channel().SaveMember(&model.ChannelMember{ ChannelId: channel.Id, UserId: userGroupA.Id, NotifyProps: model.GetDefaultChannelNotifyProps(), }) - require.Nil(t, res.Err) + require.Nil(t, err) // ensure allowed member still returned by query requireNUsers(2)