summaryrefslogtreecommitdiffstats
path: root/store/sql_reaction_store_test.go
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2017-09-25 09:11:25 -0500
committerJoram Wilander <jwawilander@gmail.com>2017-09-25 10:11:25 -0400
commit49fe5fbf3db56fc466b8997b182ee135d7a4365d (patch)
tree1252fea09aa3ce899e2e8edb1fb7b42900f50bca /store/sql_reaction_store_test.go
parentb2c5b97601b61f5748b46e4e386134203111ebb0 (diff)
downloadchat-49fe5fbf3db56fc466b8997b182ee135d7a4365d.tar.gz
chat-49fe5fbf3db56fc466b8997b182ee135d7a4365d.tar.bz2
chat-49fe5fbf3db56fc466b8997b182ee135d7a4365d.zip
Move sql store code into store/sqlstore package (#7502)
* move sql store code into store/sqlstore package * move non-sql constants back up to store * fix api test * derp
Diffstat (limited to 'store/sql_reaction_store_test.go')
-rw-r--r--store/sql_reaction_store_test.go351
1 files changed, 0 insertions, 351 deletions
diff --git a/store/sql_reaction_store_test.go b/store/sql_reaction_store_test.go
deleted file mode 100644
index ebc09dc9b..000000000
--- a/store/sql_reaction_store_test.go
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-package store
-
-import (
- "testing"
-
- "github.com/mattermost/mattermost-server/model"
-)
-
-func TestReactionSave(t *testing.T) {
- Setup()
-
- post := Must(store.Post().Save(&model.Post{
- ChannelId: model.NewId(),
- UserId: model.NewId(),
- })).(*model.Post)
- firstUpdateAt := post.UpdateAt
-
- reaction1 := &model.Reaction{
- UserId: model.NewId(),
- PostId: post.Id,
- EmojiName: model.NewId(),
- }
- if result := <-store.Reaction().Save(reaction1); result.Err != nil {
- t.Fatal(result.Err)
- } else if saved := result.Data.(*model.Reaction); saved.UserId != reaction1.UserId ||
- saved.PostId != reaction1.PostId || saved.EmojiName != reaction1.EmojiName {
- t.Fatal("should've saved reaction and returned it")
- }
-
- var secondUpdateAt int64
- if postList := Must(store.Post().Get(reaction1.PostId)).(*model.PostList); !postList.Posts[post.Id].HasReactions {
- t.Fatal("should've set HasReactions = true on post")
- } else if postList.Posts[post.Id].UpdateAt == firstUpdateAt {
- t.Fatal("should've marked post as updated when HasReactions changed")
- } else {
- secondUpdateAt = postList.Posts[post.Id].UpdateAt
- }
-
- if result := <-store.Reaction().Save(reaction1); result.Err != nil {
- t.Log(result.Err)
- t.Fatal("should've allowed saving a duplicate reaction")
- }
-
- // different user
- reaction2 := &model.Reaction{
- UserId: model.NewId(),
- PostId: reaction1.PostId,
- EmojiName: reaction1.EmojiName,
- }
- if result := <-store.Reaction().Save(reaction2); result.Err != nil {
- t.Fatal(result.Err)
- }
-
- if postList := Must(store.Post().Get(reaction2.PostId)).(*model.PostList); postList.Posts[post.Id].UpdateAt != secondUpdateAt {
- t.Fatal("shouldn't mark as updated when HasReactions hasn't changed")
- }
-
- // different post
- reaction3 := &model.Reaction{
- UserId: reaction1.UserId,
- PostId: model.NewId(),
- EmojiName: reaction1.EmojiName,
- }
- if result := <-store.Reaction().Save(reaction3); result.Err != nil {
- t.Fatal(result.Err)
- }
-
- // different emoji
- reaction4 := &model.Reaction{
- UserId: reaction1.UserId,
- PostId: reaction1.PostId,
- EmojiName: model.NewId(),
- }
- if result := <-store.Reaction().Save(reaction4); result.Err != nil {
- t.Fatal(result.Err)
- }
-
- // invalid reaction
- reaction5 := &model.Reaction{
- UserId: reaction1.UserId,
- PostId: reaction1.PostId,
- }
- if result := <-store.Reaction().Save(reaction5); result.Err == nil {
- t.Fatal("should've failed for invalid reaction")
- }
-}
-
-func TestReactionDelete(t *testing.T) {
- Setup()
-
- post := Must(store.Post().Save(&model.Post{
- ChannelId: model.NewId(),
- UserId: model.NewId(),
- })).(*model.Post)
-
- reaction := &model.Reaction{
- UserId: model.NewId(),
- PostId: post.Id,
- EmojiName: model.NewId(),
- }
-
- Must(store.Reaction().Save(reaction))
- firstUpdateAt := Must(store.Post().Get(reaction.PostId)).(*model.PostList).Posts[post.Id].UpdateAt
-
- if result := <-store.Reaction().Delete(reaction); result.Err != nil {
- t.Fatal(result.Err)
- }
-
- if result := <-store.Reaction().GetForPost(post.Id, false); result.Err != nil {
- t.Fatal(result.Err)
- } else if len(result.Data.([]*model.Reaction)) != 0 {
- t.Fatal("should've deleted reaction")
- }
-
- if postList := Must(store.Post().Get(post.Id)).(*model.PostList); postList.Posts[post.Id].HasReactions {
- t.Fatal("should've set HasReactions = false on post")
- } else if postList.Posts[post.Id].UpdateAt == firstUpdateAt {
- t.Fatal("shouldn't mark as updated when HasReactions has changed after deleting reactions")
- }
-}
-
-func TestReactionGetForPost(t *testing.T) {
- Setup()
-
- postId := model.NewId()
-
- userId := model.NewId()
-
- reactions := []*model.Reaction{
- {
- UserId: userId,
- PostId: postId,
- EmojiName: "smile",
- },
- {
- UserId: model.NewId(),
- PostId: postId,
- EmojiName: "smile",
- },
- {
- UserId: userId,
- PostId: postId,
- EmojiName: "sad",
- },
- {
- UserId: userId,
- PostId: model.NewId(),
- EmojiName: "angry",
- },
- }
-
- for _, reaction := range reactions {
- Must(store.Reaction().Save(reaction))
- }
-
- if result := <-store.Reaction().GetForPost(postId, false); result.Err != nil {
- t.Fatal(result.Err)
- } else if returned := result.Data.([]*model.Reaction); len(returned) != 3 {
- t.Fatal("should've returned 3 reactions")
- } else {
- for _, reaction := range reactions {
- found := false
-
- for _, returnedReaction := range returned {
- if returnedReaction.UserId == reaction.UserId && returnedReaction.PostId == reaction.PostId &&
- returnedReaction.EmojiName == reaction.EmojiName {
- found = true
- break
- }
- }
-
- if !found && reaction.PostId == postId {
- t.Fatalf("should've returned reaction for post %v", reaction)
- } else if found && reaction.PostId != postId {
- t.Fatal("shouldn't have returned reaction for another post")
- }
- }
- }
-
- // Should return cached item
- if result := <-store.Reaction().GetForPost(postId, true); result.Err != nil {
- t.Fatal(result.Err)
- } else if returned := result.Data.([]*model.Reaction); len(returned) != 3 {
- t.Fatal("should've returned 3 reactions")
- } else {
- for _, reaction := range reactions {
- found := false
-
- for _, returnedReaction := range returned {
- if returnedReaction.UserId == reaction.UserId && returnedReaction.PostId == reaction.PostId &&
- returnedReaction.EmojiName == reaction.EmojiName {
- found = true
- break
- }
- }
-
- if !found && reaction.PostId == postId {
- t.Fatalf("should've returned reaction for post %v", reaction)
- } else if found && reaction.PostId != postId {
- t.Fatal("shouldn't have returned reaction for another post")
- }
- }
- }
-}
-
-func TestReactionDeleteAllWithEmojiName(t *testing.T) {
- Setup()
-
- emojiToDelete := model.NewId()
-
- post := Must(store.Post().Save(&model.Post{
- ChannelId: model.NewId(),
- UserId: model.NewId(),
- })).(*model.Post)
- post2 := Must(store.Post().Save(&model.Post{
- ChannelId: model.NewId(),
- UserId: model.NewId(),
- })).(*model.Post)
- post3 := Must(store.Post().Save(&model.Post{
- ChannelId: model.NewId(),
- UserId: model.NewId(),
- })).(*model.Post)
-
- userId := model.NewId()
-
- reactions := []*model.Reaction{
- {
- UserId: userId,
- PostId: post.Id,
- EmojiName: emojiToDelete,
- },
- {
- UserId: model.NewId(),
- PostId: post.Id,
- EmojiName: emojiToDelete,
- },
- {
- UserId: userId,
- PostId: post.Id,
- EmojiName: "sad",
- },
- {
- UserId: userId,
- PostId: post2.Id,
- EmojiName: "angry",
- },
- {
- UserId: userId,
- PostId: post3.Id,
- EmojiName: emojiToDelete,
- },
- }
-
- for _, reaction := range reactions {
- Must(store.Reaction().Save(reaction))
- }
-
- if result := <-store.Reaction().DeleteAllWithEmojiName(emojiToDelete); result.Err != nil {
- t.Fatal(result.Err)
- }
-
- // check that the reactions were deleted
- if returned := Must(store.Reaction().GetForPost(post.Id, false)).([]*model.Reaction); len(returned) != 1 {
- t.Fatal("should've only removed reactions with emoji name")
- } else {
- for _, reaction := range returned {
- if reaction.EmojiName == "smile" {
- t.Fatal("should've removed reaction with emoji name")
- }
- }
- }
-
- if returned := Must(store.Reaction().GetForPost(post2.Id, false)).([]*model.Reaction); len(returned) != 1 {
- t.Fatal("should've only removed reactions with emoji name")
- }
-
- if returned := Must(store.Reaction().GetForPost(post3.Id, false)).([]*model.Reaction); len(returned) != 0 {
- t.Fatal("should've only removed reactions with emoji name")
- }
-
- // check that the posts are updated
- if postList := Must(store.Post().Get(post.Id)).(*model.PostList); !postList.Posts[post.Id].HasReactions {
- t.Fatal("post should still have reactions")
- }
-
- if postList := Must(store.Post().Get(post2.Id)).(*model.PostList); !postList.Posts[post2.Id].HasReactions {
- t.Fatal("post should still have reactions")
- }
-
- if postList := Must(store.Post().Get(post3.Id)).(*model.PostList); postList.Posts[post3.Id].HasReactions {
- t.Fatal("post shouldn't have reactions any more")
- }
-}
-
-func TestReactionStorePermanentDeleteBatch(t *testing.T) {
- Setup()
-
- post := Must(store.Post().Save(&model.Post{
- ChannelId: model.NewId(),
- UserId: model.NewId(),
- })).(*model.Post)
-
- reactions := []*model.Reaction{
- {
- UserId: model.NewId(),
- PostId: post.Id,
- EmojiName: "sad",
- CreateAt: 1000,
- },
- {
- UserId: model.NewId(),
- PostId: post.Id,
- EmojiName: "sad",
- CreateAt: 1500,
- },
- {
- UserId: model.NewId(),
- PostId: post.Id,
- EmojiName: "sad",
- CreateAt: 2000,
- },
- {
- UserId: model.NewId(),
- PostId: post.Id,
- EmojiName: "sad",
- CreateAt: 2000,
- },
- }
-
- // Need to hang on to a reaction to delete later in order to clear the cache, as "allowFromCache" isn't honoured any more.
- var lastReaction *model.Reaction
- for _, reaction := range reactions {
- lastReaction = Must(store.Reaction().Save(reaction)).(*model.Reaction)
- }
-
- if returned := Must(store.Reaction().GetForPost(post.Id, false)).([]*model.Reaction); len(returned) != 4 {
- t.Fatal("expected 4 reactions")
- }
-
- Must(store.Reaction().PermanentDeleteBatch(1800, 1000))
-
- // This is to force a clear of the cache.
- Must(store.Reaction().Delete(lastReaction))
-
- if returned := Must(store.Reaction().GetForPost(post.Id, false)).([]*model.Reaction); len(returned) != 1 {
- t.Fatalf("expected 1 reaction. Got: %v", len(returned))
- }
-}