MM-17468 - Improve thread fetching (#13653)
* Revert "Thread fetching revert (#13616)"
This reverts commit 8e0fe90897.
* renamed query param for clarity
Co-authored-by: mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
57717a23af
Коммит
597a2b77cd
@@ -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
|
||||
func (_m *PostStore) Get(id string) (*model.PostList, *model.AppError) {
|
||||
ret := _m.Called(id)
|
||||
// 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)
|
||||
|
||||
var r0 *model.PostList
|
||||
if rf, ok := ret.Get(0).(func(string) *model.PostList); ok {
|
||||
r0 = rf(id)
|
||||
if rf, ok := ret.Get(0).(func(string, bool) *model.PostList); ok {
|
||||
r0 = rf(id, skipFetchThreads)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.PostList)
|
||||
@@ -122,8 +122,8 @@ func (_m *PostStore) Get(id string) (*model.PostList, *model.AppError) {
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
|
||||
r1 = rf(id)
|
||||
if rf, ok := ret.Get(1).(func(string, bool) *model.AppError); ok {
|
||||
r1 = rf(id, skipFetchThreads)
|
||||
} 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: 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)
|
||||
// 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)
|
||||
|
||||
var r0 *model.PostList
|
||||
if rf, ok := ret.Get(0).(func(string, int, int, bool) *model.PostList); ok {
|
||||
r0 = rf(channelId, offset, limit, allowFromCache)
|
||||
if rf, ok := ret.Get(0).(func(model.GetPostsOptions, bool) *model.PostList); ok {
|
||||
r0 = rf(options, allowFromCache)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.PostList)
|
||||
@@ -396,8 +396,8 @@ func (_m *PostStore) GetPosts(channelId string, offset int, limit int, allowFrom
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string, int, int, bool) *model.AppError); ok {
|
||||
r1 = rf(channelId, offset, limit, allowFromCache)
|
||||
if rf, ok := ret.Get(1).(func(model.GetPostsOptions, bool) *model.AppError); ok {
|
||||
r1 = rf(options, allowFromCache)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
@@ -407,13 +407,13 @@ func (_m *PostStore) GetPosts(channelId string, offset int, limit int, allowFrom
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// 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)
|
||||
// GetPostsAfter provides a mock function with given fields: options
|
||||
func (_m *PostStore) GetPostsAfter(options model.GetPostsOptions) (*model.PostList, *model.AppError) {
|
||||
ret := _m.Called(options)
|
||||
|
||||
var r0 *model.PostList
|
||||
if rf, ok := ret.Get(0).(func(string, string, int, int) *model.PostList); ok {
|
||||
r0 = rf(channelId, postId, numPosts, offset)
|
||||
if rf, ok := ret.Get(0).(func(model.GetPostsOptions) *model.PostList); ok {
|
||||
r0 = rf(options)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.PostList)
|
||||
@@ -421,8 +421,8 @@ func (_m *PostStore) GetPostsAfter(channelId string, postId string, numPosts int
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string, string, int, int) *model.AppError); ok {
|
||||
r1 = rf(channelId, postId, numPosts, offset)
|
||||
if rf, ok := ret.Get(1).(func(model.GetPostsOptions) *model.AppError); ok {
|
||||
r1 = rf(options)
|
||||
} 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: 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)
|
||||
// GetPostsBefore provides a mock function with given fields: options
|
||||
func (_m *PostStore) GetPostsBefore(options model.GetPostsOptions) (*model.PostList, *model.AppError) {
|
||||
ret := _m.Called(options)
|
||||
|
||||
var r0 *model.PostList
|
||||
if rf, ok := ret.Get(0).(func(string, string, int, int) *model.PostList); ok {
|
||||
r0 = rf(channelId, postId, numPosts, offset)
|
||||
if rf, ok := ret.Get(0).(func(model.GetPostsOptions) *model.PostList); ok {
|
||||
r0 = rf(options)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.PostList)
|
||||
@@ -471,8 +471,8 @@ func (_m *PostStore) GetPostsBefore(channelId string, postId string, numPosts in
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string, string, int, int) *model.AppError); ok {
|
||||
r1 = rf(channelId, postId, numPosts, offset)
|
||||
if rf, ok := ret.Get(1).(func(model.GetPostsOptions) *model.AppError); ok {
|
||||
r1 = rf(options)
|
||||
} 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: channelId, time, allowFromCache
|
||||
func (_m *PostStore) GetPostsSince(channelId string, time int64, allowFromCache bool) (*model.PostList, *model.AppError) {
|
||||
ret := _m.Called(channelId, time, allowFromCache)
|
||||
// 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)
|
||||
|
||||
var r0 *model.PostList
|
||||
if rf, ok := ret.Get(0).(func(string, int64, bool) *model.PostList); ok {
|
||||
r0 = rf(channelId, time, allowFromCache)
|
||||
if rf, ok := ret.Get(0).(func(model.GetPostsSinceOptions, bool) *model.PostList); ok {
|
||||
r0 = rf(options, allowFromCache)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.PostList)
|
||||
@@ -546,8 +546,8 @@ func (_m *PostStore) GetPostsSince(channelId string, time int64, allowFromCache
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string, int64, bool) *model.AppError); ok {
|
||||
r1 = rf(channelId, time, allowFromCache)
|
||||
if rf, ok := ret.Get(1).(func(model.GetPostsSinceOptions, bool) *model.AppError); ok {
|
||||
r1 = rf(options, allowFromCache)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
|
||||
@@ -127,14 +127,14 @@ func testPostStoreGet(t *testing.T, ss store.Store) {
|
||||
etag2 := ss.Post().GetEtag(o1.ChannelId, false)
|
||||
require.Equal(t, 0, strings.Index(etag2, fmt.Sprintf("%v.%v", model.CurrentVersion, o1.UpdateAt)), "Invalid Etag")
|
||||
|
||||
r1, err := ss.Post().Get(o1.Id)
|
||||
r1, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, r1.Posts[o1.Id].CreateAt, o1.CreateAt, "invalid returned post")
|
||||
|
||||
_, err = ss.Post().Get("123")
|
||||
_, err = ss.Post().Get("123", false)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
|
||||
_, err = ss.Post().Get("")
|
||||
_, err = ss.Post().Get("", false)
|
||||
require.NotNil(t, err, "should fail for blank post ids")
|
||||
}
|
||||
|
||||
@@ -179,15 +179,15 @@ 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)
|
||||
r1, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro1 := r1.Posts[o1.Id]
|
||||
|
||||
r2, err := ss.Post().Get(o1.Id)
|
||||
r2, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro2 := r2.Posts[o2.Id]
|
||||
|
||||
r3, err := ss.Post().Get(o3.Id)
|
||||
r3, err := ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro3 := r3.Posts[o3.Id]
|
||||
|
||||
@@ -199,7 +199,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Update(o1a, ro1)
|
||||
require.Nil(t, err)
|
||||
|
||||
r1, err = ss.Post().Get(o1.Id)
|
||||
r1, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
ro1a := r1.Posts[o1.Id]
|
||||
@@ -211,7 +211,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Update(o2a, ro2)
|
||||
require.Nil(t, err)
|
||||
|
||||
r2, err = ss.Post().Get(o1.Id)
|
||||
r2, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro2a := r2.Posts[o2.Id]
|
||||
|
||||
@@ -223,7 +223,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Update(o3a, ro3)
|
||||
require.Nil(t, err)
|
||||
|
||||
r3, err = ss.Post().Get(o3.Id)
|
||||
r3, err = ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro3a := r3.Posts[o3.Id]
|
||||
|
||||
@@ -239,7 +239,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
r4, err := ss.Post().Get(o4.Id)
|
||||
r4, err := ss.Post().Get(o4.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro4 := r4.Posts[o4.Id]
|
||||
|
||||
@@ -250,7 +250,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Update(o4a, ro4)
|
||||
require.Nil(t, err)
|
||||
|
||||
r4, err = ss.Post().Get(o4.Id)
|
||||
r4, err = ss.Post().Get(o4.Id, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
ro4a := r4.Posts[o4.Id]
|
||||
@@ -271,7 +271,7 @@ func testPostStoreDelete(t *testing.T, ss store.Store) {
|
||||
o1, err := ss.Post().Save(o1)
|
||||
require.Nil(t, err)
|
||||
|
||||
r1, err := ss.Post().Get(o1.Id)
|
||||
r1, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, r1.Posts[o1.Id].CreateAt, o1.CreateAt, "invalid returned post")
|
||||
|
||||
@@ -284,7 +284,7 @@ func testPostStoreDelete(t *testing.T, ss store.Store) {
|
||||
|
||||
assert.Equal(t, deleteByID, actual, "Expected (*Post).Props[model.POST_PROPS_DELETE_BY] to be %v but got %v.", deleteByID, actual)
|
||||
|
||||
r3, err := ss.Post().Get(o1.Id)
|
||||
r3, err := ss.Post().Get(o1.Id, false)
|
||||
require.NotNil(t, err, "Missing id should have failed - PostList %v", r3)
|
||||
|
||||
etag2 := ss.Post().GetEtag(o1.ChannelId, false)
|
||||
@@ -311,10 +311,10 @@ func testPostStoreDelete1Level(t *testing.T, ss store.Store) {
|
||||
err = ss.Post().Delete(o1.Id, model.GetMillis(), "")
|
||||
require.Nil(t, err)
|
||||
|
||||
_, err = ss.Post().Get(o1.Id)
|
||||
_, err = ss.Post().Get(o1.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
|
||||
_, err = ss.Post().Get(o2.Id)
|
||||
_, err = ss.Post().Get(o2.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
}
|
||||
|
||||
@@ -354,16 +354,16 @@ func testPostStoreDelete2Level(t *testing.T, ss store.Store) {
|
||||
err = ss.Post().Delete(o1.Id, model.GetMillis(), "")
|
||||
require.Nil(t, err)
|
||||
|
||||
_, err = ss.Post().Get(o1.Id)
|
||||
_, err = ss.Post().Get(o1.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
|
||||
_, err = ss.Post().Get(o2.Id)
|
||||
_, err = ss.Post().Get(o2.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
|
||||
_, err = ss.Post().Get(o3.Id)
|
||||
_, err = ss.Post().Get(o3.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
|
||||
_, err = ss.Post().Get(o4.Id)
|
||||
_, err = ss.Post().Get(o4.Id, false)
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
||||
@@ -394,16 +394,16 @@ func testPostStorePermDelete1Level(t *testing.T, ss store.Store) {
|
||||
err2 := ss.Post().PermanentDeleteByUser(o2.UserId)
|
||||
require.Nil(t, err2)
|
||||
|
||||
_, err = ss.Post().Get(o1.Id)
|
||||
_, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err, "Deleted id shouldn't have failed")
|
||||
|
||||
_, err = ss.Post().Get(o2.Id)
|
||||
_, err = ss.Post().Get(o2.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
|
||||
err = ss.Post().PermanentDeleteByChannel(o3.ChannelId)
|
||||
require.Nil(t, err)
|
||||
|
||||
_, err = ss.Post().Get(o3.Id)
|
||||
_, err = ss.Post().Get(o3.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
}
|
||||
|
||||
@@ -434,13 +434,13 @@ func testPostStorePermDelete1Level2(t *testing.T, ss store.Store) {
|
||||
err2 := ss.Post().PermanentDeleteByUser(o1.UserId)
|
||||
require.Nil(t, err2)
|
||||
|
||||
_, err = ss.Post().Get(o1.Id)
|
||||
_, err = ss.Post().Get(o1.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
|
||||
_, err = ss.Post().Get(o2.Id)
|
||||
_, err = ss.Post().Get(o2.Id, false)
|
||||
require.NotNil(t, err, "Deleted id should have failed")
|
||||
|
||||
_, err = ss.Post().Get(o3.Id)
|
||||
_, err = ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err, "Deleted id should have failed")
|
||||
}
|
||||
|
||||
@@ -470,7 +470,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)
|
||||
pl, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Len(t, pl.Posts, 3, "invalid returned post")
|
||||
@@ -478,7 +478,7 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
|
||||
dErr := ss.Post().Delete(o3.Id, model.GetMillis(), "")
|
||||
require.Nil(t, dErr)
|
||||
|
||||
pl, err = ss.Post().Get(o1.Id)
|
||||
pl, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Len(t, pl.Posts, 2, "invalid returned post")
|
||||
@@ -486,7 +486,7 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
|
||||
dErr = ss.Post().Delete(o2.Id, model.GetMillis(), "")
|
||||
require.Nil(t, dErr)
|
||||
|
||||
pl, err = ss.Post().Get(o1.Id)
|
||||
pl, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Len(t, pl.Posts, 1, "invalid returned post")
|
||||
@@ -548,7 +548,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
|
||||
o5, err = ss.Post().Save(o5)
|
||||
require.Nil(t, err)
|
||||
|
||||
r1, err := ss.Post().GetPosts(o1.ChannelId, 0, 4, false)
|
||||
r1, err := ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 4}, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Equal(t, r1.Order[0], o5.Id, "invalid order")
|
||||
@@ -561,7 +561,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
|
||||
|
||||
require.Equal(t, r1.Posts[o1.Id].Message, o1.Message, "Missing parent")
|
||||
|
||||
r2, err := ss.Post().GetPosts(o1.ChannelId, 0, 4, true)
|
||||
r2, err := ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 4}, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Equal(t, r2.Order[0], o5.Id, "invalid order")
|
||||
@@ -575,7 +575,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
|
||||
require.Equal(t, r2.Posts[o1.Id].Message, o1.Message, "Missing parent")
|
||||
|
||||
// Run once to fill cache
|
||||
_, err = ss.Post().GetPosts(o1.ChannelId, 0, 30, false)
|
||||
_, err = ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 30}, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
o6 := &model.Post{}
|
||||
@@ -585,7 +585,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Save(o6)
|
||||
require.Nil(t, err)
|
||||
|
||||
r3, err := ss.Post().GetPosts(o1.ChannelId, 0, 30, false)
|
||||
r3, err := ss.Post().GetPosts(model.GetPostsOptions{ChannelId: o1.ChannelId, Page: 0, PerPage: 30}, false)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, 7, len(r3.Order))
|
||||
}
|
||||
@@ -610,7 +610,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(channelId, posts[0].Id, 10, 0)
|
||||
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: posts[0].Id, Page: 0, PerPage: 10})
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{}, postList.Order)
|
||||
@@ -618,7 +618,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(channelId, posts[5].Id, 10, 0)
|
||||
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, Page: 0, PerPage: 10})
|
||||
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)
|
||||
@@ -632,7 +632,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
|
||||
})
|
||||
|
||||
t.Run("should limit posts before", func(t *testing.T) {
|
||||
postList, err := ss.Post().GetPostsBefore(channelId, posts[5].Id, 2, 0)
|
||||
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, PerPage: 2})
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{posts[4].Id, posts[3].Id}, postList.Order)
|
||||
@@ -643,7 +643,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(channelId, posts[len(posts)-1].Id, 10, 0)
|
||||
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: posts[len(posts)-1].Id, PerPage: 10})
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{}, postList.Order)
|
||||
@@ -651,7 +651,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(channelId, posts[5].Id, 10, 0)
|
||||
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, PerPage: 10})
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{posts[9].Id, posts[8].Id, posts[7].Id, posts[6].Id}, postList.Order)
|
||||
@@ -664,7 +664,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
|
||||
})
|
||||
|
||||
t.Run("should limit posts after", func(t *testing.T) {
|
||||
postList, err := ss.Post().GetPostsAfter(channelId, posts[5].Id, 2, 0)
|
||||
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: posts[5].Id, PerPage: 2})
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{posts[7].Id, posts[6].Id}, postList.Order)
|
||||
@@ -674,7 +674,6 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
|
||||
}, postList.Posts)
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("with threads", func(t *testing.T) {
|
||||
channelId := model.NewId()
|
||||
userId := model.NewId()
|
||||
@@ -745,7 +744,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(channelId, post4.Id, 2, 0)
|
||||
postList, err := ss.Post().GetPostsBefore(model.GetPostsOptions{ChannelId: channelId, PostId: post4.Id, PerPage: 2})
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{post3.Id, post2.Id}, postList.Order)
|
||||
@@ -759,7 +758,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(channelId, post4.Id, 2, 0)
|
||||
postList, err := ss.Post().GetPostsAfter(model.GetPostsOptions{ChannelId: channelId, PostId: post4.Id, PerPage: 2})
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{post6.Id, post5.Id}, postList.Order)
|
||||
@@ -771,6 +770,112 @@ 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) {
|
||||
@@ -828,7 +933,7 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
time.Sleep(time.Millisecond)
|
||||
|
||||
postList, err := ss.Post().GetPostsSince(channelId, post3.CreateAt, false)
|
||||
postList, err := ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: post3.CreateAt}, false)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{
|
||||
@@ -859,7 +964,7 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
time.Sleep(time.Millisecond)
|
||||
|
||||
postList, err := ss.Post().GetPostsSince(channelId, post1.CreateAt, false)
|
||||
postList, err := ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: post1.CreateAt}, false)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{}, postList.Order)
|
||||
@@ -881,12 +986,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(channelId, post1.CreateAt, true)
|
||||
postList, err := ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: 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(channelId, post1.CreateAt-1, true)
|
||||
postList, err = ss.Post().GetPostsSince(model.GetPostsSinceOptions{ChannelId: channelId, Time: post1.CreateAt - 1}, true)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, []string{post1.Id}, postList.Order)
|
||||
@@ -1924,15 +2029,15 @@ 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)
|
||||
r1, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro1 := r1.Posts[o1.Id]
|
||||
|
||||
r2, err := ss.Post().Get(o1.Id)
|
||||
r2, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro2 := r2.Posts[o2.Id]
|
||||
|
||||
r3, err := ss.Post().Get(o3.Id)
|
||||
r3, err := ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro3 := r3.Posts[o3.Id]
|
||||
|
||||
@@ -1944,7 +2049,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Overwrite(o1a)
|
||||
require.Nil(t, err)
|
||||
|
||||
r1, err = ss.Post().Get(o1.Id)
|
||||
r1, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro1a := r1.Posts[o1.Id]
|
||||
|
||||
@@ -1956,7 +2061,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Overwrite(o2a)
|
||||
require.Nil(t, err)
|
||||
|
||||
r2, err = ss.Post().Get(o1.Id)
|
||||
r2, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro2a := r2.Posts[o2.Id]
|
||||
|
||||
@@ -1968,7 +2073,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Overwrite(o3a)
|
||||
require.Nil(t, err)
|
||||
|
||||
r3, err = ss.Post().Get(o3.Id)
|
||||
r3, err = ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro3a := r3.Posts[o3.Id]
|
||||
|
||||
@@ -1982,7 +2087,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
r4, err := ss.Post().Get(o4.Id)
|
||||
r4, err := ss.Post().Get(o4.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro4 := r4.Posts[o4.Id]
|
||||
|
||||
@@ -1993,7 +2098,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().Overwrite(o4a)
|
||||
require.Nil(t, err)
|
||||
|
||||
r4, err = ss.Post().Get(o4.Id)
|
||||
r4, err = ss.Post().Get(o4.Id, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
ro4a := r4.Posts[o4.Id]
|
||||
@@ -2023,15 +2128,15 @@ 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)
|
||||
r1, err := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro1 := r1.Posts[o1.Id]
|
||||
|
||||
r2, err := ss.Post().Get(o2.Id)
|
||||
r2, err := ss.Post().Get(o2.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro2 := r2.Posts[o2.Id]
|
||||
|
||||
r3, err := ss.Post().Get(o3.Id)
|
||||
r3, err := ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err)
|
||||
ro3 := r3.Posts[o3.Id]
|
||||
|
||||
@@ -2138,13 +2243,13 @@ func testPostStorePermanentDeleteBatch(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Post().PermanentDeleteBatch(2000, 1000)
|
||||
require.Nil(t, err)
|
||||
|
||||
_, err = ss.Post().Get(o1.Id)
|
||||
_, err = ss.Post().Get(o1.Id, false)
|
||||
require.NotNil(t, err, "Should have not found post 1 after purge")
|
||||
|
||||
_, err = ss.Post().Get(o2.Id)
|
||||
_, err = ss.Post().Get(o2.Id, false)
|
||||
require.NotNil(t, err, "Should have not found post 2 after purge")
|
||||
|
||||
_, err = ss.Post().Get(o3.Id)
|
||||
_, err = ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err, "Should have not found post 3 after purge")
|
||||
}
|
||||
|
||||
|
||||
@@ -43,15 +43,13 @@ 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)
|
||||
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 {
|
||||
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 {
|
||||
secondUpdateAt = postList.Posts[post.Id].UpdateAt
|
||||
}
|
||||
|
||||
@@ -67,10 +65,8 @@ func testReactionSave(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Reaction().Save(reaction2)
|
||||
require.Nil(t, err)
|
||||
|
||||
postList, err = ss.Post().Get(reaction2.PostId)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
postList, err = ss.Post().Get(reaction2.PostId, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.NotEqual(t, postList.Posts[post.Id].UpdateAt, secondUpdateAt, "should've marked post as updated even if HasReactions doesn't change")
|
||||
|
||||
@@ -117,10 +113,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)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
result, err := ss.Post().Get(reaction.PostId, false)
|
||||
require.Nil(t, err)
|
||||
|
||||
firstUpdateAt := result.Posts[post.Id].UpdateAt
|
||||
|
||||
_, err = ss.Reaction().Delete(reaction)
|
||||
@@ -131,20 +127,11 @@ func testReactionDelete(t *testing.T, ss store.Store) {
|
||||
|
||||
assert.Empty(t, reactions, "should've deleted reaction")
|
||||
|
||||
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")
|
||||
}
|
||||
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")
|
||||
}
|
||||
|
||||
func testReactionGetForPost(t *testing.T, ss store.Store) {
|
||||
@@ -301,26 +288,17 @@ 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)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !postList.Posts[post.Id].HasReactions {
|
||||
t.Fatal("post should still have reactions")
|
||||
}
|
||||
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(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(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(post3.Id)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
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")
|
||||
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user