From 82f5721ac2375114547c8e3863b48c9918ca4631 Mon Sep 17 00:00:00 2001 From: Alessio Date: Mon, 14 Feb 2022 17:58:10 -0800 Subject: [PATCH] Make user handle matching case-insensitive in tweet trove --- scraper/tweet_trove.go | 16 +++++----------- scraper/tweet_trove_test.go | 9 +++++---- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/scraper/tweet_trove.go b/scraper/tweet_trove.go index 387ae5e..4c70697 100644 --- a/scraper/tweet_trove.go +++ b/scraper/tweet_trove.go @@ -2,6 +2,7 @@ package scraper import ( "fmt" + "strings" log "github.com/sirupsen/logrus" ) @@ -44,7 +45,7 @@ func (trove TweetTrove) Transform() (tweets []Tweet, retweets []Retweet, users [ */ func (trove TweetTrove) FindUserByHandle(handle UserHandle) (User, bool) { for _, user := range trove.Users { - if user.Handle == handle { + if strings.ToLower(string(user.Handle)) == strings.ToLower(string(handle)) { return user, true } } @@ -112,20 +113,13 @@ func (trove *TweetTrove) FillMissingUserIDs() { continue } - handle := tweet.UserHandle - is_user_found := false - for _, u := range trove.Users { - if u.Handle == handle { - tweet.UserID = u.ID - is_user_found = true - break - } - } - if !is_user_found { + user, is_found := trove.FindUserByHandle(tweet.UserHandle) + if !is_found { // The user probably deleted deleted their account, and thus `scraper.GetUser` failed. So // they're not in this trove's Users. panic(fmt.Sprintf("Couldn't fill out this Tweet's UserID: %d, %s", tweet.ID, tweet.UserHandle)) } + tweet.UserID = user.ID trove.Tweets[i] = tweet } } diff --git a/scraper/tweet_trove_test.go b/scraper/tweet_trove_test.go index de0b549..ea6e319 100644 --- a/scraper/tweet_trove_test.go +++ b/scraper/tweet_trove_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" . "offline_twitter/scraper" ) @@ -50,7 +51,7 @@ func TestMergeTweetTroves(t *testing.T) { func TestFillMissingUserIDs(t *testing.T) { assert := assert.New(t) - u1 := User{ID: 1, Handle: "a"} + u1 := User{ID: 1, Handle: "A"} t1 := Tweet{ID: 1, UserID: 1} t2 := Tweet{ID: 2, UserHandle: "a"} @@ -71,14 +72,14 @@ func TestFindUserByHandle(t *testing.T) { assert := assert.New(t) u1 := User{ID: 1, Handle: "1", DisplayName: "One"} - u2 := User{ID: 2, Handle: "2", DisplayName: "Two"} + u2 := User{ID: 2, Handle: "b", DisplayName: "Two"} trove := NewTweetTrove() trove.Users[u1.ID] = u1 trove.Users[u2.ID] = u2 - user_2, ok := trove.FindUserByHandle("2") - assert.True(ok) + user_2, ok := trove.FindUserByHandle("B") + require.True(t, ok) assert.Equal(user_2.DisplayName, "Two") _, ok = trove.FindUserByHandle("3")