From e3c379d069ffa9661561d25cdbf2f5894a2f8ee8 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Sat, 14 Feb 2026 08:58:38 -0800 Subject: Refactor: project structure, implement dependency injection, and align v2 UI with v1 --- importer/importer_test.go | 149 ---------------------------------------------- 1 file changed, 149 deletions(-) delete mode 100644 importer/importer_test.go (limited to 'importer/importer_test.go') diff --git a/importer/importer_test.go b/importer/importer_test.go deleted file mode 100644 index 59f06f1..0000000 --- a/importer/importer_test.go +++ /dev/null @@ -1,149 +0,0 @@ -package importer - -import ( - "os" - "path/filepath" - "testing" - - "adammathes.com/neko/config" - "adammathes.com/neko/models" -) - -func setupTestDB(t *testing.T) { - t.Helper() - config.Config.DBFile = filepath.Join(t.TempDir(), "test.db") - models.InitDB() - t.Cleanup(func() { - if models.DB != nil { - models.DB.Close() - } - }) -} - -func TestInsertIItem(t *testing.T) { - setupTestDB(t) - - ii := &IItem{ - Title: "Test Article", - Url: "https://example.com/article", - Description: "A test article description", - ReadState: false, - Starred: true, - Date: &IDate{Date: "2024-01-15 10:00:00"}, - Feed: &IFeed{ - Url: "https://example.com/feed", - Title: "Example Feed", - }, - } - - InsertIItem(ii) - - // Verify the feed was created - var feedCount int - models.DB.QueryRow("SELECT COUNT(*) FROM feed").Scan(&feedCount) - if feedCount != 1 { - t.Errorf("Expected 1 feed, got %d", feedCount) - } - - // Verify the item was created - var itemCount int - models.DB.QueryRow("SELECT COUNT(*) FROM item").Scan(&itemCount) - if itemCount != 1 { - t.Errorf("Expected 1 item, got %d", itemCount) - } -} - -func TestInsertIItemNilFeed(t *testing.T) { - setupTestDB(t) - - ii := &IItem{ - Title: "No Feed Item", - Url: "https://example.com/nofeed", - Feed: nil, - } - - // Should not panic - InsertIItem(ii) - - var itemCount int - models.DB.QueryRow("SELECT COUNT(*) FROM item").Scan(&itemCount) - if itemCount != 0 { - t.Errorf("Expected 0 items (nil feed should be skipped), got %d", itemCount) - } -} - -func TestInsertIItemExistingFeed(t *testing.T) { - setupTestDB(t) - - // Insert feed first - models.DB.Exec("INSERT INTO feed(url, title) VALUES(?, ?)", "https://example.com/feed", "Existing Feed") - - ii := &IItem{ - Title: "New Article", - Url: "https://example.com/new-article", - Description: "New article desc", - Date: &IDate{Date: "2024-01-15"}, - Feed: &IFeed{ - Url: "https://example.com/feed", - Title: "Existing Feed", - }, - } - - InsertIItem(ii) - - // Should still be just 1 feed - var feedCount int - models.DB.QueryRow("SELECT COUNT(*) FROM feed").Scan(&feedCount) - if feedCount != 1 { - t.Errorf("Expected 1 feed (reuse existing), got %d", feedCount) - } -} - -func TestImportJSON(t *testing.T) { - setupTestDB(t) - - dir := t.TempDir() - jsonFile := filepath.Join(dir, "import.json") - - content := `{"title":"Article 1","url":"https://example.com/1","description":"desc1","read":false,"starred":false,"date":{"$date":"2024-01-01"},"feed":{"url":"https://example.com/feed","title":"Feed 1"}} -{"title":"Article 2","url":"https://example.com/2","description":"desc2","read":true,"starred":true,"date":{"$date":"2024-01-02"},"feed":{"url":"https://example.com/feed","title":"Feed 1"}}` - - err := os.WriteFile(jsonFile, []byte(content), 0644) - if err != nil { - t.Fatal(err) - } - - ImportJSON(jsonFile) - - var itemCount int - models.DB.QueryRow("SELECT COUNT(*) FROM item").Scan(&itemCount) - if itemCount != 2 { - t.Errorf("Expected 2 items after import, got %d", itemCount) - } - - var feedCount int - models.DB.QueryRow("SELECT COUNT(*) FROM feed").Scan(&feedCount) - if feedCount != 1 { - t.Errorf("Expected 1 feed after import, got %d", feedCount) - } -} - -func TestImportJSONInvalid(t *testing.T) { - setupTestDB(t) - dir := t.TempDir() - jsonFile := filepath.Join(dir, "invalid.json") - os.WriteFile(jsonFile, []byte("not json"), 0644) - - err := ImportJSON(jsonFile) - if err == nil { - t.Error("ImportJSON should error on invalid JSON") - } -} - -func TestImportJSONNonexistent(t *testing.T) { - setupTestDB(t) - err := ImportJSON("/nonexistent/file.json") - if err == nil { - t.Error("ImportJSON should error on nonexistent file") - } -} -- cgit v1.2.3