package store import ( "path/filepath" "testing" ) func TestShareCreate(t *testing.T) { dir := t.TempDir() s, err := Open(filepath.Join(dir, "test.db")) if err != nil { t.Fatal(err) } defer s.Close() f := &File{ ID: "file-1", OriginalName: "doc.pdf", StorageName: "uuid-1", Dir: "inbox", Size: 2048, CreatedAt: 1750000000, } if err := s.FileCreate(f); err != nil { t.Fatal(err) } share := &Share{ ID: "share-1", FileID: "file-1", Token: "token-abc", CreatedAt: 1750000000, } if err := s.ShareCreate(share); err != nil { t.Fatalf("ShareCreate failed: %v", err) } got, err := s.ShareGetByToken("token-abc") if err != nil { t.Fatalf("ShareGetByToken failed: %v", err) } if got.FileID != "file-1" { t.Errorf("FileID = %q, want %q", got.FileID, "file-1") } } func TestFileDeleteCascadesShares(t *testing.T) { dir := t.TempDir() s, err := Open(filepath.Join(dir, "test.db")) if err != nil { t.Fatal(err) } defer s.Close() f := &File{ID: "file-2", OriginalName: "x.pdf", StorageName: "uuid-2", Dir: "inbox", Size: 100, CreatedAt: 1750000000} s.FileCreate(f) sh := &Share{ID: "share-2", FileID: "file-2", Token: "tok-2", CreatedAt: 1750000000} s.ShareCreate(sh) if err := s.FileDelete("file-2"); err != nil { t.Fatal(err) } _, err = s.ShareGetByToken("tok-2") if err == nil { t.Error("Share should be deleted after file deletion") } }