mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Update root post update at on reply delete (#28688)
* Update root post update at on reply delete * Address feedback
This commit is contained in:
parent
d6343832d9
commit
42c9905e16
@ -951,6 +951,13 @@ func (s *SqlPostStore) Delete(rctx request.CTX, postID string, time int64, delet
|
||||
err = s.deleteThread(transaction, postID, time)
|
||||
} else {
|
||||
err = s.updateThreadAfterReplyDeletion(transaction, id.RootId, id.UserId)
|
||||
updatePostQuery := s.getQueryBuilder().
|
||||
Update("Posts").
|
||||
Set("UpdateAt", time).
|
||||
Where(sq.Eq{"Id": id.RootId})
|
||||
if _, err = transaction.ExecBuilder(updatePostQuery); err != nil {
|
||||
mlog.Warn("Error updating Post UpdateAt.", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
@ -1242,6 +1242,66 @@ func testPostStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) {
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("root post update at is updated upon reply delete", func(t *testing.T) {
|
||||
teamId := model.NewId()
|
||||
channel, err := ss.Channel().Save(rctx, &model.Channel{
|
||||
TeamId: teamId,
|
||||
DisplayName: "DisplayName1",
|
||||
Name: "channel" + model.NewId(),
|
||||
Type: model.ChannelTypeOpen,
|
||||
}, -1)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create a root post
|
||||
rootPost1, err := ss.Post().Save(rctx, &model.Post{
|
||||
ChannelId: channel.Id,
|
||||
UserId: model.NewId(),
|
||||
Message: NewTestId(),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// Reply to that root post
|
||||
_, err = ss.Post().Save(rctx, &model.Post{
|
||||
ChannelId: rootPost1.ChannelId,
|
||||
UserId: model.NewId(),
|
||||
Message: NewTestId(),
|
||||
RootId: rootPost1.Id,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// Reply to that root post a second time
|
||||
replyPost2, err := ss.Post().Save(rctx, &model.Post{
|
||||
ChannelId: rootPost1.ChannelId,
|
||||
UserId: model.NewId(),
|
||||
Message: NewTestId(),
|
||||
RootId: rootPost1.Id,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// Reply to that root post a third time
|
||||
_, err = ss.Post().Save(rctx, &model.Post{
|
||||
ChannelId: rootPost1.ChannelId,
|
||||
UserId: model.NewId(),
|
||||
Message: NewTestId(),
|
||||
RootId: rootPost1.Id,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
updatedRootPost, err := ss.Post().GetSingle(rctx, rootPost1.Id, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
beforeDeleteTime := updatedRootPost.UpdateAt
|
||||
|
||||
// Delete the reply previous to last
|
||||
err = ss.Post().Delete(rctx, replyPost2.Id, model.GetMillis(), "")
|
||||
require.NoError(t, err)
|
||||
|
||||
updatedRootPost, err = ss.Post().GetSingle(rctx, rootPost1.Id, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Greater(t, updatedRootPost.UpdateAt, beforeDeleteTime)
|
||||
})
|
||||
|
||||
t.Run("thread with multiple replies, update thread last reply at", func(t *testing.T) {
|
||||
teamId := model.NewId()
|
||||
channel, err := ss.Channel().Save(rctx, &model.Channel{
|
||||
|
Loading…
Reference in New Issue
Block a user