diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-05 00:03:11 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-05 00:03:45 +0900 |
| commit | 3f87e9a4d522d9b2d003b9eb2bb610dc164dae08 (patch) | |
| tree | 8daa034bf2ca65982738f84ff3ece9baefa969ba /db_test.go | |
| parent | 05a77ee41ebe35a38763ff9722357fa76d988a36 (diff) | |
| download | nilink-3f87e9a4d522d9b2d003b9eb2bb610dc164dae08.tar.gz nilink-3f87e9a4d522d9b2d003b9eb2bb610dc164dae08.tar.zst nilink-3f87e9a4d522d9b2d003b9eb2bb610dc164dae08.zip | |
add files
Diffstat (limited to 'db_test.go')
| -rw-r--r-- | db_test.go | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/db_test.go b/db_test.go new file mode 100644 index 0000000..5a9377d --- /dev/null +++ b/db_test.go @@ -0,0 +1,75 @@ +package main + +import ( + "database/sql" + "testing" +) + +func testDB(t *testing.T) *sql.DB { + t.Helper() + db, err := openDB(":memory:") + if err != nil { + t.Fatalf("openDB: %v", err) + } + t.Cleanup(func() { db.Close() }) + return db +} + +func TestInsertAndGet(t *testing.T) { + db := testDB(t) + id, err := insertLink(db, "https://example.com") + if err != nil { + t.Fatalf("insertLink: %v", err) + } + url, err := getURL(db, id) + if err != nil { + t.Fatalf("getURL: %v", err) + } + if url != "https://example.com" { + t.Errorf("getURL = %q, want %q", url, "https://example.com") + } +} + +func TestDeleteThenGet(t *testing.T) { + db := testDB(t) + id, err := insertLink(db, "https://example.com") + if err != nil { + t.Fatalf("insertLink: %v", err) + } + if err := deleteLink(db, id); err != nil { + t.Fatalf("deleteLink: %v", err) + } + if _, err := getURL(db, id); err == nil { + t.Error("getURL after delete should fail") + } +} + +func TestListLinks(t *testing.T) { + db := testDB(t) + insertLink(db, "https://a.com") + insertLink(db, "https://b.com") + links, err := listLinks(db) + if err != nil { + t.Fatalf("listLinks: %v", err) + } + if len(links) != 2 { + t.Fatalf("listLinks returned %d rows, want 2", len(links)) + } + if links[0].URL != "https://a.com" || links[1].URL != "https://b.com" { + t.Errorf("unexpected URLs: %v", links) + } +} + +func TestGetNotFound(t *testing.T) { + db := testDB(t) + if _, err := getURL(db, 999); err == nil { + t.Error("getURL(999) should fail") + } +} + +func TestDeleteNotFound(t *testing.T) { + db := testDB(t) + if err := deleteLink(db, 999); err == nil { + t.Error("deleteLink(999) should fail") + } +} |
