* Revert "MM-19371 - Reply count disappears from pinned and flagged conv… (#12753)"
Этот коммит содержится в:
Eli Yukelzon
2020-01-15 17:14:04 +02:00
коммит произвёл GitHub
родитель da97740cc2
Коммит 8e0fe90897
17 изменённых файлов: 322 добавлений и 550 удалений

Просмотреть файл

@@ -108,13 +108,13 @@ func (_m *PostStore) Delete(postId string, time int64, deleteByID string) *model
return r0
}
// Get provides a mock function with given fields: id, skipFetchThreads
func (_m *PostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *model.AppError) {
ret := _m.Called(id, skipFetchThreads)
// Get provides a mock function with given fields: id
func (_m *PostStore) Get(id string) (*model.PostList, *model.AppError) {
ret := _m.Called(id)
var r0 *model.PostList
if rf, ok := ret.Get(0).(func(string, bool) *model.PostList); ok {
r0 = rf(id, skipFetchThreads)
if rf, ok := ret.Get(0).(func(string) *model.PostList); ok {
r0 = rf(id)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.PostList)
@@ -122,8 +122,8 @@ func (_m *PostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *mo
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string, bool) *model.AppError); ok {
r1 = rf(id, skipFetchThreads)
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
r1 = rf(id)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
@@ -382,13 +382,13 @@ func (_m *PostStore) GetPostIdBeforeTime(channelId string, time int64) (string,
return r0, r1
}
// GetPosts provides a mock function with given fields: options, allowFromCache
func (_m *PostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError) {
ret := _m.Called(options, allowFromCache)
// GetPosts provides a mock function with given fields: channelId, offset, limit, allowFromCache
func (_m *PostStore) GetPosts(channelId string, offset int, limit int, allowFromCache bool) (*model.PostList, *model.AppError) {
ret := _m.Called(channelId, offset, limit, allowFromCache)
var r0 *model.PostList
if rf, ok := ret.Get(0).(func(model.GetPostsOptions, bool) *model.PostList); ok {
r0 = rf(options, allowFromCache)
if rf, ok := ret.Get(0).(func(string, int, int, bool) *model.PostList); ok {
r0 = rf(channelId, offset, limit, allowFromCache)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.PostList)
@@ -396,8 +396,8 @@ func (_m *PostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(model.GetPostsOptions, bool) *model.AppError); ok {
r1 = rf(options, allowFromCache)
if rf, ok := ret.Get(1).(func(string, int, int, bool) *model.AppError); ok {
r1 = rf(channelId, offset, limit, allowFromCache)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
@@ -407,13 +407,13 @@ func (_m *PostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool
return r0, r1
}
// GetPostsAfter provides a mock function with given fields: options
func (_m *PostStore) GetPostsAfter(options model.GetPostsOptions) (*model.PostList, *model.AppError) {
ret := _m.Called(options)
// GetPostsAfter provides a mock function with given fields: channelId, postId, numPosts, offset
func (_m *PostStore) GetPostsAfter(channelId string, postId string, numPosts int, offset int) (*model.PostList, *model.AppError) {
ret := _m.Called(channelId, postId, numPosts, offset)
var r0 *model.PostList
if rf, ok := ret.Get(0).(func(model.GetPostsOptions) *model.PostList); ok {
r0 = rf(options)
if rf, ok := ret.Get(0).(func(string, string, int, int) *model.PostList); ok {
r0 = rf(channelId, postId, numPosts, offset)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.PostList)
@@ -421,8 +421,8 @@ func (_m *PostStore) GetPostsAfter(options model.GetPostsOptions) (*model.PostLi
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(model.GetPostsOptions) *model.AppError); ok {
r1 = rf(options)
if rf, ok := ret.Get(1).(func(string, string, int, int) *model.AppError); ok {
r1 = rf(channelId, postId, numPosts, offset)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
@@ -457,13 +457,13 @@ func (_m *PostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, li
return r0, r1
}
// GetPostsBefore provides a mock function with given fields: options
func (_m *PostStore) GetPostsBefore(options model.GetPostsOptions) (*model.PostList, *model.AppError) {
ret := _m.Called(options)
// GetPostsBefore provides a mock function with given fields: channelId, postId, numPosts, offset
func (_m *PostStore) GetPostsBefore(channelId string, postId string, numPosts int, offset int) (*model.PostList, *model.AppError) {
ret := _m.Called(channelId, postId, numPosts, offset)
var r0 *model.PostList
if rf, ok := ret.Get(0).(func(model.GetPostsOptions) *model.PostList); ok {
r0 = rf(options)
if rf, ok := ret.Get(0).(func(string, string, int, int) *model.PostList); ok {
r0 = rf(channelId, postId, numPosts, offset)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.PostList)
@@ -471,8 +471,8 @@ func (_m *PostStore) GetPostsBefore(options model.GetPostsOptions) (*model.PostL
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(model.GetPostsOptions) *model.AppError); ok {
r1 = rf(options)
if rf, ok := ret.Get(1).(func(string, string, int, int) *model.AppError); ok {
r1 = rf(channelId, postId, numPosts, offset)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
@@ -532,13 +532,13 @@ func (_m *PostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.P
return r0, r1
}
// GetPostsSince provides a mock function with given fields: options, allowFromCache
func (_m *PostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFromCache bool) (*model.PostList, *model.AppError) {
ret := _m.Called(options, allowFromCache)
// GetPostsSince provides a mock function with given fields: channelId, time, allowFromCache
func (_m *PostStore) GetPostsSince(channelId string, time int64, allowFromCache bool) (*model.PostList, *model.AppError) {
ret := _m.Called(channelId, time, allowFromCache)
var r0 *model.PostList
if rf, ok := ret.Get(0).(func(model.GetPostsSinceOptions, bool) *model.PostList); ok {
r0 = rf(options, allowFromCache)
if rf, ok := ret.Get(0).(func(string, int64, bool) *model.PostList); ok {
r0 = rf(channelId, time, allowFromCache)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.PostList)
@@ -546,8 +546,8 @@ func (_m *PostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFrom
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(model.GetPostsSinceOptions, bool) *model.AppError); ok {
r1 = rf(options, allowFromCache)
if rf, ok := ret.Get(1).(func(string, int64, bool) *model.AppError); ok {
r1 = rf(channelId, time, allowFromCache)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)

Просмотреть файл

@@ -133,7 +133,7 @@ func testPostStoreGet(t *testing.T, ss store.Store) {
t.Fatal("Invalid Etag")
}
r1, err := ss.Post().Get(o1.Id, false)
r1, err := ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -141,11 +141,11 @@ func testPostStoreGet(t *testing.T, ss store.Store) {
t.Fatal("invalid returned post")
}
if _, err = ss.Post().Get("123", false); err == nil {
if _, err = ss.Post().Get("123"); err == nil {
t.Fatal("Missing id should have failed")
}
if _, err = ss.Post().Get("", false); err == nil {
if _, err = ss.Post().Get(""); err == nil {
t.Fatal("should fail for blank post ids")
}
}
@@ -196,17 +196,17 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
o3, err = ss.Post().Save(o3)
require.Nil(t, err)
r1, err := ss.Post().Get(o1.Id, false)
r1, err := ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
ro1 := r1.Posts[o1.Id]
r2, err := ss.Post().Get(o1.Id, false)
r2, err := ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
ro2 := r2.Posts[o2.Id]
r3, err := ss.Post().Get(o3.Id, false)
r3, err := ss.Post().Get(o3.Id)
if err != nil {
t.Fatal(err)
}
@@ -223,7 +223,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r1, err = ss.Post().Get(o1.Id, false)
r1, err = ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -240,7 +240,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r2, err = ss.Post().Get(o1.Id, false)
r2, err = ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -257,7 +257,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r3, err = ss.Post().Get(o3.Id, false)
r3, err = ss.Post().Get(o3.Id)
if err != nil {
t.Fatal(err)
}
@@ -275,7 +275,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
})
require.Nil(t, err)
r4, err := ss.Post().Get(o4.Id, false)
r4, err := ss.Post().Get(o4.Id)
if err != nil {
t.Fatal(err)
}
@@ -289,7 +289,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r4, err = ss.Post().Get(o4.Id, false)
r4, err = ss.Post().Get(o4.Id)
if err != nil {
t.Fatal(err)
}
@@ -316,7 +316,7 @@ func testPostStoreDelete(t *testing.T, ss store.Store) {
o1, err := ss.Post().Save(o1)
require.Nil(t, err)
if r1, err := ss.Post().Get(o1.Id, false); err != nil {
if r1, err := ss.Post().Get(o1.Id); err != nil {
t.Fatal(err)
} else {
if r1.Posts[o1.Id].CreateAt != o1.CreateAt {
@@ -335,7 +335,7 @@ func testPostStoreDelete(t *testing.T, ss store.Store) {
t.Errorf("Expected (*Post).Props[model.POST_PROPS_DELETE_BY] to be %v but got %v.", deleteByID, actual)
}
if r3, err := ss.Post().Get(o1.Id, false); err == nil {
if r3, err := ss.Post().Get(o1.Id); err == nil {
t.Log(r3)
t.Fatal("Missing id should have failed")
}
@@ -367,11 +367,11 @@ func testPostStoreDelete1Level(t *testing.T, ss store.Store) {
t.Fatal(err)
}
if _, err := ss.Post().Get(o1.Id, false); err == nil {
if _, err := ss.Post().Get(o1.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
if _, err := ss.Post().Get(o2.Id, false); err == nil {
if _, err := ss.Post().Get(o2.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
}
@@ -413,19 +413,19 @@ func testPostStoreDelete2Level(t *testing.T, ss store.Store) {
t.Fatal(err)
}
if _, err := ss.Post().Get(o1.Id, false); err == nil {
if _, err := ss.Post().Get(o1.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
if _, err := ss.Post().Get(o2.Id, false); err == nil {
if _, err := ss.Post().Get(o2.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
if _, err := ss.Post().Get(o3.Id, false); err == nil {
if _, err := ss.Post().Get(o3.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
if _, err := ss.Post().Get(o4.Id, false); err != nil {
if _, err := ss.Post().Get(o4.Id); err != nil {
t.Fatal(err)
}
}
@@ -458,11 +458,11 @@ func testPostStorePermDelete1Level(t *testing.T, ss store.Store) {
t.Fatal(err2)
}
if _, err := ss.Post().Get(o1.Id, false); err != nil {
if _, err := ss.Post().Get(o1.Id); err != nil {
t.Fatal("Deleted id shouldn't have failed")
}
if _, err := ss.Post().Get(o2.Id, false); err == nil {
if _, err := ss.Post().Get(o2.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
@@ -470,7 +470,7 @@ func testPostStorePermDelete1Level(t *testing.T, ss store.Store) {
t.Fatal(err)
}
if _, err := ss.Post().Get(o3.Id, false); err == nil {
if _, err := ss.Post().Get(o3.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
}
@@ -503,15 +503,15 @@ func testPostStorePermDelete1Level2(t *testing.T, ss store.Store) {
t.Fatal(err2)
}
if _, err := ss.Post().Get(o1.Id, false); err == nil {
if _, err := ss.Post().Get(o1.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
if _, err := ss.Post().Get(o2.Id, false); err == nil {
if _, err := ss.Post().Get(o2.Id); err == nil {
t.Fatal("Deleted id should have failed")
}
if _, err := ss.Post().Get(o3.Id, false); err != nil {
if _, err := ss.Post().Get(o3.Id); err != nil {
t.Fatal("Deleted id shouldn't have failed")
}
}
@@ -542,7 +542,7 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
o3, err = ss.Post().Save(o3)
require.Nil(t, err)
pl, err := ss.Post().Get(o1.Id, false)
pl, err := ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -555,7 +555,7 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
t.Fatal(dErr)
}
pl, err = ss.Post().Get(o1.Id, false)
pl, err = ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -568,7 +568,7 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
t.Fatal(dErr)
}
pl, err = ss.Post().Get(o1.Id, false)
pl, err = ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -634,7 +634,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
o5, err = ss.Post().Save(o5)
require.Nil(t, err)
r1, err := ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 4}, false)
r1, err := ss.Post().GetPosts(o1.ChannelId, 0, 4, false)
require.Nil(t, err)
if r1.Order[0] != o5.Id {
@@ -661,7 +661,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
t.Fatal("Missing parent")
}
r2, err := ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 4}, false)
r2, err := ss.Post().GetPosts(o1.ChannelId, 0, 4, true)
require.Nil(t, err)
if r2.Order[0] != o5.Id {
@@ -689,7 +689,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
}
// Run once to fill cache
_, err = ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 30}, false)
_, err = ss.Post().GetPosts(o1.ChannelId, 0, 30, false)
require.Nil(t, err)
o6 := &model.Post{}
@@ -699,7 +699,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
_, err = ss.Post().Save(o6)
require.Nil(t, err)
r3, err := ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 30}, false)
r3, err := ss.Post().GetPosts(o1.ChannelId, 0, 30, false)
require.Nil(t, err)
assert.Equal(t, 7, len(r3.Order))
}
@@ -724,7 +724,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
}
t.Run("should not return anything before the first post", func(t *testing.T) {
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: posts[0].Id, Page: 0, PerPage: 10})
postList, err := ss.Post().GetPostsBefore(channelId, posts[0].Id, 10, 0)
assert.Nil(t, err)
assert.Equal(t, []string{}, postList.Order)
@@ -732,7 +732,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
})
t.Run("should return posts before a post", func(t *testing.T) {
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, Page: 0, PerPage: 10})
postList, err := ss.Post().GetPostsBefore(channelId, posts[5].Id, 10, 0)
assert.Nil(t, err)
assert.Equal(t, []string{posts[4].Id, posts[3].Id, posts[2].Id, posts[1].Id, posts[0].Id}, postList.Order)
@@ -746,7 +746,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
})
t.Run("should limit posts before", func(t *testing.T) {
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, PerPage: 2})
postList, err := ss.Post().GetPostsBefore(channelId, posts[5].Id, 2, 0)
assert.Nil(t, err)
assert.Equal(t, []string{posts[4].Id, posts[3].Id}, postList.Order)
@@ -757,7 +757,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
})
t.Run("should not return anything after the last post", func(t *testing.T) {
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: posts[len(posts)-1].Id, PerPage: 10})
postList, err := ss.Post().GetPostsAfter(channelId, posts[len(posts)-1].Id, 10, 0)
assert.Nil(t, err)
assert.Equal(t, []string{}, postList.Order)
@@ -765,7 +765,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
})
t.Run("should return posts after a post", func(t *testing.T) {
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, PerPage: 10})
postList, err := ss.Post().GetPostsAfter(channelId, posts[5].Id, 10, 0)
assert.Nil(t, err)
assert.Equal(t, []string{posts[9].Id, posts[8].Id, posts[7].Id, posts[6].Id}, postList.Order)
@@ -778,7 +778,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
})
t.Run("should limit posts after", func(t *testing.T) {
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, PerPage: 2})
postList, err := ss.Post().GetPostsAfter(channelId, posts[5].Id, 2, 0)
assert.Nil(t, err)
assert.Equal(t, []string{posts[7].Id, posts[6].Id}, postList.Order)
@@ -788,6 +788,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
}, postList.Posts)
})
})
t.Run("with threads", func(t *testing.T) {
channelId := model.NewId()
userId := model.NewId()
@@ -858,7 +859,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
post2.UpdateAt = post6.UpdateAt
t.Run("should return each post and thread before a post", func(t *testing.T) {
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: post4.Id, PerPage: 2})
postList, err := ss.Post().GetPostsBefore(channelId, post4.Id, 2, 0)
assert.Nil(t, err)
assert.Equal(t, []string{post3.Id, post2.Id}, postList.Order)
@@ -872,7 +873,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
})
t.Run("should return each post and the root of each thread after a post", func(t *testing.T) {
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: post4.Id, PerPage: 2})
postList, err := ss.Post().GetPostsAfter(channelId, post4.Id, 2, 0)
assert.Nil(t, err)
assert.Equal(t, []string{post6.Id, post5.Id}, postList.Order)
@@ -884,112 +885,6 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
}, postList.Posts)
})
})
t.Run("with threads (skipFetchThreads)", func(t *testing.T) {
channelId := model.NewId()
userId := model.NewId()
// This creates a series of posts that looks like:
// post1
// post2
// post3 (in response to post1)
// post4 (in response to post2)
// post5
// post6 (in response to post2)
post1, err := ss.Post().Save(&model.Post{
ChannelId: channelId,
UserId: userId,
Message: "post1",
})
require.Nil(t, err)
post1.ReplyCount = 1
time.Sleep(time.Millisecond)
post2, err := ss.Post().Save(&model.Post{
ChannelId: channelId,
UserId: userId,
Message: "post2",
})
require.Nil(t, err)
post2.ReplyCount = 2
time.Sleep(time.Millisecond)
post3, err := ss.Post().Save(&model.Post{
ChannelId: channelId,
UserId: userId,
ParentId: post1.Id,
RootId: post1.Id,
Message: "post3",
})
require.Nil(t, err)
time.Sleep(time.Millisecond)
post4, err := ss.Post().Save(&model.Post{
ChannelId: channelId,
UserId: userId,
RootId: post2.Id,
ParentId: post2.Id,
Message: "post4",
})
require.Nil(t, err)
time.Sleep(time.Millisecond)
post5, err := ss.Post().Save(&model.Post{
ChannelId: channelId,
UserId: userId,
Message: "post5",
})
require.Nil(t, err)
time.Sleep(time.Millisecond)
post6, err := ss.Post().Save(&model.Post{
ChannelId: channelId,
UserId: userId,
ParentId: post2.Id,
RootId: post2.Id,
Message: "post6",
})
require.Nil(t, err)
// Adding a post to a thread changes the UpdateAt timestamp of the parent post
post1.UpdateAt = post3.UpdateAt
post2.UpdateAt = post6.UpdateAt
t.Run("should return each post and thread before a post", func(t *testing.T) {
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: post4.Id, PerPage: 2, SkipFetchThreads: true})
assert.Nil(t, err)
assert.Equal(t, []string{post3.Id, post2.Id}, postList.Order)
assert.Equal(t, map[string]*model.Post{
post1.Id: post1,
post2.Id: post2,
post3.Id: post3,
}, postList.Posts)
})
t.Run("should return each post and thread before a post with limit", func(t *testing.T) {
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: post4.Id, PerPage: 1, SkipFetchThreads: true})
assert.Nil(t, err)
assert.Equal(t, []string{post3.Id}, postList.Order)
assert.Equal(t, map[string]*model.Post{
post1.Id: post1,
post3.Id: post3,
}, postList.Posts)
})
t.Run("should return each post and the root of each thread after a post", func(t *testing.T) {
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: post4.Id, PerPage: 2, SkipFetchThreads: true})
assert.Nil(t, err)
assert.Equal(t, []string{post6.Id, post5.Id}, postList.Order)
assert.Equal(t, map[string]*model.Post{
post2.Id: post2,
post5.Id: post5,
post6.Id: post6,
}, postList.Posts)
})
})
}
func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
@@ -1047,7 +942,7 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
require.Nil(t, err)
time.Sleep(time.Millisecond)
postList, err := ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: post3.CreateAt}, false)
postList, err := ss.Post().GetPostsSince(channelId, post3.CreateAt, false)
assert.Nil(t, err)
assert.Equal(t, []string{
@@ -1078,7 +973,7 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
require.Nil(t, err)
time.Sleep(time.Millisecond)
postList, err := ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: post1.CreateAt}, false)
postList, err := ss.Post().GetPostsSince(channelId, post1.CreateAt, false)
assert.Nil(t, err)
assert.Equal(t, []string{}, postList.Order)
@@ -1100,12 +995,12 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
time.Sleep(time.Millisecond)
// Make a request that returns no results
postList, err := ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: post1.CreateAt}, true)
postList, err := ss.Post().GetPostsSince(channelId, post1.CreateAt, true)
require.Nil(t, err)
require.Equal(t, model.NewPostList(), postList)
// And then ensure that it doesn't cause future requests to also return no results
postList, err = ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: post1.CreateAt - 1}, true)
postList, err = ss.Post().GetPostsSince(channelId, post1.CreateAt-1, true)
assert.Nil(t, err)
assert.Equal(t, []string{post1.Id}, postList.Order)
@@ -2238,17 +2133,17 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
o3, err = ss.Post().Save(o3)
require.Nil(t, err)
r1, err := ss.Post().Get(o1.Id, false)
r1, err := ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
ro1 := r1.Posts[o1.Id]
r2, err := ss.Post().Get(o1.Id, false)
r2, err := ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
ro2 := r2.Posts[o2.Id]
r3, err := ss.Post().Get(o3.Id, false)
r3, err := ss.Post().Get(o3.Id)
if err != nil {
t.Fatal(err)
}
@@ -2266,7 +2161,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r1, err = ss.Post().Get(o1.Id, false)
r1, err = ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -2284,7 +2179,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r2, err = ss.Post().Get(o1.Id, false)
r2, err = ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
@@ -2302,7 +2197,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r3, err = ss.Post().Get(o3.Id, false)
r3, err = ss.Post().Get(o3.Id)
if err != nil {
t.Fatal(err)
}
@@ -2320,7 +2215,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
})
require.Nil(t, err)
r4, err := ss.Post().Get(o4.Id, false)
r4, err := ss.Post().Get(o4.Id)
if err != nil {
t.Fatal(err)
}
@@ -2335,7 +2230,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
t.Fatal(err)
}
r4, err = ss.Post().Get(o4.Id, false)
r4, err = ss.Post().Get(o4.Id)
if err != nil {
t.Fatal(err)
}
@@ -2371,17 +2266,17 @@ func testPostStoreGetPostsByIds(t *testing.T, ss store.Store) {
o3, err = ss.Post().Save(o3)
require.Nil(t, err)
r1, err := ss.Post().Get(o1.Id, false)
r1, err := ss.Post().Get(o1.Id)
if err != nil {
t.Fatal(err)
}
ro1 := r1.Posts[o1.Id]
r2, err := ss.Post().Get(o2.Id, false)
r2, err := ss.Post().Get(o2.Id)
if err != nil {
t.Fatal(err)
}
ro2 := r2.Posts[o2.Id]
r3, err := ss.Post().Get(o3.Id, false)
r3, err := ss.Post().Get(o3.Id)
if err != nil {
t.Fatal(err)
}
@@ -2510,15 +2405,15 @@ func testPostStorePermanentDeleteBatch(t *testing.T, ss store.Store) {
_, err = ss.Post().PermanentDeleteBatch(2000, 1000)
require.Nil(t, err)
if _, err := ss.Post().Get(o1.Id, false); err == nil {
if _, err := ss.Post().Get(o1.Id); err == nil {
t.Fatalf("Should have not found post 1 after purge")
}
if _, err := ss.Post().Get(o2.Id, false); err == nil {
if _, err := ss.Post().Get(o2.Id); err == nil {
t.Fatalf("Should have not found post 2 after purge")
}
if _, err := ss.Post().Get(o3.Id, false); err != nil {
if _, err := ss.Post().Get(o3.Id); err != nil {
t.Fatalf("Should have not found post 3 after purge")
}
}

Просмотреть файл

@@ -43,13 +43,15 @@ func testReactionSave(t *testing.T, ss store.Store) {
assert.Equal(t, saved.EmojiName, reaction1.EmojiName, "should've saved reaction emoji_name and returned it")
var secondUpdateAt int64
postList, err := ss.Post().Get(reaction1.PostId, false)
require.Nil(t, err)
assert.True(t, postList.Posts[post.Id].HasReactions, "should've set HasReactions = true on post")
assert.NotEqual(t, postList.Posts[post.Id].UpdateAt, firstUpdateAt, "should've marked post as updated when HasReactions changed")
if postList.Posts[post.Id].HasReactions && postList.Posts[post.Id].UpdateAt != firstUpdateAt {
postList, err := ss.Post().Get(reaction1.PostId)
if err != nil {
t.Fatal(err)
}
if !postList.Posts[post.Id].HasReactions {
t.Fatal("should've set HasReactions = true on post")
} else if postList.Posts[post.Id].UpdateAt == firstUpdateAt {
t.Fatal("should've marked post as updated when HasReactions changed")
} else {
secondUpdateAt = postList.Posts[post.Id].UpdateAt
}
@@ -65,8 +67,10 @@ func testReactionSave(t *testing.T, ss store.Store) {
_, err = ss.Reaction().Save(reaction2)
require.Nil(t, err)
postList, err = ss.Post().Get(reaction2.PostId, false)
require.Nil(t, err)
postList, err = ss.Post().Get(reaction2.PostId)
if err != nil {
t.Fatal(err)
}
assert.NotEqual(t, postList.Posts[post.Id].UpdateAt, secondUpdateAt, "should've marked post as updated even if HasReactions doesn't change")
@@ -113,10 +117,10 @@ func testReactionDelete(t *testing.T, ss store.Store) {
_, err = ss.Reaction().Save(reaction)
require.Nil(t, err)
result, err := ss.Post().Get(reaction.PostId, false)
require.Nil(t, err)
result, err := ss.Post().Get(reaction.PostId)
if err != nil {
t.Fatal(err)
}
firstUpdateAt := result.Posts[post.Id].UpdateAt
_, err = ss.Reaction().Delete(reaction)
@@ -127,11 +131,20 @@ func testReactionDelete(t *testing.T, ss store.Store) {
assert.Empty(t, reactions, "should've deleted reaction")
postList, err := ss.Post().Get(post.Id, false)
require.Nil(t, err)
assert.False(t, postList.Posts[post.Id].HasReactions, "should've set HasReactions = false on post")
assert.NotEqual(t, postList.Posts[post.Id].UpdateAt, firstUpdateAt, "should mark post as updated after deleting reactions")
if reactions, rErr := ss.Reaction().GetForPost(post.Id, false); rErr != nil {
t.Fatal(rErr)
} else if len(reactions) != 0 {
t.Fatal("should've deleted reaction")
}
postList, err := ss.Post().Get(post.Id)
if err != nil {
t.Fatal(err)
}
if postList.Posts[post.Id].HasReactions {
t.Fatal("should've set HasReactions = false on post")
} else if postList.Posts[post.Id].UpdateAt == firstUpdateAt {
t.Fatal("should mark post as updated after deleting reactions")
}
}
func testReactionGetForPost(t *testing.T, ss store.Store) {
@@ -288,17 +301,26 @@ func testReactionDeleteAllWithEmojiName(t *testing.T, ss store.Store) {
assert.Empty(t, returned, "should've only removed reactions with emoji name")
// check that the posts are updated
postList, err := ss.Post().Get(post.Id, false)
require.Nil(t, err)
assert.True(t, postList.Posts[post.Id].HasReactions, "post should still have reactions")
postList, err := ss.Post().Get(post.Id)
if err != nil {
t.Fatal(err)
}
if !postList.Posts[post.Id].HasReactions {
t.Fatal("post should still have reactions")
}
postList, err = ss.Post().Get(post2.Id, false)
require.Nil(t, err)
assert.True(t, postList.Posts[post2.Id].HasReactions, "post should still have reactions")
postList, err = ss.Post().Get(post2.Id)
if err != nil {
t.Fatal(err)
}
if !postList.Posts[post2.Id].HasReactions {
t.Fatal("post should still have reactions")
}
postList, err = ss.Post().Get(post3.Id, false)
require.Nil(t, err)
assert.False(t, postList.Posts[post3.Id].HasReactions, "post shouldn't have reactions any more")
postList, err = ss.Post().Get(post3.Id)
if err != nil {
t.Fatal(err)
}
}