main pico / pkg / apps / pastes / db_test.go
Antonio Mika  ·  2026-10-10
 1package pastes
 2
 3import (
 4	"log/slog"
 5	"testing"
 6	"time"
 7
 8	"github.com/picosh/pico/pkg/db"
 9	"github.com/picosh/pico/pkg/db/postgres"
10	"github.com/picosh/pico/pkg/db/postgres/pgtest"
11)
12
13var testDB *PsqlDB
14
15func TestMain(m *testing.M) {
16	pgtest.Main(m)
17}
18
19func cleanupTestData(t *testing.T) {
20	t.Helper()
21	if testDB == nil {
22		testDB = NewDB(postgres.NewDB(pgtest.URL(t), slog.New(slog.DiscardHandler)))
23	}
24	pgtest.Clean(t, testDB.Db)
25}
26
27func mustInsertPost(t *testing.T, post *db.Post) *db.Post {
28	t.Helper()
29	return pgtest.InsertPost(t, testDB, post)
30}
31
32func TestFindExpiredPosts(t *testing.T) {
33	cleanupTestData(t)
34
35	user, _ := testDB.RegisterUser("expiredpostowner", "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI expiredpostowner", "comment", "")
36
37	expired := time.Now().Add(-24 * time.Hour)
38	_ = mustInsertPost(t, &db.Post{
39		UserID:    user.ID,
40		Filename:  "expired.txt",
41		Slug:      "expired",
42		Title:     "Expired",
43		Space:     "pastes",
44		ExpiresAt: &expired,
45	})
46
47	posts, err := testDB.FindExpiredPosts("pastes")
48	if err != nil {
49		t.Fatalf("FindExpiredPosts failed: %v", err)
50	}
51	if len(posts) != 1 {
52		t.Errorf("expected 1 expired post, got %d", len(posts))
53	}
54}