summaryrefslogtreecommitdiff
path: root/internal/post/post_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/post/post_test.go')
-rw-r--r--internal/post/post_test.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/internal/post/post_test.go b/internal/post/post_test.go
index 7283afd..68d5d64 100644
--- a/internal/post/post_test.go
+++ b/internal/post/post_test.go
@@ -1,6 +1,8 @@
package post
import (
+ "os"
+ "path/filepath"
"testing"
"time"
)
@@ -53,3 +55,49 @@ func TestNewID(t *testing.T) {
})
}
}
+
+func TestSave_roundTrip(t *testing.T) {
+ t.Parallel()
+
+ dir := t.TempDir()
+ p := &Post{
+ ID: "2026-01-01-120000",
+ Timestamp: time.Date(2026, 1, 1, 12, 0, 0, 0, time.UTC),
+ PostType: TypeText,
+ Content: "<p>x</p>",
+ }
+
+ if err := p.Save(dir); err != nil {
+ t.Fatalf("Save: %v", err)
+ }
+
+ got, err := Load(dir)
+ if err != nil {
+ t.Fatalf("Load: %v", err)
+ }
+ if got.ID != p.ID || got.Content != p.Content || got.PostType != p.PostType {
+ t.Fatalf("got %+v; want %+v", got, p)
+ }
+}
+
+func TestLoad_missingFile(t *testing.T) {
+ t.Parallel()
+
+ _, err := Load(t.TempDir())
+ if err == nil {
+ t.Fatal("expected error")
+ }
+}
+
+func TestLoad_invalidJSON(t *testing.T) {
+ t.Parallel()
+
+ dir := t.TempDir()
+ if err := os.WriteFile(filepath.Join(dir, "post.json"), []byte("{"), 0o644); err != nil {
+ t.Fatal(err)
+ }
+ _, err := Load(dir)
+ if err == nil {
+ t.Fatal("expected error")
+ }
+}