From 6fa13a06411048f3217397f4285b3e64e7b9ee58 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Sat, 14 Feb 2026 09:42:14 -0800 Subject: feature: implement full OPML and Text import/export (fixing NK-r6nhj0) --- internal/importer/import_format_test.go | 97 +++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 internal/importer/import_format_test.go (limited to 'internal/importer/import_format_test.go') diff --git a/internal/importer/import_format_test.go b/internal/importer/import_format_test.go new file mode 100644 index 0000000..9176383 --- /dev/null +++ b/internal/importer/import_format_test.go @@ -0,0 +1,97 @@ +package importer + +import ( + "strings" + "testing" + + "path/filepath" + + "adammathes.com/neko/config" + "adammathes.com/neko/models" + "adammathes.com/neko/models/feed" +) + +func TestImportOPML(t *testing.T) { + config.Config.DBFile = filepath.Join(t.TempDir(), "test.db") + models.InitDB() + defer models.DB.Close() + + opmlContent := ` + + + testing import + + + + + + + + +` + + err := ImportOPML(strings.NewReader(opmlContent)) + if err != nil { + t.Fatalf("ImportOPML failed: %v", err) + } + + feeds, err := feed.All() + if err != nil { + t.Fatal(err) + } + + if len(feeds) != 3 { + t.Errorf("Expected 3 feeds, got %d", len(feeds)) + } + + foundArs := false + foundXKCD := false + for _, f := range feeds { + if f.Url == "https://arstechnica.com/feed/" { + foundArs = true + if f.Category != "Tech" { + t.Errorf("Expected category 'Tech' for Ars, got %q", f.Category) + } + } + if f.Url == "https://xkcd.com/rss.xml" { + foundXKCD = true + if f.Category != "" { + t.Errorf("Expected empty category for XKCD, got %q", f.Category) + } + } + } + + if !foundArs { + t.Error("Did not find Ars Technica in imported feeds") + } + if !foundXKCD { + t.Error("Did not find XKCD in imported feeds") + } +} + +func TestImportText(t *testing.T) { + config.Config.DBFile = filepath.Join(t.TempDir(), "test.db") + models.InitDB() + defer models.DB.Close() + + textContent := ` +https://example.com/feed1 +# comment +https://example.com/feed2 + https://example.com/feed3 +` + + err := ImportText(strings.NewReader(textContent)) + if err != nil { + t.Fatalf("ImportText failed: %v", err) + } + + feeds, err := feed.All() + if err != nil { + t.Fatal(err) + } + + if len(feeds) != 3 { + t.Errorf("Expected 3 feeds, got %d", len(feeds)) + } +} -- cgit v1.2.3