package core import ( "fmt" "slices" "testing" _ "github.com/mattn/go-sqlite3" ) func TestCreateSource(t *testing.T) { db := EphemeralDb(t) if err := AddSource(db, "one"); err != nil { t.Fatal(err) } if err := AddSource(db, "two"); err != nil { t.Fatal(err) } if err := AddSource(db, "three"); err != nil { t.Fatal(err) } if err := DeleteSource(db, "two"); err != nil { t.Fatal(err) } names, err := GetSources(db) if err != nil { t.Fatal(err) } expected := []string{"one", "three"} for i := 0; i < len(expected); i += 1 { if !slices.Contains(names, expected[i]) { t.Fatalf("missing %s, have: %v", expected[i], names) } } } func AssertItemIs(t *testing.T, item Item, expected string) { actual := fmt.Sprintf( "%s/%s/%t/%s/%s/%s/%s/%d", item.Source, item.Id, item.Active, item.Title, item.Author, item.Body, item.Link, item.Time, ) if actual != expected { t.Fatalf("expected %s, got %s", expected, actual) } } func TestAddItem(t *testing.T) { db := EphemeralDb(t) if err := AddSource(db, "test"); err != nil { t.Fatal(err) } if err := AddItem(db, "test", "one", "", "", "", "", 0); err != nil { t.Fatal(err) } if err := AddItem(db, "test", "two", "title", "author", "body", "link", 123456); err != nil { t.Fatal(err) } items, err := GetActiveItemsForSource(db, "test") if err != nil { t.Fatal(err) } if len(items) != 2 { t.Fatal("should get two items") } AssertItemIs(t, items[0], "test/one/true/////0") AssertItemIs(t, items[1], "test/two/true/title/author/body/link/123456") if _, err = DeactivateItem(db, "test", "one"); err != nil { t.Fatal(err) } items, err = GetActiveItemsForSource(db, "test") if err != nil { t.Fatal(err) } if len(items) != 1 { t.Fatal("should get one item") } }