From 21b4eec6c1e096573bcd5f2079bc21e23a960621 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Fri, 13 Feb 2026 18:43:03 -0800 Subject: refactor(backend): improve testability and add tests (NK-6q9nyg) --- crawler/crawler_test.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'crawler/crawler_test.go') diff --git a/crawler/crawler_test.go b/crawler/crawler_test.go index f0cff9a..e0c4c6b 100644 --- a/crawler/crawler_test.go +++ b/crawler/crawler_test.go @@ -1,8 +1,10 @@ package crawler import ( + "log" "net/http" "net/http/httptest" + "strings" "testing" "adammathes.com/neko/config" @@ -231,3 +233,46 @@ func TestCrawl(t *testing.T) { t.Errorf("Expected 1 item after crawl, got %d", count) } } + +func TestCrawlFeedWithExtensions(t *testing.T) { + setupTestDB(t) + + rssContent := ` + + + Extension Feed + + Extension Article + https://example.com/ext + Short description + + + +` + + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(200) + w.Write([]byte(rssContent)) + })) + defer ts.Close() + + f := &feed.Feed{Url: ts.URL, Title: "Extension Test"} + f.Create() + + ch := make(chan string, 1) + CrawlFeed(f, ch) + <-ch + + var itemTitle, itemDesc string + err := models.DB.QueryRow("SELECT title, description FROM item WHERE feed_id = ?", f.Id).Scan(&itemTitle, &itemDesc) + if err != nil { + log.Fatal(err) + } + + if itemTitle != "Extension Article" { + t.Errorf("Expected title 'Extension Article', got %q", itemTitle) + } + if !strings.Contains(itemDesc, "Much longer content") { + t.Errorf("Expected description to contain encoded content, got %q", itemDesc) + } +} -- cgit v1.2.3