MM-55524: Include deactivated users in DM export (#25695)
We were incorrectly excluding deactivated users while getting channel members for a DM channel, whereas we were actually exporting all users in the users array. We fix this and also correctly honor the includeArchivedChannels flag as well. https://mattermost.atlassian.net/browse/MM-55524 ```release-note Include deactivated members in a favorited DM channel export. ``` --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
f7446d7443
Коммит
8364e30a2a
@@ -7746,7 +7746,7 @@ func testChannelStoreExportAllDirectChannels(t *testing.T, rctx request.CTX, ss
|
||||
|
||||
ss.Channel().SaveDirectChannel(rctx, &o1, &m1, &m2)
|
||||
|
||||
d1, nErr := ss.Channel().GetAllDirectChannelsForExportAfter(10000, strings.Repeat("0", 26))
|
||||
d1, nErr := ss.Channel().GetAllDirectChannelsForExportAfter(10000, strings.Repeat("0", 26), false)
|
||||
assert.NoError(t, nErr)
|
||||
|
||||
assert.Len(t, d1, 2)
|
||||
@@ -7809,7 +7809,7 @@ func testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t *testing.T
|
||||
|
||||
ss.Channel().SaveDirectChannel(rctx, &o1, &m1, &m2)
|
||||
|
||||
d1, nErr := ss.Channel().GetAllDirectChannelsForExportAfter(10000, strings.Repeat("0", 26))
|
||||
d1, nErr := ss.Channel().GetAllDirectChannelsForExportAfter(10000, strings.Repeat("0", 26), false)
|
||||
assert.NoError(t, nErr)
|
||||
assert.Len(t, d1, 1)
|
||||
assert.Equal(t, o1.DisplayName, d1[0].DisplayName)
|
||||
@@ -7837,6 +7837,7 @@ func testChannelStoreExportAllDirectChannelsDeletedChannel(t *testing.T, rctx re
|
||||
|
||||
u2 := &model.User{}
|
||||
u2.Email = MakeEmail()
|
||||
u2.DeleteAt = 123000
|
||||
u2.Nickname = model.NewId()
|
||||
_, err = ss.User().Save(u2)
|
||||
require.NoError(t, err)
|
||||
@@ -7859,10 +7860,14 @@ func testChannelStoreExportAllDirectChannelsDeletedChannel(t *testing.T, rctx re
|
||||
nErr = ss.Channel().SetDeleteAt(o1.Id, 1, 1)
|
||||
require.NoError(t, nErr, "channel should have been deleted")
|
||||
|
||||
d1, nErr := ss.Channel().GetAllDirectChannelsForExportAfter(10000, strings.Repeat("0", 26))
|
||||
d1, nErr := ss.Channel().GetAllDirectChannelsForExportAfter(10000, strings.Repeat("0", 26), false)
|
||||
assert.NoError(t, nErr)
|
||||
assert.Len(t, d1, 0)
|
||||
|
||||
assert.Equal(t, 0, len(d1))
|
||||
d1, nErr = ss.Channel().GetAllDirectChannelsForExportAfter(10000, strings.Repeat("0", 26), true)
|
||||
assert.NoError(t, nErr)
|
||||
assert.Len(t, d1, 1)
|
||||
assert.Len(t, *d1[0].Members, 2)
|
||||
|
||||
// Manually truncate Channels table until testlib can handle cleanups
|
||||
s.GetMasterX().Exec("TRUNCATE Channels")
|
||||
|
||||
@@ -586,25 +586,25 @@ func (_m *ChannelStore) GetAllChannelsForExportAfter(limit int, afterID string)
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// GetAllDirectChannelsForExportAfter provides a mock function with given fields: limit, afterID
|
||||
func (_m *ChannelStore) GetAllDirectChannelsForExportAfter(limit int, afterID string) ([]*model.DirectChannelForExport, error) {
|
||||
ret := _m.Called(limit, afterID)
|
||||
// GetAllDirectChannelsForExportAfter provides a mock function with given fields: limit, afterID, includeArchivedChannels
|
||||
func (_m *ChannelStore) GetAllDirectChannelsForExportAfter(limit int, afterID string, includeArchivedChannels bool) ([]*model.DirectChannelForExport, error) {
|
||||
ret := _m.Called(limit, afterID, includeArchivedChannels)
|
||||
|
||||
var r0 []*model.DirectChannelForExport
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(0).(func(int, string) ([]*model.DirectChannelForExport, error)); ok {
|
||||
return rf(limit, afterID)
|
||||
if rf, ok := ret.Get(0).(func(int, string, bool) ([]*model.DirectChannelForExport, error)); ok {
|
||||
return rf(limit, afterID, includeArchivedChannels)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(int, string) []*model.DirectChannelForExport); ok {
|
||||
r0 = rf(limit, afterID)
|
||||
if rf, ok := ret.Get(0).(func(int, string, bool) []*model.DirectChannelForExport); ok {
|
||||
r0 = rf(limit, afterID, includeArchivedChannels)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).([]*model.DirectChannelForExport)
|
||||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(int, string) error); ok {
|
||||
r1 = rf(limit, afterID)
|
||||
if rf, ok := ret.Get(1).(func(int, string, bool) error); ok {
|
||||
r1 = rf(limit, afterID, includeArchivedChannels)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user