diff options
| author | ivar <i@oiee.no> | 2026-04-04 16:08:50 +0200 |
|---|---|---|
| committer | ivar <i@oiee.no> | 2026-04-04 16:08:50 +0200 |
| commit | d239993644aae8c29d5fc37e8c6209850140807c (patch) | |
| tree | 698cdee4cebda9d259fea0822bfa52926f803020 /internal/db/posts_test.go | |
| parent | 3b3ca0ce18ed13fca9a7f81229ba0b05957afab0 (diff) | |
| download | nebbet.no-d239993644aae8c29d5fc37e8c6209850140807c.tar.xz nebbet.no-d239993644aae8c29d5fc37e8c6209850140807c.zip | |
feat: add redirect DB methods (AddRedirect, GetRedirect, CollapseRedirects)
Diffstat (limited to 'internal/db/posts_test.go')
| -rw-r--r-- | internal/db/posts_test.go | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/internal/db/posts_test.go b/internal/db/posts_test.go new file mode 100644 index 0000000..ec596c3 --- /dev/null +++ b/internal/db/posts_test.go @@ -0,0 +1,80 @@ +package db + +import ( + "database/sql" + "testing" +) + +func openTestDB(t *testing.T) *MetaDB { + t.Helper() + m, err := OpenMeta(":memory:") + if err != nil { + t.Fatalf("open test db: %v", err) + } + t.Cleanup(func() { m.Close() }) + return m +} + +func TestAddAndGetRedirect(t *testing.T) { + m := openTestDB(t) + + if err := m.AddRedirect("old-slug", "new-slug"); err != nil { + t.Fatalf("AddRedirect: %v", err) + } + + got, err := m.GetRedirect("old-slug") + if err != nil { + t.Fatalf("GetRedirect: %v", err) + } + if got != "new-slug" { + t.Errorf("got %q, want %q", got, "new-slug") + } +} + +func TestGetRedirect_NotFound(t *testing.T) { + m := openTestDB(t) + + _, err := m.GetRedirect("missing") + if err != sql.ErrNoRows { + t.Errorf("expected sql.ErrNoRows, got %v", err) + } +} + +func TestCollapseRedirects(t *testing.T) { + m := openTestDB(t) + + // a -> b, then b -> c: collapse should make a -> c + if err := m.AddRedirect("a", "b"); err != nil { + t.Fatalf("AddRedirect: %v", err) + } + if err := m.CollapseRedirects("b", "c"); err != nil { + t.Fatalf("CollapseRedirects: %v", err) + } + + got, err := m.GetRedirect("a") + if err != nil { + t.Fatalf("GetRedirect: %v", err) + } + if got != "c" { + t.Errorf("got %q, want %q", got, "c") + } +} + +func TestAddRedirect_Upsert(t *testing.T) { + m := openTestDB(t) + + if err := m.AddRedirect("old", "first"); err != nil { + t.Fatalf("AddRedirect first: %v", err) + } + if err := m.AddRedirect("old", "second"); err != nil { + t.Fatalf("AddRedirect second: %v", err) + } + + got, err := m.GetRedirect("old") + if err != nil { + t.Fatalf("GetRedirect: %v", err) + } + if got != "second" { + t.Errorf("got %q, want %q", got, "second") + } +} |
