[MM-15841] Store: Migrate "Post.Save" to Sync by default (#11045)

* MM-15841: migrate post save to sync by default #10987

* MM-15841: remove variable shadowing #10987

* MM-15841: log error on post save #10987

* MM-15841: nil check post save errors #10987

* MM-15841: update error message on post save #10987

* MM-15841: add nil check on post save in user store test #10987
Этот коммит содержится в:
Jesper Hansen
2019-06-14 12:02:33 +02:00
коммит произвёл Jesús Espino
родитель e0d084ab7a
Коммит 570e6f1a74
13 изменённых файлов: 361 добавлений и 214 удалений

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

@@ -395,12 +395,16 @@ func (me *TestHelper) CreateMessagePostWithClient(client *model.Client4, channel
} }
func (me *TestHelper) CreateMessagePostNoClient(channel *model.Channel, message string, createAtTime int64) *model.Post { func (me *TestHelper) CreateMessagePostNoClient(channel *model.Channel, message string, createAtTime int64) *model.Post {
post := store.Must(me.App.Srv.Store.Post().Save(&model.Post{ post, err := me.App.Srv.Store.Post().Save(&model.Post{
UserId: me.BasicUser.Id, UserId: me.BasicUser.Id,
ChannelId: channel.Id, ChannelId: channel.Id,
Message: message, Message: message,
CreateAt: createAtTime, CreateAt: createAtTime,
})).(*model.Post) })
if err != nil {
panic(err)
}
return post return post
} }

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

