dndex/storage/entity/one_test.go

81 lines
1.5 KiB
Go

package entity
import (
"fmt"
"testing"
"go.mongodb.org/mongo-driver/bson"
)
func TestOne(t *testing.T) {
one := One{
ID: "myname",
Type: "mytype",
}
q := one.Query()
if want := fmt.Sprint(bson.M{ID: one.ID}); want != fmt.Sprint(q) {
t.Error(want, q)
}
}
func TestOneMarshalBSON(t *testing.T) {
cases := map[string]struct {
sameAsQuery bool
one interface{}
}{
"query no modified change": {
sameAsQuery: true,
one: (One{Name: "hello", Type: "world", Modified: 1}).Query(),
},
"modified changes": {
one: One{Name: "hello", Type: "world", Modified: 1},
},
"w/ connections": {
one: One{Name: "hello", Type: "world", Modified: 1, Connections: map[string]Connection{"hi": Connection{Relationship: "mom"}}},
},
"w/ attachments": {
one: One{Name: "hello", Type: "world", Modified: 1, Attachments: map[string]Attachment{"hello": Attachment{"/world"}}},
},
}
for name, d := range cases {
c := d
t.Run(name, func(t *testing.T) {
b, err := bson.Marshal(c.one)
if err != nil {
t.Fatal(err)
}
one := One{}
if err := bson.Unmarshal(b, &one); err != nil {
t.Fatal(err)
}
if !c.sameAsQuery {
if one.Modified < 2 {
t.Error(one.Modified)
}
}
})
}
}
func TestToFromBytes(t *testing.T) {
o := One{
Name: "hello",
Connections: map[string]Connection{
"world": Connection{Relationship: "!"},
},
}
b, err := o.toBytes()
if err != nil {
t.Fatal(err)
}
var v interface{}
if err := fromBytes(b, &v); err != nil {
t.Fatal(err)
}
t.Log(v)
}