notea-de-me/spike/review/reinvent/ezmded/server/tree_test.go

75 lines
1.6 KiB
Go

package main
import (
"encoding/json"
"fmt"
"testing"
)
func TestTreeDel(t *testing.T) {
tree := NewTree(t.TempDir())
if err := tree.Put(ID("id"), Leaf{}); err != nil {
t.Fatal(err)
}
if err := tree.Put(ID("id/subid"), Leaf{}); err != nil {
t.Fatal(err)
}
if err := tree.Del(ID("id")); err != nil {
t.Fatal(err)
} else if got, err := tree.Get(ID("id")); err != nil {
t.Fatal(err)
} else if !got.Deleted {
t.Fatal(got)
}
if root, err := tree.GetRoot(); err != nil {
t.Fatal(err)
} else if len(root.Branches) != 0 {
t.Fatal(root.Branches)
}
if root, err := tree.getRoot(false, true); err != nil {
t.Fatal(err)
} else if len(root.Branches) != 1 {
t.Fatal(root.Branches)
}
}
func TestTreeCrud(t *testing.T) {
tree := NewTree(t.TempDir())
if m, err := tree.GetRoot(); err != nil {
t.Fatal(err)
} else if m.Branches == nil {
t.Fatal(m)
}
if err := tree.Del(ID("id")); err != nil {
t.Fatal(err)
}
want := Leaf{
Title: "leaf title",
Deleted: false,
Content: "leaf content",
}
if err := tree.Put(ID("id"), want); err != nil {
t.Fatal(err)
} else if l, err := tree.Get(ID("id")); err != nil {
t.Fatal(err)
} else if l != want {
t.Fatal(want, l)
}
if withContent, err := tree.GetRoot(); err != nil {
t.Fatal(err)
} else if withoutContent, err := tree.GetRootMeta(); err != nil {
t.Fatal(err)
} else if fmt.Sprint(withContent) == fmt.Sprint(withoutContent) {
with, _ := json.MarshalIndent(withContent, "", " ")
without, _ := json.MarshalIndent(withoutContent, "", " ")
t.Fatalf("without content == with content: \n\twith=%s\n\twout=%s", with, without)
}
}