offline-twitter/pkg/persistence/notification_queries_test.go
2025-02-15 14:33:56 -08:00

85 lines
2.3 KiB
Go

package persistence_test
import (
"testing"
"github.com/go-test/deep"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
. "gitlab.com/offline-twitter/twitter_offline_engine/pkg/persistence"
)
func TestSaveAndLoadNotification(t *testing.T) {
profile_path := "test_profiles/TestNotificationQuery"
profile := create_or_load_profile(profile_path)
// Save it
n := create_dummy_notification()
profile.SaveNotification(n)
// Check it comes back the same
new_n := profile.GetNotification(n.ID)
if diff := deep.Equal(n, new_n); diff != nil {
t.Error(diff)
}
}
func TestGetUnreadNotificationsCount(t *testing.T) {
require := require.New(t)
assert := assert.New(t)
profile, err := LoadProfile("../../sample_data/profile")
require.NoError(err)
unread_notifs_count := profile.GetUnreadNotificationsCount(UserID(1488963321701171204), 1724372973735)
assert.Equal(2, unread_notifs_count)
}
// Ensure that setting / blanking the Action[Re]TweetIDs works correctly
func TestLikesNotificationWithBothTweetsAndRetweets(t *testing.T) {
profile_path := "test_profiles/TestNotificationQuery"
profile := create_or_load_profile(profile_path)
// Create a "like" on a Tweet
n := create_dummy_notification()
n.Type = NOTIFICATION_TYPE_LIKE
n.ActionTweetID = create_stable_tweet().ID
n.TweetIDs = []TweetID{n.ActionTweetID} // Overwrite the `dummy` slice
n.ActionRetweetID = TweetID(0)
n.RetweetIDs = []TweetID{}
profile.SaveNotification(n)
// Check it comes back the same
new_n := profile.GetNotification(n.ID)
if diff := deep.Equal(n, new_n); diff != nil {
t.Error(diff)
}
// Now the user "likes" a Retweet too
n.ActionTweetID = TweetID(0)
n.ActionRetweetID = create_stable_retweet().RetweetID
n.RetweetIDs = append(n.RetweetIDs, n.ActionRetweetID)
profile.SaveNotification(n)
// Check it comes back the same
new_n = profile.GetNotification(n.ID)
if diff := deep.Equal(n, new_n); diff != nil {
t.Error(diff)
}
// Now the user "likes" another Tweet
new_tweet := create_dummy_tweet()
require.NoError(t, profile.SaveTweet(new_tweet))
n.ActionTweetID = new_tweet.ID
n.ActionRetweetID = TweetID(0)
n.TweetIDs = append(n.TweetIDs, new_tweet.ID)
profile.SaveNotification(n)
// Check it comes back the same
new_n = profile.GetNotification(n.ID)
if diff := deep.Equal(n, new_n); diff != nil {
t.Error(diff)
}
}