From 2ea14ef395fad8919b2f4137642a7f50b370ffba Mon Sep 17 00:00:00 2001 From: Shivashis Padhi Date: Fri, 23 Sep 2022 10:12:24 -0400 Subject: [PATCH] [MM-47002] Fix new private channels not showing up in least active channels insights (#21031) Automatic Merge --- store/sqlstore/channel_store.go | 4 ++-- store/storetest/channel_store.go | 35 +++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go index 19686d967d..ee33d608ac 100644 --- a/store/sqlstore/channel_store.go +++ b/store/sqlstore/channel_store.go @@ -4367,7 +4367,7 @@ func (s SqlChannelStore) GetTopInactiveChannelsForTeamSince(teamID string, userI FROM Channels LEFT JOIN Posts on Posts.ChannelId = Channels.Id AND Posts.Type = '' AND Posts.CreateAt > ? AND Posts.DeleteAt = 0 - LEFT JOIN ChannelMembers on Posts.ChannelId = ChannelMembers.ChannelId + LEFT JOIN ChannelMembers on Channels.Id = ChannelMembers.ChannelId WHERE Channels.TeamId = ? AND Channels.CreateAt < ? @@ -4416,7 +4416,7 @@ func (s SqlChannelStore) GetTopInactiveChannelsForUserSince(teamID string, userI FROM Channels LEFT JOIN Posts on Posts.ChannelId = Channels.Id AND Posts.Type = '' AND Posts.CreateAt > ? AND Posts.DeleteAt = 0 - LEFT JOIN ChannelMembers on Posts.ChannelId = ChannelMembers.ChannelId + LEFT JOIN ChannelMembers on Channels.Id = ChannelMembers.ChannelId WHERE Channels.DeleteAt = 0 AND Channels.CreateAt < ? diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index 7b2757ad14..3f4dd4cedd 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -8007,6 +8007,16 @@ func testGetTopInactiveChannels(t *testing.T, ss store.Store) { channelPrivate, nErr := ss.Channel().Save(&c3, -1) require.NoError(t, nErr) + // create private channel with post + c3NoPost := model.Channel{} + c3NoPost.TeamId = team.Id + c3NoPost.DisplayName = "Channel3" + model.NewId() + c3NoPost.Name = NewTestId() + c3NoPost.Type = model.ChannelTypePrivate + c3NoPost.CreateAt = 1 + channelPrivateNoPost, nErr := ss.Channel().Save(&c3NoPost, -1) + require.NoError(t, nErr) + // create dm channel u1 := model.User{} u1.Email = MakeEmail() @@ -8029,6 +8039,9 @@ func testGetTopInactiveChannels(t *testing.T, ss store.Store) { cm1 := &model.ChannelMember{ChannelId: channelPrivate.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps()} _, err = ss.Channel().SaveMember(cm1) require.NoError(t, err) + cm1NoPost := &model.ChannelMember{ChannelId: channelPrivateNoPost.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps()} + _, err = ss.Channel().SaveMember(cm1NoPost) + require.NoError(t, err) cm1Public := &model.ChannelMember{ChannelId: channelPublic1.Id, UserId: u1.Id, NotifyProps: model.GetDefaultChannelNotifyProps()} _, err = ss.Channel().SaveMember(cm1Public) require.NoError(t, err) @@ -8085,25 +8098,27 @@ func testGetTopInactiveChannels(t *testing.T, ss store.Store) { t.Run("top inactive channels for team - u1 ", func(t *testing.T) { topInactiveChannels, err := ss.Channel().GetTopInactiveChannelsForTeamSince(team.Id, u1.Id, 2, 0, 10) require.NoError(t, err) - require.Len(t, topInactiveChannels.Items, 3) - require.Equal(t, topInactiveChannels.Items[0].ID, channelSaved0.Id) - require.Equal(t, topInactiveChannels.Items[0].LastActivityAt, postToCheckLastUpdateAt.CreateAt) - require.Equal(t, topInactiveChannels.Items[1].ID, channelPrivate.Id) - require.Equal(t, topInactiveChannels.Items[2].ID, channelPublic1.Id) + require.Len(t, topInactiveChannels.Items, 4) + require.Equal(t, topInactiveChannels.Items[0].ID, channelPrivateNoPost.Id) + require.Equal(t, topInactiveChannels.Items[1].ID, channelSaved0.Id) + require.Equal(t, topInactiveChannels.Items[1].LastActivityAt, postToCheckLastUpdateAt.CreateAt) + require.Equal(t, topInactiveChannels.Items[2].ID, channelPrivate.Id) + require.Equal(t, topInactiveChannels.Items[3].ID, channelPublic1.Id) // test bot posts are counted - require.Equal(t, topInactiveChannels.Items[2].MessageCount, int64(4)) + require.Equal(t, topInactiveChannels.Items[3].MessageCount, int64(4)) // participants - require.Equal(t, topInactiveChannels.Items[1].Participants[0], u1.Id) require.Equal(t, topInactiveChannels.Items[2].Participants[0], u1.Id) + require.Equal(t, topInactiveChannels.Items[3].Participants[0], u1.Id) }) t.Run("top inactive channels for user - u1 ", func(t *testing.T) { topInactiveChannels, err := ss.Channel().GetTopInactiveChannelsForUserSince(team.Id, u1.Id, 2, 0, 10) require.NoError(t, err) - require.Len(t, topInactiveChannels.Items, 2) - require.Equal(t, topInactiveChannels.Items[0].ID, channelPrivate.Id) - require.Equal(t, topInactiveChannels.Items[1].ID, channelPublic1.Id) + require.Len(t, topInactiveChannels.Items, 3) + require.Equal(t, topInactiveChannels.Items[0].ID, channelPrivateNoPost.Id) + require.Equal(t, topInactiveChannels.Items[1].ID, channelPrivate.Id) + require.Equal(t, topInactiveChannels.Items[2].ID, channelPublic1.Id) }) // for u2