[MM-33123] Add a test for SetPostUnread-DM Channel (#20129)
* Add a test for SetPostUnread-DM Channel * assert early * Unread post in DM thread * Replace th.BasicUser with u1 var Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
@@ -2651,6 +2651,93 @@ func TestSetChannelUnread(t *testing.T) {
|
||||
assert.Equal(t, int64(2), unread.MsgCount)
|
||||
})
|
||||
|
||||
t.Run("Unread on a direct channel", func(t *testing.T) {
|
||||
dc := th.CreateDmChannel(u2)
|
||||
th.CreateMessagePostNoClient(dc, "test1", now)
|
||||
p := th.CreateMessagePostNoClient(dc, "test2", now+10)
|
||||
require.NotNil(t, p)
|
||||
th.CreateMessagePostNoClient(dc, "test3", now+20)
|
||||
p1 := th.CreateMessagePostNoClient(dc, "test4", now+30)
|
||||
require.NotNil(t, p1)
|
||||
|
||||
// Ensure that post have been read
|
||||
unread, err := th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(4), unread.MsgCount)
|
||||
cv := &model.ChannelView{ChannelId: dc.Id}
|
||||
_, appErr := th.App.ViewChannel(cv, u1.Id, s2.Id, false)
|
||||
require.Nil(t, appErr)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(0), unread.MsgCount)
|
||||
|
||||
r, _ := th.Client.SetPostUnread(u1.Id, p.Id, false)
|
||||
assert.Equal(t, 200, r.StatusCode)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(3), unread.MsgCount)
|
||||
|
||||
// Ensure that post have been read
|
||||
_, appErr = th.App.ViewChannel(cv, u1.Id, s2.Id, false)
|
||||
require.Nil(t, appErr)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(0), unread.MsgCount)
|
||||
|
||||
r, _ = th.Client.SetPostUnread(u1.Id, p1.Id, false)
|
||||
assert.Equal(t, 200, r.StatusCode)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(1), unread.MsgCount)
|
||||
})
|
||||
|
||||
t.Run("Unread on a direct channel in a thread", func(t *testing.T) {
|
||||
dc := th.CreateDmChannel(th.CreateUser())
|
||||
rootPost, appErr := th.App.CreatePost(th.Context, &model.Post{UserId: u1.Id, CreateAt: now, ChannelId: dc.Id, Message: "root"}, dc, false, false)
|
||||
require.Nil(t, appErr)
|
||||
_, appErr = th.App.CreatePost(th.Context, &model.Post{RootId: rootPost.Id, UserId: u1.Id, CreateAt: now + 10, ChannelId: dc.Id, Message: "reply 1"}, dc, false, false)
|
||||
require.Nil(t, appErr)
|
||||
reply2, appErr := th.App.CreatePost(th.Context, &model.Post{RootId: rootPost.Id, UserId: u1.Id, CreateAt: now + 20, ChannelId: dc.Id, Message: "reply 2"}, dc, false, false)
|
||||
require.Nil(t, appErr)
|
||||
_, appErr = th.App.CreatePost(th.Context, &model.Post{RootId: rootPost.Id, UserId: u1.Id, CreateAt: now + 30, ChannelId: dc.Id, Message: "reply 3"}, dc, false, false)
|
||||
require.Nil(t, appErr)
|
||||
|
||||
// Ensure that post have been read
|
||||
unread, err := th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(4), unread.MsgCount)
|
||||
require.Equal(t, int64(1), unread.MsgCountRoot)
|
||||
cv := &model.ChannelView{ChannelId: dc.Id}
|
||||
_, appErr = th.App.ViewChannel(cv, u1.Id, s2.Id, false)
|
||||
require.Nil(t, appErr)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(0), unread.MsgCount)
|
||||
require.Equal(t, int64(0), unread.MsgCountRoot)
|
||||
|
||||
r, _ := th.Client.SetPostUnread(u1.Id, rootPost.Id, false)
|
||||
assert.Equal(t, 200, r.StatusCode)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(4), unread.MsgCount)
|
||||
require.Equal(t, int64(1), unread.MsgCountRoot)
|
||||
|
||||
// Ensure that post have been read
|
||||
_, appErr = th.App.ViewChannel(cv, u1.Id, s2.Id, false)
|
||||
require.Nil(t, appErr)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(0), unread.MsgCount)
|
||||
require.Equal(t, int64(0), unread.MsgCountRoot)
|
||||
|
||||
r, _ = th.Client.SetPostUnread(u1.Id, reply2.Id, false)
|
||||
assert.Equal(t, 200, r.StatusCode)
|
||||
unread, err = th.App.GetChannelUnread(dc.Id, u1.Id)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int64(2), unread.MsgCount)
|
||||
require.Equal(t, int64(0), unread.MsgCountRoot)
|
||||
})
|
||||
|
||||
t.Run("Unread on a private channel", func(t *testing.T) {
|
||||
r, _ := th.Client.SetPostUnread(u1.Id, pp2.Id, true)
|
||||
assert.Equal(t, 200, r.StatusCode)
|
||||
|
||||
Ссылка в новой задаче
Block a user