From db692e747a51a0ffb57f26f915d690498871f76e Mon Sep 17 00:00:00 2001 From: Alessio Date: Sun, 24 Dec 2023 19:43:00 -0600 Subject: [PATCH] Fix lint error, add test for empty polling result --- internal/webserver/handler_messages.go | 4 +-- internal/webserver/server_test.go | 44 ++++++++++++++++++++++++-- pkg/persistence/dm_queries.go | 2 +- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/internal/webserver/handler_messages.go b/internal/webserver/handler_messages.go index 5190ce6..231f4c7 100644 --- a/internal/webserver/handler_messages.go +++ b/internal/webserver/handler_messages.go @@ -4,8 +4,8 @@ import ( "encoding/json" "io" "net/http" - "strings" "strconv" + "strings" "gitlab.com/offline-twitter/twitter_offline_engine/pkg/persistence" "gitlab.com/offline-twitter/twitter_offline_engine/pkg/scraper" @@ -74,7 +74,7 @@ func (app *Application) Messages(w http.ResponseWriter, r *http.Request) { chat_view_data.MergeWith(chat_contents.DMTrove) chat_view_data.MessageIDs = chat_contents.MessageIDs if len(chat_view_data.MessageIDs) > 0 { - last_message_id := chat_view_data.MessageIDs[len(chat_view_data.MessageIDs) - 1] + last_message_id := chat_view_data.MessageIDs[len(chat_view_data.MessageIDs)-1] chat_view_data.LatestPollingTimestamp = int(chat_view_data.Messages[last_message_id].SentAt.Unix()) } diff --git a/internal/webserver/server_test.go b/internal/webserver/server_test.go index a48a718..6325eee 100644 --- a/internal/webserver/server_test.go +++ b/internal/webserver/server_test.go @@ -612,10 +612,13 @@ func TestMessagesRoom(t *testing.T) { // Should have the poller at the bottom node := cascadia.Query(root, selector("#new-messages-poller")) assert.NotNil(node) - assert.Contains(node.Attr, html.Attribute{Key: "hx-get", Val: "/messages/1488963321701171204-1178839081222115328?poll&latest_timestamp=1686025129144"}) + assert.Contains(node.Attr, html.Attribute{ + Key: "hx-get", + Val: "/messages/1488963321701171204-1178839081222115328?poll&latest_timestamp=1686025129144", + }) } -// Loading the page since +// Loading the page since a given message func TestMessagesRoomPollForUpdates(t *testing.T) { assert := assert.New(t) require := require.New(t) @@ -634,4 +637,41 @@ func TestMessagesRoomPollForUpdates(t *testing.T) { root, err := html.Parse(resp.Body) require.NoError(err) assert.Len(cascadia.QueryAll(root, selector(".dm-message-and-reacts-container")), 3) + + // Should have the poller at the bottom + node := cascadia.Query(root, selector("#new-messages-poller")) + assert.NotNil(node) + assert.Contains(node.Attr, html.Attribute{ + Key: "hx-get", + Val: "/messages/1488963321701171204-1178839081222115328?poll&latest_timestamp=1686025129144", + }) +} + +// Loading the page since latest message (no updates) +func TestMessagesRoomPollForUpdatesEmptyResult(t *testing.T) { + assert := assert.New(t) + require := require.New(t) + + // Boilerplate for setting an active user + app := webserver.NewApp(profile) + app.IsScrapingDisabled = true + app.ActiveUser = scraper.User{ID: 1488963321701171204, Handle: "Offline_Twatter"} // Simulate a login + + // Chat detail + recorder := httptest.NewRecorder() + req := httptest.NewRequest("GET", "/messages/1488963321701171204-1178839081222115328?poll&latest_timestamp=1686025129144", nil) + req.Header.Set("HX-Request", "true") + app.ServeHTTP(recorder, req) + resp := recorder.Result() + root, err := html.Parse(resp.Body) + require.NoError(err) + assert.Len(cascadia.QueryAll(root, selector(".dm-message-and-reacts-container")), 0) + + // Should have the poller at the bottom, with the same value as previously + node := cascadia.Query(root, selector("#new-messages-poller")) + assert.NotNil(node) + assert.Contains(node.Attr, html.Attribute{ + Key: "hx-get", + Val: "/messages/1488963321701171204-1178839081222115328?poll&latest_timestamp=1686025129144", + }) } diff --git a/pkg/persistence/dm_queries.go b/pkg/persistence/dm_queries.go index d4679d2..1a26f02 100644 --- a/pkg/persistence/dm_queries.go +++ b/pkg/persistence/dm_queries.go @@ -359,7 +359,7 @@ func (p Profile) GetChatRoomContents(id DMChatRoomID, latest_timestamp int) DMCh select id, chat_room_id, sender_id, sent_at, request_id, text, in_reply_to_id, embedded_tweet_id from chat_messages where id in (`+strings.Repeat("?,", len(replied_message_ids)-1)+`?)`, - replied_message_ids...) + replied_message_ids...) if err != nil { panic(err) }