From 80d83ae77c85de5666dc88458e2888f66c49cc90 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Mon, 22 Aug 2016 20:36:01 -0400 Subject: Prevent flagging of deleted posts and don't show deleted posts in flagged post list (#3846) --- store/sql_post_store.go | 2 +- store/sql_post_store_test.go | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'store') diff --git a/store/sql_post_store.go b/store/sql_post_store.go index 07192b4a6..b844bfbca 100644 --- a/store/sql_post_store.go +++ b/store/sql_post_store.go @@ -149,7 +149,7 @@ func (s SqlPostStore) GetFlaggedPosts(userId string, offset int, limit int) Stor pl := &model.PostList{} var posts []*model.Post - if _, err := s.GetReplica().Select(&posts, "SELECT * FROM Posts WHERE Id IN (SELECT Name FROM Preferences WHERE UserId = :UserId AND Category = :Category) ORDER BY CreateAt ASC LIMIT :Limit OFFSET :Offset", map[string]interface{}{"UserId": userId, "Category": model.PREFERENCE_CATEGORY_FLAGGED_POST, "Offset": offset, "Limit": limit}); err != nil { + if _, err := s.GetReplica().Select(&posts, "SELECT * FROM Posts WHERE Id IN (SELECT Name FROM Preferences WHERE UserId = :UserId AND Category = :Category) AND DeleteAt = 0 ORDER BY CreateAt ASC LIMIT :Limit OFFSET :Offset", map[string]interface{}{"UserId": userId, "Category": model.PREFERENCE_CATEGORY_FLAGGED_POST, "Offset": offset, "Limit": limit}); err != nil { result.Err = model.NewLocAppError("SqlPostStore.GetFlaggedPosts", "store.sql_post.get_flagged_posts.app_error", nil, err.Error()) } else { for _, post := range posts { diff --git a/store/sql_post_store_test.go b/store/sql_post_store_test.go index d8f8c2e6b..594e923be 100644 --- a/store/sql_post_store_test.go +++ b/store/sql_post_store_test.go @@ -923,6 +923,14 @@ func TestPostStoreGetFlaggedPosts(t *testing.T) { o2 = (<-store.Post().Save(o2)).Data.(*model.Post) time.Sleep(2 * time.Millisecond) + o3 := &model.Post{} + o3.ChannelId = o1.ChannelId + o3.UserId = model.NewId() + o3.Message = "a" + model.NewId() + "b" + o3.DeleteAt = 1 + o3 = (<-store.Post().Save(o3)).Data.(*model.Post) + time.Sleep(2 * time.Millisecond) + r1 := (<-store.Post().GetFlaggedPosts(o1.ChannelId, 0, 2)).Data.(*model.PostList) if len(r1.Order) != 0 { @@ -968,4 +976,19 @@ func TestPostStoreGetFlaggedPosts(t *testing.T) { if len(r4.Order) != 2 { t.Fatal("should have 2 posts") } + + preferences = model.Preferences{ + { + UserId: o1.UserId, + Category: model.PREFERENCE_CATEGORY_FLAGGED_POST, + Name: o3.Id, + Value: "true", + }, + } + + Must(store.Preference().Save(&preferences)) + + if len(r4.Order) != 2 { + t.Fatal("should have 2 posts") + } } -- cgit v1.2.3-1-g7c22