@@ -892,8 +892,8 @@ func (a *App) ImportReply(data *ReplyImportData, post *model.Post, teamId string
} }
if reply.Id == "" { if reply.Id == "" {
if result := <-a.Srv.Store.Post().Save(reply); result.Err != nil { if _, err := a.Srv.Store.Post().Save(reply); err != nil {
return result.Err return err
} }
} else { } else {
if _, err := a.Srv.Store.Post().Overwrite(reply); err != nil { if _, err := a.Srv.Store.Post().Overwrite(reply); err != nil {
@@ -992,8 +992,8 @@ func (a *App) ImportPost(data *PostImportData, dryRun bool) *model.AppError {
} }
if post.Id == "" { if post.Id == "" {
if result := <-a.Srv.Store.Post().Save(post); result.Err != nil { if _, err := a.Srv.Store.Post().Save(post); err != nil {
return result.Err return err
} }
} else { } else {
if _, err := a.Srv.Store.Post().Overwrite(post); err != nil { if _, err := a.Srv.Store.Post().Overwrite(post); err != nil {
@@ -1215,8 +1215,8 @@ func (a *App) ImportDirectPost(data *DirectPostImportData, dryRun bool) *model.A
} }
if post.Id == "" { if post.Id == "" {
if result := <-a.Srv.Store.Post().Save(post); result.Err != nil { if _, err := a.Srv.Store.Post().Save(post); err != nil {
return result.Err return err
} }
} else { } else {
if _, err := a.Srv.Store.Post().Overwrite(post); err != nil { if _, err := a.Srv.Store.Post().Overwrite(post); err != nil {

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

@@ -213,7 +213,7 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
post.Hashtags, _ = model.ParseHashtags(post.Message) post.Hashtags, _ = model.ParseHashtags(post.Message)
if err := a.FillInPostProps(post, channel); err != nil { if err = a.FillInPostProps(post, channel); err != nil {
return nil, err return nil, err
} }
@@ -255,11 +255,10 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
} }
} }
result := <-a.Srv.Store.Post().Save(post) rpost, err := a.Srv.Store.Post().Save(post)
if result.Err != nil { if err != nil {
return nil, result.Err return nil, err
} }
rpost := result.Data.(*model.Post)
// Update the mapping from pending post id to the actual post id, for any clients that // Update the mapping from pending post id to the actual post id, for any clients that
// might be duplicating requests. // might be duplicating requests.
@@ -278,7 +277,7 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
esInterface := a.Elasticsearch esInterface := a.Elasticsearch
if esInterface != nil && *a.Config().ElasticsearchSettings.EnableIndexing { if esInterface != nil && *a.Config().ElasticsearchSettings.EnableIndexing {
a.Srv.Go(func() { a.Srv.Go(func() {
if err := esInterface.IndexPost(rpost, channel.TeamId); err != nil { if err = esInterface.IndexPost(rpost, channel.TeamId); err != nil {
mlog.Error("Encountered error indexing post", mlog.String("post_id", post.Id), mlog.Err(err)) mlog.Error("Encountered error indexing post", mlog.String("post_id", post.Id), mlog.Err(err))
} }
}) })
@@ -289,8 +288,8 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
} }
if len(post.FileIds) > 0 { if len(post.FileIds) > 0 {
if err := a.attachFilesToPost(post); err != nil { if err = a.attachFilesToPost(post); err != nil {
mlog.Error("Encountered error attaching files to post", mlog.String("post_id", post.Id), mlog.Any("file_ids", post.FileIds), mlog.Err(result.Err)) mlog.Error("Encountered error attaching files to post", mlog.String("post_id", post.Id), mlog.Any("file_ids", post.FileIds), mlog.Err(err))
} }
if a.Metrics != nil { if a.Metrics != nil {

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

@@ -758,7 +758,8 @@ func (a *App) OldImportPost(post *model.Post) string {
post.RootId = firstPostId post.RootId = firstPostId
post.ParentId = firstPostId post.ParentId = firstPostId
if result := <-a.Srv.Store.Post().Save(post); result.Err != nil { _, err := a.Srv.Store.Post().Save(post)
if err != nil {
mlog.Debug(fmt.Sprintf("Error saving post. user=%v, message=%v", post.UserId, post.Message)) mlog.Debug(fmt.Sprintf("Error saving post. user=%v, message=%v", post.UserId, post.Message))
} }

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

@@ -90,43 +90,46 @@ func (s *SqlPostStore) CreateIndexesIfNotExists() {
s.CreateFullTextIndexIfNotExists("idx_posts_hashtags_txt", "Posts", "Hashtags") s.CreateFullTextIndexIfNotExists("idx_posts_hashtags_txt", "Posts", "Hashtags")
} }
func (s *SqlPostStore) Save(post *model.Post) store.StoreChannel { func (s *SqlPostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
return store.Do(func(result *store.StoreResult) { if len(post.Id) > 0 {
if len(post.Id) > 0 { return nil, model.NewAppError("SqlPostStore.Save", "store.sql_post.save.existing.app_error", nil, "id="+post.Id, http.StatusBadRequest)
result.Err = model.NewAppError("SqlPostStore.Save", "store.sql_post.save.existing.app_error", nil, "id="+post.Id, http.StatusBadRequest) }
return
maxPostSize := s.GetMaxPostSize()
post.PreSave()
if err := post.IsValid(maxPostSize); err != nil {
return nil, err
}
if err := s.GetMaster().Insert(post); err != nil {
return nil, model.NewAppError("SqlPostStore.Save", "store.sql_post.save.app_error", nil, "id="+post.Id+", "+err.Error(), http.StatusInternalServerError)
}
time := post.UpdateAt
if post.Type != model.POST_JOIN_LEAVE && post.Type != model.POST_ADD_REMOVE &&
post.Type != model.POST_JOIN_CHANNEL && post.Type != model.POST_LEAVE_CHANNEL &&
post.Type != model.POST_JOIN_TEAM && post.Type != model.POST_LEAVE_TEAM &&
post.Type != model.POST_ADD_TO_CHANNEL && post.Type != model.POST_REMOVE_FROM_CHANNEL &&
post.Type != model.POST_ADD_TO_TEAM && post.Type != model.POST_REMOVE_FROM_TEAM {
if _, err := s.GetMaster().Exec("UPDATE Channels SET LastPostAt = GREATEST(:LastPostAt, LastPostAt), TotalMsgCount = TotalMsgCount + 1 WHERE Id = :ChannelId", map[string]interface{}{"LastPostAt": time, "ChannelId": post.ChannelId}); err != nil {
mlog.Error(fmt.Sprintf("Error updating Channel LastPostAt: %v", err.Error()))
} }
} else {
maxPostSize := s.GetMaxPostSize() // don't update TotalMsgCount for unimportant messages so that the channel isn't marked as unread
if _, err := s.GetMaster().Exec("UPDATE Channels SET LastPostAt = :LastPostAt WHERE Id = :ChannelId AND LastPostAt < :LastPostAt", map[string]interface{}{"LastPostAt": time, "ChannelId": post.ChannelId}); err != nil {
post.PreSave() mlog.Error(fmt.Sprintf("Error updating Channel LastPostAt: %v", err.Error()))
if result.Err = post.IsValid(maxPostSize); result.Err != nil {
return
} }
}
if err := s.GetMaster().Insert(post); err != nil { if len(post.RootId) > 0 {
result.Err = model.NewAppError("SqlPostStore.Save", "store.sql_post.save.app_error", nil, "id="+post.Id+", "+err.Error(), http.StatusInternalServerError) if _, err := s.GetMaster().Exec("UPDATE Posts SET UpdateAt = :UpdateAt WHERE Id = :RootId", map[string]interface{}{"UpdateAt": time, "RootId": post.RootId}); err != nil {
} else { mlog.Error(fmt.Sprintf("Error updating Post UpdateAt: %v", err.Error()))
time := post.UpdateAt
if post.Type != model.POST_JOIN_LEAVE && post.Type != model.POST_ADD_REMOVE &&
post.Type != model.POST_JOIN_CHANNEL && post.Type != model.POST_LEAVE_CHANNEL &&
post.Type != model.POST_JOIN_TEAM && post.Type != model.POST_LEAVE_TEAM &&
post.Type != model.POST_ADD_TO_CHANNEL && post.Type != model.POST_REMOVE_FROM_CHANNEL &&
post.Type != model.POST_ADD_TO_TEAM && post.Type != model.POST_REMOVE_FROM_TEAM {
s.GetMaster().Exec("UPDATE Channels SET LastPostAt = GREATEST(:LastPostAt, LastPostAt), TotalMsgCount = TotalMsgCount + 1 WHERE Id = :ChannelId", map[string]interface{}{"LastPostAt": time, "ChannelId": post.ChannelId})
} else {
// don't update TotalMsgCount for unimportant messages so that the channel isn't marked as unread
s.GetMaster().Exec("UPDATE Channels SET LastPostAt = :LastPostAt WHERE Id = :ChannelId AND LastPostAt < :LastPostAt", map[string]interface{}{"LastPostAt": time, "ChannelId": post.ChannelId})
}
if len(post.RootId) > 0 {
s.GetMaster().Exec("UPDATE Posts SET UpdateAt = :UpdateAt WHERE Id = :RootId", map[string]interface{}{"UpdateAt": time, "RootId": post.RootId})
}
result.Data = post
} }
}) }
return post, nil
} }
func (s *SqlPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError) { func (s *SqlPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError) {

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

@@ -210,7 +210,7 @@ type ChannelMemberHistoryStore interface {
} }
type PostStore interface { type PostStore interface {
Save(post *model.Post) StoreChannel Save(post *model.Post) (*model.Post, *model.AppError)
Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError)
Get(id string) (*model.PostList, *model.AppError) Get(id string) (*model.PostList, *model.AppError)
GetSingle(id string) (*model.Post, *model.AppError) GetSingle(id string) (*model.Post, *model.AppError)

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

@@ -524,11 +524,12 @@ func testChannelStoreGetForPost(t *testing.T, ss store.Store) {
o1, err := ss.Channel().Save(ch, -1) o1, err := ss.Channel().Save(ch, -1)
require.Nil(t, err) require.Nil(t, err)
p1 := store.Must(ss.Post().Save(&model.Post{ p1, err := ss.Post().Save(&model.Post{
UserId: model.NewId(), UserId: model.NewId(),
ChannelId: o1.Id, ChannelId: o1.Id,
Message: "test", Message: "test",
})).(*model.Post) })
require.Nil(t, err)
if r1 := <-ss.Channel().GetForPost(p1.Id); r1.Err != nil { if r1 := <-ss.Channel().GetForPost(p1.Id); r1.Err != nil {
t.Fatal(r1.Err) t.Fatal(r1.Err)
@@ -1871,11 +1872,12 @@ func testChannelStoreGetMemberForPost(t *testing.T, ss store.Store) {
NotifyProps: model.GetDefaultChannelNotifyProps(), NotifyProps: model.GetDefaultChannelNotifyProps(),
})).(*model.ChannelMember) })).(*model.ChannelMember)
p1 := store.Must(ss.Post().Save(&model.Post{ p1, err := ss.Post().Save(&model.Post{
UserId: model.NewId(), UserId: model.NewId(),
ChannelId: o1.Id, ChannelId: o1.Id,
Message: "test", Message: "test",
})).(*model.Post) })
require.Nil(t, err)
if r1 := <-ss.Channel().GetMemberForPost(p1.Id, m1.UserId); r1.Err != nil { if r1 := <-ss.Channel().GetMemberForPost(p1.Id, m1.UserId); r1.Err != nil {
t.Fatal(r1.Err) t.Fatal(r1.Err)
@@ -2836,12 +2838,12 @@ func testChannelStoreGetPinnedPosts(t *testing.T, ss store.Store) {
o1, err := ss.Channel().Save(ch1, -1) o1, err := ss.Channel().Save(ch1, -1)
require.Nil(t, err) require.Nil(t, err)
p1 := store.Must(ss.Post().Save(&model.Post{ p1, err := ss.Post().Save(&model.Post{
UserId: model.NewId(), UserId: model.NewId(),
ChannelId: o1.Id, ChannelId: o1.Id,
Message: "test", Message: "test",
IsPinned: true, IsPinned: true,
})).(*model.Post) })
if r1 := <-ss.Channel().GetPinnedPosts(o1.Id); r1.Err != nil { if r1 := <-ss.Channel().GetPinnedPosts(o1.Id); r1.Err != nil {
t.Fatal(r1.Err) t.Fatal(r1.Err)
@@ -2859,11 +2861,12 @@ func testChannelStoreGetPinnedPosts(t *testing.T, ss store.Store) {
o2, err := ss.Channel().Save(ch2, -1) o2, err := ss.Channel().Save(ch2, -1)
require.Nil(t, err) require.Nil(t, err)
store.Must(ss.Post().Save(&model.Post{ _, err = ss.Post().Save(&model.Post{
UserId: model.NewId(), UserId: model.NewId(),
ChannelId: o2.Id, ChannelId: o2.Id,
Message: "test", Message: "test",
})) })
require.Nil(t, err)
if r2 := <-ss.Channel().GetPinnedPosts(o2.Id); r2.Err != nil { if r2 := <-ss.Channel().GetPinnedPosts(o2.Id); r2.Err != nil {
t.Fatal(r2.Err) t.Fatal(r2.Err)

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

@@ -98,28 +98,32 @@ func testComplianceExport(t *testing.T, ss store.Store) {
o1.UserId = u1.Id o1.UserId = u1.Id
o1.CreateAt = model.GetMillis() o1.CreateAt = model.GetMillis()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = store.Must(ss.Post().Save(o1)).(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
o1a := &model.Post{} o1a := &model.Post{}
o1a.ChannelId = c1.Id o1a.ChannelId = c1.Id
o1a.UserId = u1.Id o1a.UserId = u1.Id
o1a.CreateAt = o1.CreateAt + 10 o1a.CreateAt = o1.CreateAt + 10
o1a.Message = "zz" + model.NewId() + "b" o1a.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o1a)).(*model.Post) _, err = ss.Post().Save(o1a)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = c1.Id o2.ChannelId = c1.Id
o2.UserId = u1.Id o2.UserId = u1.Id
o2.CreateAt = o1.CreateAt + 20 o2.CreateAt = o1.CreateAt + 20
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o2)).(*model.Post) _, err = ss.Post().Save(o2)
require.Nil(t, err)
o2a := &model.Post{} o2a := &model.Post{}
o2a.ChannelId = c1.Id o2a.ChannelId = c1.Id
o2a.UserId = u2.Id o2a.UserId = u2.Id
o2a.CreateAt = o1.CreateAt + 30 o2a.CreateAt = o1.CreateAt + 30
o2a.Message = "zz" + model.NewId() + "b" o2a.Message = "zz" + model.NewId() + "b"
o2a = store.Must(ss.Post().Save(o2a)).(*model.Post) o2a, err = ss.Post().Save(o2a)
require.Nil(t, err)
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
@@ -201,35 +205,40 @@ func testComplianceExportDirectMessages(t *testing.T, ss store.Store) {
o1.UserId = u1.Id o1.UserId = u1.Id
o1.CreateAt = model.GetMillis() o1.CreateAt = model.GetMillis()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = store.Must(ss.Post().Save(o1)).(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
o1a := &model.Post{} o1a := &model.Post{}
o1a.ChannelId = c1.Id o1a.ChannelId = c1.Id
o1a.UserId = u1.Id o1a.UserId = u1.Id
o1a.CreateAt = o1.CreateAt + 10 o1a.CreateAt = o1.CreateAt + 10
o1a.Message = "zz" + model.NewId() + "b" o1a.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o1a)).(*model.Post) _, err = ss.Post().Save(o1a)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = c1.Id o2.ChannelId = c1.Id
o2.UserId = u1.Id o2.UserId = u1.Id
o2.CreateAt = o1.CreateAt + 20 o2.CreateAt = o1.CreateAt + 20
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o2)).(*model.Post) _, err = ss.Post().Save(o2)
require.Nil(t, err)
o2a := &model.Post{} o2a := &model.Post{}
o2a.ChannelId = c1.Id o2a.ChannelId = c1.Id
o2a.UserId = u2.Id o2a.UserId = u2.Id
o2a.CreateAt = o1.CreateAt + 30 o2a.CreateAt = o1.CreateAt + 30
o2a.Message = "zz" + model.NewId() + "b" o2a.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o2a)).(*model.Post) _, err = ss.Post().Save(o2a)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = cDM.Id o3.ChannelId = cDM.Id
o3.UserId = u1.Id o3.UserId = u1.Id
o3.CreateAt = o1.CreateAt + 40 o3.CreateAt = o1.CreateAt + 40
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3 = store.Must(ss.Post().Save(o3)).(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
@@ -296,7 +305,8 @@ func testMessageExportPublicChannel(t *testing.T, ss store.Store) {
CreateAt: startTime, CreateAt: startTime,
Message: "zz" + model.NewId() + "a", Message: "zz" + model.NewId() + "a",
} }
post1 = store.Must(ss.Post().Save(post1)).(*model.Post) post1, err = ss.Post().Save(post1)
require.Nil(t, err)
post2 := &model.Post{ post2 := &model.Post{
ChannelId: channel.Id, ChannelId: channel.Id,
@@ -304,7 +314,8 @@ func testMessageExportPublicChannel(t *testing.T, ss store.Store) {
CreateAt: startTime + 10, CreateAt: startTime + 10,
Message: "zz" + model.NewId() + "b", Message: "zz" + model.NewId() + "b",
} }
post2 = store.Must(ss.Post().Save(post2)).(*model.Post) post2, err = ss.Post().Save(post2)
require.Nil(t, err)
// fetch the message exports for both posts that user1 sent // fetch the message exports for both posts that user1 sent
messageExportMap := map[string]model.MessageExport{} messageExportMap := map[string]model.MessageExport{}
@@ -392,7 +403,8 @@ func testMessageExportPrivateChannel(t *testing.T, ss store.Store) {
CreateAt: startTime, CreateAt: startTime,
Message: "zz" + model.NewId() + "a", Message: "zz" + model.NewId() + "a",
} }
post1 = store.Must(ss.Post().Save(post1)).(*model.Post) post1, err = ss.Post().Save(post1)
require.Nil(t, err)
post2 := &model.Post{ post2 := &model.Post{
ChannelId: channel.Id, ChannelId: channel.Id,
@@ -400,7 +412,8 @@ func testMessageExportPrivateChannel(t *testing.T, ss store.Store) {
CreateAt: startTime + 10, CreateAt: startTime + 10,
Message: "zz" + model.NewId() + "b", Message: "zz" + model.NewId() + "b",
} }
post2 = store.Must(ss.Post().Save(post2)).(*model.Post) post2, err = ss.Post().Save(post2)
require.Nil(t, err)
// fetch the message exports for both posts that user1 sent // fetch the message exports for both posts that user1 sent
messageExportMap := map[string]model.MessageExport{} messageExportMap := map[string]model.MessageExport{}
@@ -484,7 +497,8 @@ func testMessageExportDirectMessageChannel(t *testing.T, ss store.Store) {
CreateAt: startTime + 20, CreateAt: startTime + 20,
Message: "zz" + model.NewId() + "c", Message: "zz" + model.NewId() + "c",
} }
post = store.Must(ss.Post().Save(post)).(*model.Post) post, err = ss.Post().Save(post)
require.Nil(t, err)
// fetch the message export for the post that user1 sent // fetch the message export for the post that user1 sent
messageExportMap := map[string]model.MessageExport{} messageExportMap := map[string]model.MessageExport{}
@@ -573,7 +587,8 @@ func testMessageExportGroupMessageChannel(t *testing.T, ss store.Store) {
CreateAt: startTime + 20, CreateAt: startTime + 20,
Message: "zz" + model.NewId() + "c", Message: "zz" + model.NewId() + "c",
} }
post = store.Must(ss.Post().Save(post)).(*model.Post) post, err = ss.Post().Save(post)
require.Nil(t, err)
// fetch the message export for the post that user1 sent // fetch the message export for the post that user1 sent
messageExportMap := map[string]model.MessageExport{} messageExportMap := map[string]model.MessageExport{}

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

@@ -605,19 +605,28 @@ func (_m *PostStore) PermanentDeleteByUser(userId string) *model.AppError {
} }
// Save provides a mock function with given fields: post // Save provides a mock function with given fields: post
func (_m *PostStore) Save(post *model.Post) store.StoreChannel { func (_m *PostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
ret := _m.Called(post) ret := _m.Called(post)
var r0 store.StoreChannel var r0 *model.Post
if rf, ok := ret.Get(0).(func(*model.Post) store.StoreChannel); ok { if rf, ok := ret.Get(0).(func(*model.Post) *model.Post); ok {
r0 = rf(post) r0 = rf(post)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel) r0 = ret.Get(0).(*model.Post)
} }
} }
return r0 var r1 *model.AppError
if rf, ok := ret.Get(1).(func(*model.Post) *model.AppError); ok {
r1 = rf(post)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
} }
// Search provides a mock function with given fields: teamId, userId, params // Search provides a mock function with given fields: teamId, userId, params

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

@@ -59,11 +59,11 @@ func testPostStoreSave(t *testing.T, ss store.Store) {
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
if err := (<-ss.Post().Save(&o1)).Err; err != nil { if _, err := ss.Post().Save(&o1); err != nil {
t.Fatal("couldn't save item", err) t.Fatal("couldn't save item", err)
} }
if err := (<-ss.Post().Save(&o1)).Err; err == nil { if _, err := ss.Post().Save(&o1); err == nil {
t.Fatal("shouldn't be able to update from save") t.Fatal("shouldn't be able to update from save")
} }
} }
@@ -78,7 +78,8 @@ func testPostStoreSaveChannelMsgCounts(t *testing.T, ss store.Store) {
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
require.Nil(t, (<-ss.Post().Save(&o1)).Err) _, err = ss.Post().Save(&o1)
require.Nil(t, err)
c1, err = ss.Channel().Get(c1.Id, false) c1, err = ss.Channel().Get(c1.Id, false)
require.Nil(t, err) require.Nil(t, err)
@@ -86,11 +87,13 @@ func testPostStoreSaveChannelMsgCounts(t *testing.T, ss store.Store) {
o1.Id = "" o1.Id = ""
o1.Type = model.POST_ADD_TO_TEAM o1.Type = model.POST_ADD_TO_TEAM
require.Nil(t, (<-ss.Post().Save(&o1)).Err) _, err = ss.Post().Save(&o1)
require.Nil(t, err)
o1.Id = "" o1.Id = ""
o1.Type = model.POST_REMOVE_FROM_TEAM o1.Type = model.POST_REMOVE_FROM_TEAM
require.Nil(t, (<-ss.Post().Save(&o1)).Err) _, err = ss.Post().Save(&o1)
require.Nil(t, err)
c1, err = ss.Channel().Get(c1.Id, false) c1, err = ss.Channel().Get(c1.Id, false)
require.Nil(t, err) require.Nil(t, err)
@@ -103,7 +106,8 @@ func testPostStoreSaveChannelMsgCounts(t *testing.T, ss store.Store) {
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.CreateAt = int64(7) o2.CreateAt = int64(7)
require.Nil(t, (<-ss.Post().Save(&o2)).Err) _, err = ss.Post().Save(&o2)
require.Nil(t, err)
c1, err = ss.Channel().Get(c1.Id, false) c1, err = ss.Channel().Get(c1.Id, false)
require.Nil(t, err) require.Nil(t, err)
@@ -121,7 +125,8 @@ func testPostStoreGet(t *testing.T, ss store.Store) {
t.Fatal("Invalid Etag") t.Fatal("Invalid Etag")
} }
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
etag2 := ss.Post().GetEtag(o1.ChannelId, false) etag2 := ss.Post().GetEtag(o1.ChannelId, false)
if strings.Index(etag2, fmt.Sprintf("%v.%v", model.CurrentVersion, o1.UpdateAt)) != 0 { if strings.Index(etag2, fmt.Sprintf("%v.%v", model.CurrentVersion, o1.UpdateAt)) != 0 {
@@ -151,7 +156,8 @@ func testPostStoreGetSingle(t *testing.T, ss store.Store) {
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
if post, err := ss.Post().GetSingle(o1.Id); err != nil { if post, err := ss.Post().GetSingle(o1.Id); err != nil {
t.Fatal(err) t.Fatal(err)
@@ -183,7 +189,8 @@ func testGetEtagCache(t *testing.T, ss store.Store) {
t.Fatal("Invalid Etag") t.Fatal("Invalid Etag")
} }
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
// We have not invalidated the cache so this should be the same as above // We have not invalidated the cache so this should be the same as above
etag3 := ss.Post().GetEtag(o1.ChannelId, true) etag3 := ss.Post().GetEtag(o1.ChannelId, true)
@@ -205,7 +212,8 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -213,13 +221,15 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "CCCCCCCCC" o2.Message = "zz" + model.NewId() + "CCCCCCCCC"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = o1.ChannelId o3.ChannelId = o1.ChannelId
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ" o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ"
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
r1, err := ss.Post().Get(o1.Id) r1, err := ss.Post().Get(o1.Id)
if err != nil { if err != nil {
@@ -292,12 +302,13 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) {
t.Fatal("Failed to update/get") t.Fatal("Failed to update/get")
} }
o4 := store.Must(ss.Post().Save(&model.Post{ o4, err := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
Message: model.NewId(), Message: model.NewId(),
Filenames: []string{"test"}, Filenames: []string{"test"},
})).(*model.Post) })
require.Nil(t, err)
r4, err := ss.Post().Get(o4.Id) r4, err := ss.Post().Get(o4.Id)
if err != nil { if err != nil {
@@ -337,7 +348,8 @@ func testPostStoreDelete(t *testing.T, ss store.Store) {
t.Fatal("Invalid Etag") t.Fatal("Invalid Etag")
} }
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
if r1, err := ss.Post().Get(o1.Id); err != nil { if r1, err := ss.Post().Get(o1.Id); err != nil {
t.Fatal(err) t.Fatal(err)
@@ -374,7 +386,8 @@ func testPostStoreDelete1Level(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -382,7 +395,8 @@ func testPostStoreDelete1Level(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
if err := ss.Post().Delete(o1.Id, model.GetMillis(), ""); err != nil { if err := ss.Post().Delete(o1.Id, model.GetMillis(), ""); err != nil {
t.Fatal(err) t.Fatal(err)
@@ -402,7 +416,8 @@ func testPostStoreDelete2Level(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -410,7 +425,8 @@ func testPostStoreDelete2Level(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = o1.ChannelId o3.ChannelId = o1.ChannelId
@@ -418,13 +434,15 @@ func testPostStoreDelete2Level(t *testing.T, ss store.Store) {
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.ParentId = o2.Id o3.ParentId = o2.Id
o3.RootId = o1.Id o3.RootId = o1.Id
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
o4 := &model.Post{} o4 := &model.Post{}
o4.ChannelId = model.NewId() o4.ChannelId = model.NewId()
o4.UserId = model.NewId() o4.UserId = model.NewId()
o4.Message = "zz" + model.NewId() + "b" o4.Message = "zz" + model.NewId() + "b"
o4 = (<-ss.Post().Save(o4)).Data.(*model.Post) o4, err = ss.Post().Save(o4)
require.Nil(t, err)
if err := ss.Post().Delete(o1.Id, model.GetMillis(), ""); err != nil { if err := ss.Post().Delete(o1.Id, model.GetMillis(), ""); err != nil {
t.Fatal(err) t.Fatal(err)
@@ -452,7 +470,8 @@ func testPostStorePermDelete1Level(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -460,13 +479,15 @@ func testPostStorePermDelete1Level(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = model.NewId() o3.ChannelId = model.NewId()
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
if err2 := ss.Post().PermanentDeleteByUser(o2.UserId); err2 != nil { if err2 := ss.Post().PermanentDeleteByUser(o2.UserId); err2 != nil {
t.Fatal(err2) t.Fatal(err2)
@@ -494,7 +515,8 @@ func testPostStorePermDelete1Level2(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -502,13 +524,15 @@ func testPostStorePermDelete1Level2(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = model.NewId() o3.ChannelId = model.NewId()
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
if err2 := ss.Post().PermanentDeleteByUser(o1.UserId); err2 != nil { if err2 := ss.Post().PermanentDeleteByUser(o1.UserId); err2 != nil {
t.Fatal(err2) t.Fatal(err2)
@@ -532,7 +556,8 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -540,7 +565,8 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = o1.ChannelId o3.ChannelId = o1.ChannelId
@@ -548,7 +574,8 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) {
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.ParentId = o2.Id o3.ParentId = o2.Id
o3.RootId = o1.Id o3.RootId = o1.Id
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
pl, err := ss.Post().Get(o1.Id) pl, err := ss.Post().Get(o1.Id)
if err != nil { if err != nil {
@@ -591,7 +618,8 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o2 := &model.Post{} o2 := &model.Post{}
@@ -600,7 +628,8 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
_ = (<-ss.Post().Save(o2)).Data.(*model.Post) _, err = ss.Post().Save(o2)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o2a := &model.Post{} o2a := &model.Post{}
@@ -609,7 +638,8 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
o2a.Message = "zz" + model.NewId() + "b" o2a.Message = "zz" + model.NewId() + "b"
o2a.ParentId = o1.Id o2a.ParentId = o1.Id
o2a.RootId = o1.Id o2a.RootId = o1.Id
o2a = (<-ss.Post().Save(o2a)).Data.(*model.Post) o2a, err = ss.Post().Save(o2a)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o3 := &model.Post{} o3 := &model.Post{}
@@ -618,14 +648,16 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.ParentId = o1.Id o3.ParentId = o1.Id
o3.RootId = o1.Id o3.RootId = o1.Id
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o4 := &model.Post{} o4 := &model.Post{}
o4.ChannelId = o1.ChannelId o4.ChannelId = o1.ChannelId
o4.UserId = model.NewId() o4.UserId = model.NewId()
o4.Message = "zz" + model.NewId() + "b" o4.Message = "zz" + model.NewId() + "b"
o4 = (<-ss.Post().Save(o4)).Data.(*model.Post) o4, err = ss.Post().Save(o4)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o5 := &model.Post{} o5 := &model.Post{}
@@ -634,7 +666,8 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
o5.Message = "zz" + model.NewId() + "b" o5.Message = "zz" + model.NewId() + "b"
o5.ParentId = o4.Id o5.ParentId = o4.Id
o5.RootId = o4.Id o5.RootId = o4.Id
o5 = (<-ss.Post().Save(o5)).Data.(*model.Post) 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(o1.ChannelId, 0, 4, false)
require.Nil(t, err) require.Nil(t, err)
@@ -691,13 +724,15 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) {
} }
// Run once to fill cache // Run once to fill cache
ss.Post().GetPosts(o1.ChannelId, 0, 30, true) _, err = ss.Post().GetPosts(o1.ChannelId, 0, 30, true)
require.Nil(t, err)
o6 := &model.Post{} o6 := &model.Post{}
o6.ChannelId = o1.ChannelId o6.ChannelId = o1.ChannelId
o6.UserId = model.NewId() o6.UserId = model.NewId()
o6.Message = "zz" + model.NewId() + "b" o6.Message = "zz" + model.NewId() + "b"
_ = (<-ss.Post().Save(o6)).Data.(*model.Post) _, err = ss.Post().Save(o6)
require.Nil(t, err)
// Should only be 6 since we hit the cache // Should only be 6 since we hit the cache
r3, err := ss.Post().GetPosts(o1.ChannelId, 0, 30, true) r3, err := ss.Post().GetPosts(o1.ChannelId, 0, 30, true)
@@ -719,11 +754,12 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
var posts []*model.Post var posts []*model.Post
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
post := store.Must(ss.Post().Save(&model.Post{ post, err := ss.Post().Save(&model.Post{
ChannelId: channelId, ChannelId: channelId,
UserId: userId, UserId: userId,
Message: "message", Message: "message",
})).(*model.Post) })
require.Nil(t, err)
posts = append(posts, post) posts = append(posts, post)
@@ -808,52 +844,58 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) {
// post5 // post5
// post6 (in response to post2) // post6 (in response to post2)
post1 := store.Must(ss.Post().Save(&model.Post{ post1, err := ss.Post().Save(&model.Post{
ChannelId: channelId, ChannelId: channelId,
UserId: userId, UserId: userId,
Message: "message", Message: "message",
})).(*model.Post) })
require.Nil(t, err)
time.Sleep(time.Millisecond) time.Sleep(time.Millisecond)
post2 := store.Must(ss.Post().Save(&model.Post{ post2, err := ss.Post().Save(&model.Post{
ChannelId: channelId, ChannelId: channelId,
UserId: userId, UserId: userId,
Message: "message", Message: "message",
})).(*model.Post) })
require.Nil(t, err)
time.Sleep(time.Millisecond) time.Sleep(time.Millisecond)
post3 := store.Must(ss.Post().Save(&model.Post{ post3, err := ss.Post().Save(&model.Post{
ChannelId: channelId, ChannelId: channelId,
UserId: userId, UserId: userId,
ParentId: post1.Id, ParentId: post1.Id,
RootId: post1.Id, RootId: post1.Id,
Message: "message", Message: "message",
})).(*model.Post) })
require.Nil(t, err)
time.Sleep(time.Millisecond) time.Sleep(time.Millisecond)
post4 := store.Must(ss.Post().Save(&model.Post{ post4, err := ss.Post().Save(&model.Post{
ChannelId: channelId, ChannelId: channelId,
UserId: userId, UserId: userId,
RootId: post2.Id, RootId: post2.Id,
ParentId: post2.Id, ParentId: post2.Id,
Message: "message", Message: "message",
})).(*model.Post) })
require.Nil(t, err)
time.Sleep(time.Millisecond) time.Sleep(time.Millisecond)
post5 := store.Must(ss.Post().Save(&model.Post{ post5, err := ss.Post().Save(&model.Post{
ChannelId: channelId, ChannelId: channelId,
UserId: userId, UserId: userId,
Message: "message", Message: "message",
})).(*model.Post) })
require.Nil(t, err)
time.Sleep(time.Millisecond) time.Sleep(time.Millisecond)
post6 := store.Must(ss.Post().Save(&model.Post{ post6, err := ss.Post().Save(&model.Post{
ChannelId: channelId, ChannelId: channelId,
UserId: userId, UserId: userId,
ParentId: post2.Id, ParentId: post2.Id,
RootId: post2.Id, RootId: post2.Id,
Message: "message", Message: "message",
})).(*model.Post) })
require.Nil(t, err)
// Adding a post to a thread changes the UpdateAt timestamp of the parent post // Adding a post to a thread changes the UpdateAt timestamp of the parent post
post1.UpdateAt = post3.UpdateAt post1.UpdateAt = post3.UpdateAt
@@ -893,14 +935,16 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
o0.ChannelId = model.NewId() o0.ChannelId = model.NewId()
o0.UserId = model.NewId() o0.UserId = model.NewId()
o0.Message = "zz" + model.NewId() + "b" o0.Message = "zz" + model.NewId() + "b"
_ = (<-ss.Post().Save(o0)).Data.(*model.Post) _, err := ss.Post().Save(o0)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o1 := &model.Post{} o1 := &model.Post{}
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o2 := &model.Post{} o2 := &model.Post{}
@@ -909,7 +953,8 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
_ = (<-ss.Post().Save(o2)).Data.(*model.Post) _, err = ss.Post().Save(o2)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o2a := &model.Post{} o2a := &model.Post{}
@@ -918,7 +963,8 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
o2a.Message = "zz" + model.NewId() + "b" o2a.Message = "zz" + model.NewId() + "b"
o2a.ParentId = o1.Id o2a.ParentId = o1.Id
o2a.RootId = o1.Id o2a.RootId = o1.Id
o2a = (<-ss.Post().Save(o2a)).Data.(*model.Post) o2a, err = ss.Post().Save(o2a)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o3 := &model.Post{} o3 := &model.Post{}
@@ -927,14 +973,16 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.ParentId = o1.Id o3.ParentId = o1.Id
o3.RootId = o1.Id o3.RootId = o1.Id
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o4 := &model.Post{} o4 := &model.Post{}
o4.ChannelId = o1.ChannelId o4.ChannelId = o1.ChannelId
o4.UserId = model.NewId() o4.UserId = model.NewId()
o4.Message = "zz" + model.NewId() + "b" o4.Message = "zz" + model.NewId() + "b"
o4 = (<-ss.Post().Save(o4)).Data.(*model.Post) o4, err = ss.Post().Save(o4)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o5 := &model.Post{} o5 := &model.Post{}
@@ -943,7 +991,8 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) {
o5.Message = "zz" + model.NewId() + "b" o5.Message = "zz" + model.NewId() + "b"
o5.ParentId = o4.Id o5.ParentId = o4.Id
o5.RootId = o4.Id o5.RootId = o4.Id
o5 = (<-ss.Post().Save(o5)).Data.(*model.Post) o5, err = ss.Post().Save(o5)
require.Nil(t, err)
r1 := (<-ss.Post().GetPostsSince(o1.ChannelId, o1.CreateAt, false)).Data.(*model.PostList) r1 := (<-ss.Post().GetPostsSince(o1.ChannelId, o1.CreateAt, false)).Data.(*model.PostList)
@@ -1021,57 +1070,66 @@ func testPostStoreSearch(t *testing.T, ss store.Store) {
o1.ChannelId = c1.Id o1.ChannelId = c1.Id
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "corey mattermost new york" o1.Message = "corey mattermost new york"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o1a := &model.Post{} o1a := &model.Post{}
o1a.ChannelId = c1.Id o1a.ChannelId = c1.Id
o1a.UserId = model.NewId() o1a.UserId = model.NewId()
o1a.Message = "corey mattermost new york" o1a.Message = "corey mattermost new york"
o1a.Type = model.POST_JOIN_CHANNEL o1a.Type = model.POST_JOIN_CHANNEL
_ = (<-ss.Post().Save(o1a)).Data.(*model.Post) _, err = ss.Post().Save(o1a)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = c1.Id o2.ChannelId = c1.Id
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "New Jersey is where John is from" o2.Message = "New Jersey is where John is from"
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = c2.Id o3.ChannelId = c2.Id
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "New Jersey is where John is from corey new york" o3.Message = "New Jersey is where John is from corey new york"
_ = (<-ss.Post().Save(o3)).Data.(*model.Post) _, err = ss.Post().Save(o3)
require.Nil(t, err)
o4 := &model.Post{} o4 := &model.Post{}
o4.ChannelId = c1.Id o4.ChannelId = c1.Id
o4.UserId = model.NewId() o4.UserId = model.NewId()
o4.Hashtags = "#hashtag" o4.Hashtags = "#hashtag"
o4.Message = "(message)blargh" o4.Message = "(message)blargh"
o4 = (<-ss.Post().Save(o4)).Data.(*model.Post) o4, err = ss.Post().Save(o4)
require.Nil(t, err)
o5 := &model.Post{} o5 := &model.Post{}
o5.ChannelId = c1.Id o5.ChannelId = c1.Id
o5.UserId = model.NewId() o5.UserId = model.NewId()
o5.Hashtags = "#secret #howdy" o5.Hashtags = "#secret #howdy"
o5 = (<-ss.Post().Save(o5)).Data.(*model.Post) o5, err = ss.Post().Save(o5)
require.Nil(t, err)
o6 := &model.Post{} o6 := &model.Post{}
o6.ChannelId = c3.Id o6.ChannelId = c3.Id
o6.UserId = model.NewId() o6.UserId = model.NewId()
o6.Hashtags = "#hashtag" o6.Hashtags = "#hashtag"
o6 = (<-ss.Post().Save(o6)).Data.(*model.Post) o6, err = ss.Post().Save(o6)
require.Nil(t, err)
o7 := &model.Post{} o7 := &model.Post{}
o7.ChannelId = c3.Id o7.ChannelId = c3.Id
o7.UserId = model.NewId() o7.UserId = model.NewId()
o7.Message = "New Jersey is where John is from corey new york" o7.Message = "New Jersey is where John is from corey new york"
o7 = (<-ss.Post().Save(o7)).Data.(*model.Post) o7, err = ss.Post().Save(o7)
require.Nil(t, err)
o8 := &model.Post{} o8 := &model.Post{}
o8.ChannelId = c3.Id o8.ChannelId = c3.Id
o8.UserId = model.NewId() o8.UserId = model.NewId()
o8.Message = "Deleted" o8.Message = "Deleted"
o8 = (<-ss.Post().Save(o8)).Data.(*model.Post) o8, err = ss.Post().Save(o8)
require.Nil(t, err)
tt := []struct { tt := []struct {
name string name string
@@ -1203,28 +1261,32 @@ func testUserCountsWithPostsByDay(t *testing.T, ss store.Store) {
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.CreateAt = utils.MillisFromTime(utils.Yesterday()) o1.CreateAt = utils.MillisFromTime(utils.Yesterday())
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = store.Must(ss.Post().Save(o1)).(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
o1a := &model.Post{} o1a := &model.Post{}
o1a.ChannelId = c1.Id o1a.ChannelId = c1.Id
o1a.UserId = model.NewId() o1a.UserId = model.NewId()
o1a.CreateAt = o1.CreateAt o1a.CreateAt = o1.CreateAt
o1a.Message = "zz" + model.NewId() + "b" o1a.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o1a)).(*model.Post) _, err = ss.Post().Save(o1a)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = c1.Id o2.ChannelId = c1.Id
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24) o2.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24)
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2 = store.Must(ss.Post().Save(o2)).(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o2a := &model.Post{} o2a := &model.Post{}
o2a.ChannelId = c1.Id o2a.ChannelId = c1.Id
o2a.UserId = o2.UserId o2a.UserId = o2.UserId
o2a.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24) o2a.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24)
o2a.Message = "zz" + model.NewId() + "b" o2a.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o2a)).(*model.Post) _, err = ss.Post().Save(o2a)
require.Nil(t, err)
if r1, err := ss.Post().AnalyticsUserCountsWithPostsByDay(t1.Id); err != nil { if r1, err := ss.Post().AnalyticsUserCountsWithPostsByDay(t1.Id); err != nil {
t.Fatal(err) t.Fatal(err)
@@ -1263,28 +1325,32 @@ func testPostCountsByDay(t *testing.T, ss store.Store) {
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.CreateAt = utils.MillisFromTime(utils.Yesterday()) o1.CreateAt = utils.MillisFromTime(utils.Yesterday())
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = store.Must(ss.Post().Save(o1)).(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
o1a := &model.Post{} o1a := &model.Post{}
o1a.ChannelId = c1.Id o1a.ChannelId = c1.Id
o1a.UserId = model.NewId() o1a.UserId = model.NewId()
o1a.CreateAt = o1.CreateAt o1a.CreateAt = o1.CreateAt
o1a.Message = "zz" + model.NewId() + "b" o1a.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o1a)).(*model.Post) _, err = ss.Post().Save(o1a)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = c1.Id o2.ChannelId = c1.Id
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24 * 2) o2.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24 * 2)
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2 = store.Must(ss.Post().Save(o2)).(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o2a := &model.Post{} o2a := &model.Post{}
o2a.ChannelId = c1.Id o2a.ChannelId = c1.Id
o2a.UserId = o2.UserId o2a.UserId = o2.UserId
o2a.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24 * 2) o2a.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24 * 2)
o2a.Message = "zz" + model.NewId() + "b" o2a.Message = "zz" + model.NewId() + "b"
_ = store.Must(ss.Post().Save(o2a)).(*model.Post) _, err = ss.Post().Save(o2a)
require.Nil(t, err)
time.Sleep(1 * time.Second) time.Sleep(1 * time.Second)
@@ -1324,14 +1390,16 @@ func testPostStoreGetFlaggedPostsForTeam(t *testing.T, ss store.Store, s SqlSupp
o1.ChannelId = c1.Id o1.ChannelId = c1.Id
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o3 := &model.Post{} o3 := &model.Post{}
@@ -1339,14 +1407,16 @@ func testPostStoreGetFlaggedPostsForTeam(t *testing.T, ss store.Store, s SqlSupp
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.DeleteAt = 1 o3.DeleteAt = 1
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o4 := &model.Post{} o4 := &model.Post{}
o4.ChannelId = model.NewId() o4.ChannelId = model.NewId()
o4.UserId = model.NewId() o4.UserId = model.NewId()
o4.Message = "zz" + model.NewId() + "b" o4.Message = "zz" + model.NewId() + "b"
o4 = (<-ss.Post().Save(o4)).Data.(*model.Post) o4, err = ss.Post().Save(o4)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
c2 := &model.Channel{} c2 := &model.Channel{}
@@ -1371,7 +1441,8 @@ func testPostStoreGetFlaggedPostsForTeam(t *testing.T, ss store.Store, s SqlSupp
o5.ChannelId = c2.Id o5.ChannelId = c2.Id
o5.UserId = m2.UserId o5.UserId = m2.UserId
o5.Message = "zz" + model.NewId() + "b" o5.Message = "zz" + model.NewId() + "b"
o5 = (<-ss.Post().Save(o5)).Data.(*model.Post) o5, err = ss.Post().Save(o5)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
r1, err := ss.Post().GetFlaggedPosts(o1.ChannelId, 0, 2) r1, err := ss.Post().GetFlaggedPosts(o1.ChannelId, 0, 2)
@@ -1511,14 +1582,16 @@ func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o3 := &model.Post{} o3 := &model.Post{}
@@ -1526,7 +1599,8 @@ func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) {
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.DeleteAt = 1 o3.DeleteAt = 1
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
r1, err := ss.Post().GetFlaggedPosts(o1.UserId, 0, 2) r1, err := ss.Post().GetFlaggedPosts(o1.UserId, 0, 2)
@@ -1620,14 +1694,15 @@ func testPostStoreGetFlaggedPostsForChannel(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
// deleted post // deleted post
@@ -1636,14 +1711,15 @@ func testPostStoreGetFlaggedPostsForChannel(t *testing.T, ss store.Store) {
o3.UserId = o1.ChannelId o3.UserId = o1.ChannelId
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.DeleteAt = 1 o3.DeleteAt = 1
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
o4 := &model.Post{} o4 := &model.Post{}
o4.ChannelId = model.NewId() o4.ChannelId = model.NewId()
o4.UserId = model.NewId() o4.UserId = model.NewId()
o4.Message = "zz" + model.NewId() + "b" o4.Message = "zz" + model.NewId() + "b"
o4 = (<-ss.Post().Save(o4)).Data.(*model.Post) o4, err = ss.Post().Save(o4)
require.Nil(t, err)
time.Sleep(2 * time.Millisecond) time.Sleep(2 * time.Millisecond)
r, err := ss.Post().GetFlaggedPostsForChannel(o1.UserId, o1.ChannelId, 0, 10) r, err := ss.Post().GetFlaggedPostsForChannel(o1.UserId, o1.ChannelId, 0, 10)
@@ -1726,14 +1802,16 @@ func testPostStoreGetPostsCreatedAt(t *testing.T, ss store.Store) {
o0.UserId = model.NewId() o0.UserId = model.NewId()
o0.Message = "zz" + model.NewId() + "b" o0.Message = "zz" + model.NewId() + "b"
o0.CreateAt = createTime o0.CreateAt = createTime
o0 = (<-ss.Post().Save(o0)).Data.(*model.Post) o0, err := ss.Post().Save(o0)
require.Nil(t, err)
o1 := &model.Post{} o1 := &model.Post{}
o1.ChannelId = o0.ChannelId o1.ChannelId = o0.ChannelId
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1.CreateAt = createTime o1.CreateAt = createTime
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -1742,14 +1820,16 @@ func testPostStoreGetPostsCreatedAt(t *testing.T, ss store.Store) {
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2.CreateAt = createTime + 1 o2.CreateAt = createTime + 1
_ = (<-ss.Post().Save(o2)).Data.(*model.Post) _, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = model.NewId() o3.ChannelId = model.NewId()
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "b" o3.Message = "zz" + model.NewId() + "b"
o3.CreateAt = createTime o3.CreateAt = createTime
_ = (<-ss.Post().Save(o3)).Data.(*model.Post) _, err = ss.Post().Save(o3)
require.Nil(t, err)
r1, _ := ss.Post().GetPostsCreatedAt(o1.ChannelId, createTime) r1, _ := ss.Post().GetPostsCreatedAt(o1.ChannelId, createTime)
assert.Equal(t, 2, len(r1)) assert.Equal(t, 2, len(r1))
@@ -1760,7 +1840,8 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
@@ -1768,13 +1849,14 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
o2.Message = "zz" + model.NewId() + "CCCCCCCCC" o2.Message = "zz" + model.NewId() + "CCCCCCCCC"
o2.ParentId = o1.Id o2.ParentId = o1.Id
o2.RootId = o1.Id o2.RootId = o1.Id
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = o1.ChannelId o3.ChannelId = o1.ChannelId
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ" o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ"
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
r1, err := ss.Post().Get(o1.Id) r1, err := ss.Post().Get(o1.Id)
if err != nil { if err != nil {
@@ -1850,12 +1932,13 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) {
t.Fatal("Failed to overwrite/get") t.Fatal("Failed to overwrite/get")
} }
o4 := store.Must(ss.Post().Save(&model.Post{ o4, err := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
Message: model.NewId(), Message: model.NewId(),
Filenames: []string{"test"}, Filenames: []string{"test"},
})).(*model.Post) })
require.Nil(t, err)
r4, err := ss.Post().Get(o4.Id) r4, err := ss.Post().Get(o4.Id)
if err != nil { if err != nil {
@@ -1891,19 +1974,22 @@ func testPostStoreGetPostsByIds(t *testing.T, ss store.Store) {
o1.ChannelId = model.NewId() o1.ChannelId = model.NewId()
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "CCCCCCCCC" o2.Message = "zz" + model.NewId() + "CCCCCCCCC"
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = o1.ChannelId o3.ChannelId = o1.ChannelId
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ" o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ"
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
r1, err := ss.Post().Get(o1.Id) r1, err := ss.Post().Get(o1.Id)
if err != nil { if err != nil {
@@ -1963,13 +2049,15 @@ func testPostStoreGetPostsBatchForIndexing(t *testing.T, ss store.Store) {
o1.ChannelId = c1.Id o1.ChannelId = c1.Id
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = c2.Id o2.ChannelId = c2.Id
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "CCCCCCCCC" o2.Message = "zz" + model.NewId() + "CCCCCCCCC"
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = c1.Id o3.ChannelId = c1.Id
@@ -1977,7 +2065,7 @@ func testPostStoreGetPostsBatchForIndexing(t *testing.T, ss store.Store) {
o3.ParentId = o1.Id o3.ParentId = o1.Id
o3.RootId = o1.Id o3.RootId = o1.Id
o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ" o3.Message = "zz" + model.NewId() + "QQQQQQQQQQ"
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
if r, err := ss.Post().GetPostsBatchForIndexing(o1.CreateAt, model.GetMillis()+100000, 100); err != nil { if r, err := ss.Post().GetPostsBatchForIndexing(o1.CreateAt, model.GetMillis()+100000, 100); err != nil {
t.Fatal(err) t.Fatal(err)
@@ -2019,23 +2107,26 @@ func testPostStorePermanentDeleteBatch(t *testing.T, ss store.Store) {
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o1.CreateAt = 1000 o1.CreateAt = 1000
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = model.NewId() o2.ChannelId = model.NewId()
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o2.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o2.CreateAt = 1000 o2.CreateAt = 1000
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
o3 := &model.Post{} o3 := &model.Post{}
o3.ChannelId = model.NewId() o3.ChannelId = model.NewId()
o3.UserId = model.NewId() o3.UserId = model.NewId()
o3.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o3.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o3.CreateAt = 100000 o3.CreateAt = 100000
o3 = (<-ss.Post().Save(o3)).Data.(*model.Post) o3, err = ss.Post().Save(o3)
require.Nil(t, err)
_, err := ss.Post().PermanentDeleteBatch(2000, 1000) _, err = ss.Post().PermanentDeleteBatch(2000, 1000)
require.Nil(t, err) require.Nil(t, err)
if _, err := ss.Post().Get(o1.Id); err == nil { if _, err := ss.Post().Get(o1.Id); err == nil {
@@ -2057,21 +2148,24 @@ func testPostStoreGetOldest(t *testing.T, ss store.Store) {
o0.UserId = model.NewId() o0.UserId = model.NewId()
o0.Message = "zz" + model.NewId() + "b" o0.Message = "zz" + model.NewId() + "b"
o0.CreateAt = 3 o0.CreateAt = 3
o0 = (<-ss.Post().Save(o0)).Data.(*model.Post) o0, err := ss.Post().Save(o0)
require.Nil(t, err)
o1 := &model.Post{} o1 := &model.Post{}
o1.ChannelId = o0.Id o1.ChannelId = o0.Id
o1.UserId = model.NewId() o1.UserId = model.NewId()
o1.Message = "zz" + model.NewId() + "b" o1.Message = "zz" + model.NewId() + "b"
o1.CreateAt = 2 o1.CreateAt = 2
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err = ss.Post().Save(o1)
require.Nil(t, err)
o2 := &model.Post{} o2 := &model.Post{}
o2.ChannelId = o1.ChannelId o2.ChannelId = o1.ChannelId
o2.UserId = model.NewId() o2.UserId = model.NewId()
o2.Message = "zz" + model.NewId() + "b" o2.Message = "zz" + model.NewId() + "b"
o2.CreateAt = 1 o2.CreateAt = 1
o2 = (<-ss.Post().Save(o2)).Data.(*model.Post) o2, err = ss.Post().Save(o2)
require.Nil(t, err)
r1, err := ss.Post().GetOldest() r1, err := ss.Post().GetOldest()
@@ -2112,7 +2206,8 @@ func testPostStoreGetParentsForExportAfter(t *testing.T, ss store.Store) {
p1.UserId = u1.Id p1.UserId = u1.Id
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
p1.CreateAt = 1000 p1.CreateAt = 1000
p1 = (<-ss.Post().Save(p1)).Data.(*model.Post) p1, err = ss.Post().Save(p1)
require.Nil(t, err)
posts, err := ss.Post().GetParentsForExportAfter(10000, strings.Repeat("0", 26)) posts, err := ss.Post().GetParentsForExportAfter(10000, strings.Repeat("0", 26))
assert.Nil(t, err) assert.Nil(t, err)
@@ -2158,7 +2253,8 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) {
p1.UserId = u1.Id p1.UserId = u1.Id
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
p1.CreateAt = 1000 p1.CreateAt = 1000
p1 = (<-ss.Post().Save(p1)).Data.(*model.Post) p1, err = ss.Post().Save(p1)
require.Nil(t, err)
p2 := &model.Post{} p2 := &model.Post{}
p2.ChannelId = c1.Id p2.ChannelId = c1.Id
@@ -2167,7 +2263,8 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) {
p2.CreateAt = 1001 p2.CreateAt = 1001
p2.ParentId = p1.Id p2.ParentId = p1.Id
p2.RootId = p1.Id p2.RootId = p1.Id
p2 = (<-ss.Post().Save(p2)).Data.(*model.Post) p2, err = ss.Post().Save(p2)
require.Nil(t, err)
r1, err := ss.Post().GetRepliesForExport(p1.Id) r1, err := ss.Post().GetRepliesForExport(p1.Id)
assert.Nil(t, err) assert.Nil(t, err)
@@ -2234,7 +2331,8 @@ func testPostStoreGetDirectPostParentsForExportAfter(t *testing.T, ss store.Stor
p1.UserId = u1.Id p1.UserId = u1.Id
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
p1.CreateAt = 1000 p1.CreateAt = 1000
p1 = (<-ss.Post().Save(p1)).Data.(*model.Post) p1, err := ss.Post().Save(p1)
require.Nil(t, err)
r1, err := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26)) r1, err := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26))
assert.Nil(t, err) assert.Nil(t, err)
@@ -2289,7 +2387,8 @@ func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, ss sto
p1.UserId = u1.Id p1.UserId = u1.Id
p1.Message = "zz" + model.NewId() + "BBBBBBBBBBBB" p1.Message = "zz" + model.NewId() + "BBBBBBBBBBBB"
p1.CreateAt = 1000 p1.CreateAt = 1000
p1 = (<-ss.Post().Save(p1)).Data.(*model.Post) p1, err = ss.Post().Save(p1)
require.Nil(t, err)
o1a := &model.Post{} o1a := &model.Post{}
*o1a = *p1 *o1a = *p1
@@ -2348,7 +2447,8 @@ func testPostStoreGetDirectPostParentsForExportAfterBatched(t *testing.T, ss sto
p1.UserId = u1.Id p1.UserId = u1.Id
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
p1.CreateAt = 1000 p1.CreateAt = 1000
p1 = (<-ss.Post().Save(p1)).Data.(*model.Post) p1, err := ss.Post().Save(p1)
require.Nil(t, err)
postIds = append(postIds, p1.Id) postIds = append(postIds, p1.Id)
} }
sort.Slice(postIds, func(i, j int) bool { return postIds[i] < postIds[j] }) sort.Slice(postIds, func(i, j int) bool { return postIds[i] < postIds[j] })

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

@@ -427,7 +427,8 @@ func testPreferenceCleanupFlagsBatch(t *testing.T, ss store.Store) {
o1.UserId = userId o1.UserId = userId
o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA" o1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
o1.CreateAt = 1000 o1.CreateAt = 1000
o1 = (<-ss.Post().Save(o1)).Data.(*model.Post) o1, err := ss.Post().Save(o1)
require.Nil(t, err)
preference1 := model.Preference{ preference1 := model.Preference{
UserId: userId, UserId: userId,
@@ -443,7 +444,7 @@ func testPreferenceCleanupFlagsBatch(t *testing.T, ss store.Store) {
Value: "true", Value: "true",
} }
err := ss.Preference().Save(&model.Preferences{preference1, preference2}) err = ss.Preference().Save(&model.Preferences{preference1, preference2})
require.Nil(t, err) require.Nil(t, err)
_, err = ss.Preference().CleanupFlagsBatch(10000) _, err = ss.Preference().CleanupFlagsBatch(10000)

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

@@ -21,10 +21,11 @@ func TestReactionStore(t *testing.T, ss store.Store) {
} }
func testReactionSave(t *testing.T, ss store.Store) { func testReactionSave(t *testing.T, ss store.Store) {
post := store.Must(ss.Post().Save(&model.Post{ post, err := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
})).(*model.Post) })
require.Nil(t, err)
firstUpdateAt := post.UpdateAt firstUpdateAt := post.UpdateAt
reaction1 := &model.Reaction{ reaction1 := &model.Reaction{
@@ -32,7 +33,8 @@ func testReactionSave(t *testing.T, ss store.Store) {
PostId: post.Id, PostId: post.Id,
EmojiName: model.NewId(), EmojiName: model.NewId(),
} }
if reaction, err := ss.Reaction().Save(reaction1); err != nil { reaction, err := ss.Reaction().Save(reaction1)
if err != nil {
t.Fatal(err) t.Fatal(err)
} else if saved := reaction; saved.UserId != reaction1.UserId || } else if saved := reaction; saved.UserId != reaction1.UserId ||
saved.PostId != reaction1.PostId || saved.EmojiName != reaction1.EmojiName { saved.PostId != reaction1.PostId || saved.EmojiName != reaction1.EmojiName {
@@ -107,10 +109,11 @@ func testReactionSave(t *testing.T, ss store.Store) {
} }
func testReactionDelete(t *testing.T, ss store.Store) { func testReactionDelete(t *testing.T, ss store.Store) {
post := store.Must(ss.Post().Save(&model.Post{ post, err := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
})).(*model.Post) })
require.Nil(t, err)
reaction := &model.Reaction{ reaction := &model.Reaction{
UserId: model.NewId(), UserId: model.NewId(),
@@ -118,7 +121,7 @@ func testReactionDelete(t *testing.T, ss store.Store) {
EmojiName: model.NewId(), EmojiName: model.NewId(),
} }
_, err := ss.Reaction().Save(reaction) _, err = ss.Reaction().Save(reaction)
require.Nil(t, err) require.Nil(t, err)
result, err := ss.Post().Get(reaction.PostId) result, err := ss.Post().Get(reaction.PostId)
if err != nil { if err != nil {
@@ -232,18 +235,21 @@ func testReactionGetForPost(t *testing.T, ss store.Store) {
func testReactionDeleteAllWithEmojiName(t *testing.T, ss store.Store) { func testReactionDeleteAllWithEmojiName(t *testing.T, ss store.Store) {
emojiToDelete := model.NewId() emojiToDelete := model.NewId()
post := store.Must(ss.Post().Save(&model.Post{ post, err1 := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
})).(*model.Post) })
post2 := store.Must(ss.Post().Save(&model.Post{ require.Nil(t, err1)
post2, err2 := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
})).(*model.Post) })
post3 := store.Must(ss.Post().Save(&model.Post{ require.Nil(t, err2)
post3, err3 := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
})).(*model.Post) })
require.Nil(t, err3)
userId := model.NewId() userId := model.NewId()
@@ -337,10 +343,11 @@ func testReactionDeleteAllWithEmojiName(t *testing.T, ss store.Store) {
} }
func testReactionStorePermanentDeleteBatch(t *testing.T, ss store.Store) { func testReactionStorePermanentDeleteBatch(t *testing.T, ss store.Store) {
post := store.Must(ss.Post().Save(&model.Post{ post, err1 := ss.Post().Save(&model.Post{
ChannelId: model.NewId(), ChannelId: model.NewId(),
UserId: model.NewId(), UserId: model.NewId(),
})).(*model.Post) })
require.Nil(t, err1)
reactions := []*model.Reaction{ reactions := []*model.Reaction{
{ {

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

@@ -1716,7 +1716,8 @@ func testUserUnreadCount(t *testing.T, ss store.Store) {
p1.Message = "this is a message for @" + u2.Username p1.Message = "this is a message for @" + u2.Username
// Post one message with mention to open channel // Post one message with mention to open channel
store.Must(ss.Post().Save(&p1)) _, err := ss.Post().Save(&p1)
require.Nil(t, err)
store.Must(ss.Channel().IncrementMentionCount(c1.Id, u2.Id)) store.Must(ss.Channel().IncrementMentionCount(c1.Id, u2.Id))
// Post 2 messages without mention to direct channel // Post 2 messages without mention to direct channel
@@ -1724,14 +1725,18 @@ func testUserUnreadCount(t *testing.T, ss store.Store) {
p2.ChannelId = c2.Id p2.ChannelId = c2.Id
p2.UserId = u1.Id p2.UserId = u1.Id
p2.Message = "first message" p2.Message = "first message"
store.Must(ss.Post().Save(&p2))
_, err = ss.Post().Save(&p2)
require.Nil(t, err)
store.Must(ss.Channel().IncrementMentionCount(c2.Id, u2.Id)) store.Must(ss.Channel().IncrementMentionCount(c2.Id, u2.Id))
p3 := model.Post{} p3 := model.Post{}
p3.ChannelId = c2.Id p3.ChannelId = c2.Id
p3.UserId = u1.Id p3.UserId = u1.Id
p3.Message = "second message" p3.Message = "second message"
store.Must(ss.Post().Save(&p3)) _, err = ss.Post().Save(&p3)
require.Nil(t, err)
store.Must(ss.Channel().IncrementMentionCount(c2.Id, u2.Id)) store.Must(ss.Channel().IncrementMentionCount(c2.Id, u2.Id))
badge := (<-ss.User().GetUnreadCount(u2.Id)).Data.(int64) badge := (<-ss.User().GetUnreadCount(u2.Id)).Data.(int64)