package storage import ( "path/filepath" "testing" ) func TestSnapshotWithBlobs(t *testing.T) { s := newTestStore(t) r := sampleReceipt(firstCategoryID(t, s)) if err := s.Insert(r); err != nil { t.Fatal(err) } dest := filepath.Join(t.TempDir(), "snap.db") if err := s.SnapshotTo(dest, true); err != nil { t.Fatalf("SnapshotTo: %v", err) } snap, err := Open(dest) if err != nil { t.Fatal(err) } defer snap.Close() got, err := snap.Get(r.ID) if err != nil { t.Fatal(err) } if string(got.ImageData) != string(r.ImageData) { t.Errorf("blob not preserved: got %q", got.ImageData) } } func TestSnapshotWithoutBlobs(t *testing.T) { s := newTestStore(t) r := sampleReceipt(firstCategoryID(t, s)) if err := s.Insert(r); err != nil { t.Fatal(err) } dest := filepath.Join(t.TempDir(), "snap-noblob.db") if err := s.SnapshotTo(dest, false); err != nil { t.Fatalf("SnapshotTo: %v", err) } snap, err := Open(dest) if err != nil { t.Fatal(err) } defer snap.Close() // Metadata row survives, but the blob is stripped. n, err := snap.CountActive() if err != nil { t.Fatal(err) } if n != 1 { t.Errorf("CountActive = %d, want 1 (metadata should survive)", n) } got, err := snap.Get(r.ID) if err != nil { t.Fatal(err) } if len(got.ImageData) != 0 { t.Errorf("blob not stripped: got %d bytes", len(got.ImageData)) } if got.AmountCents != r.AmountCents { t.Errorf("metadata lost: amount = %d, want %d", got.AmountCents, r.AmountCents) } }