first commit
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package dream
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestReportJSONTags(t *testing.T) {
|
||||
r := Report{
|
||||
Merged: 1,
|
||||
Deduped: 2,
|
||||
PathsCleaned: 3,
|
||||
Pruned: 4,
|
||||
Distilled: 5,
|
||||
BytesBefore: 100,
|
||||
BytesAfter: 80,
|
||||
FilesBefore: 10,
|
||||
FilesAfter: 9,
|
||||
DryRun: true,
|
||||
Notes: []string{"pruned stale entry"},
|
||||
}
|
||||
r.Reconciled.Indexed = 6
|
||||
r.Reconciled.Pruned = 7
|
||||
|
||||
data, err := json.Marshal(r)
|
||||
if err != nil {
|
||||
t.Fatalf("marshal: %v", err)
|
||||
}
|
||||
var m map[string]any
|
||||
if err := json.Unmarshal(data, &m); err != nil {
|
||||
t.Fatalf("unmarshal: %v", err)
|
||||
}
|
||||
for _, key := range []string{
|
||||
"merged", "deduped", "paths_cleaned", "pruned", "distilled",
|
||||
"bytes_before", "bytes_after", "files_before", "files_after",
|
||||
"dry_run", "notes", "reconciled",
|
||||
} {
|
||||
if _, ok := m[key]; !ok {
|
||||
t.Errorf("missing JSON key %q in %s", key, data)
|
||||
}
|
||||
}
|
||||
rec, ok := m["reconciled"].(map[string]any)
|
||||
if !ok {
|
||||
t.Fatalf("reconciled not an object: %v", m["reconciled"])
|
||||
}
|
||||
if _, ok := rec["indexed"]; !ok {
|
||||
t.Errorf("reconciled.indexed missing: %v", rec)
|
||||
}
|
||||
if _, ok := rec["pruned"]; !ok {
|
||||
t.Errorf("reconciled.pruned missing: %v", rec)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReportZeroValueOmitsNotes(t *testing.T) {
|
||||
data, err := json.Marshal(Report{})
|
||||
if err != nil {
|
||||
t.Fatalf("marshal: %v", err)
|
||||
}
|
||||
var m map[string]any
|
||||
if err := json.Unmarshal(data, &m); err != nil {
|
||||
t.Fatalf("unmarshal: %v", err)
|
||||
}
|
||||
if _, ok := m["notes"]; ok {
|
||||
t.Errorf("empty notes should be omitted, got %s", data)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user