Impl new driver even if i lose arr operations

This commit is contained in:
Bel LaPointe
2020-07-23 19:49:31 -06:00
parent ef27716695
commit 99885da94f
3 changed files with 253 additions and 7 deletions

View File

@@ -2,6 +2,7 @@ package driver
import (
"context"
"fmt"
"io/ioutil"
"local/dndex/storage/entity"
"local/dndex/storage/operator"
@@ -152,11 +153,144 @@ func TestBoltDBFind(t *testing.T) {
}
func TestBoltDBUpdate(t *testing.T) {
t.Fatal("not impl")
bdb, can := tempBoltDB(t)
defer can()
ch, err := bdb.Find(context.TODO(), testNS, map[string]string{})
if err != nil {
t.Fatal(err)
}
ones := make([]entity.One, testN)
i := 0
for j := range ch {
var o entity.One
if err := bson.Unmarshal(j, &o); err != nil {
t.Fatal(err)
}
ones[i] = o
i++
}
if err := bdb.Update(context.TODO(), testNS, ones[0].Query(), operator.Set{Key: entity.Name, Value: "NEWNAME"}); err == nil {
t.Fatal(err)
}
if err := bdb.Update(context.TODO(), testNS, ones[0].Query(), operator.Set{Key: entity.Title, Value: "NEWTITLE"}); err != nil {
t.Fatal(err)
}
if n, err := bdb.count(context.TODO(), testNS, map[string]string{}); err != nil {
t.Fatal(err)
} else if n != testN {
t.Fatal(n)
}
if n, err := bdb.count(context.TODO(), testNS, map[string]string{entity.Title: "NEWTITLE"}); err != nil {
t.Fatal(err)
} else if n != 1 {
t.Fatal(n)
}
ch, err = bdb.Find(context.TODO(), testNS, ones[0].Query())
if err != nil {
t.Fatal(err)
}
i = 0
for j := range ch {
i++
o := entity.One{}
if err := bson.Unmarshal(j, &o); err != nil {
t.Fatal(err)
}
if fmt.Sprint(ones[0]) == fmt.Sprint(o) {
t.Fatal(ones[0], o)
}
ones[0].Title = ""
o.Title = ""
if fmt.Sprint(ones[0]) == fmt.Sprint(o) {
t.Fatal(ones[0], o)
}
ones[0].Modified = 0
o.Modified = 0
if fmt.Sprint(ones[0]) != fmt.Sprint(o) {
t.Fatalf("after removing fields that should differ, still not the same:\n%+v\n%+v", ones[0], o)
}
}
if i != 1 {
t.Fatal(i)
}
}
func TestBoltDBInsert(t *testing.T) {
t.Fatal("not impl")
bdb, can := tempBoltDB(t)
defer can()
ch, err := bdb.Find(context.TODO(), testNS, map[string]string{})
if err != nil {
t.Fatal(err)
}
ones := make([]entity.One, testN)
i := 0
for j := range ch {
var o entity.One
if err := bson.Unmarshal(j, &o); err != nil {
t.Fatal(err)
}
ones[i] = o
i++
}
if err := bdb.Insert(context.TODO(), testNS, ones[0]); err == nil {
t.Fatal("could insert colliding object:", err)
}
ones[0].Name = "NEWNAME"
if err := bdb.Insert(context.TODO(), testNS, ones[0]); err != nil {
t.Fatal("could not insert object with new Name:", err)
}
if n, err := bdb.count(context.TODO(), testNS, ones[0].Query()); err != nil {
t.Fatal(err)
} else if n != 1 {
t.Fatal(err)
}
ch, err = bdb.Find(context.TODO(), testNS, ones[0].Query())
if err != nil {
t.Fatal(err)
}
for i := range ch {
o := entity.One{}
if err := bson.Unmarshal(i, &o); err != nil {
t.Fatal(err)
}
if fmt.Sprint(o) == fmt.Sprint(ones[0]) {
t.Fatal(o, ones[0])
}
o.Modified = 0
for k := range ones[0].Connections {
if _, ok := o.Connections[k]; !ok {
t.Fatalf("db had fewer connections than real: %s", k)
}
}
for k := range o.Connections {
if _, ok := ones[0].Connections[k]; !ok {
t.Fatalf("db had more connections than real: %s", k)
}
c := o.Connections[k]
c.Modified = 0
o.Connections[k] = c
c = ones[0].Connections[k]
c.Modified = 0
ones[0].Connections[k] = c
}
o.Modified = 0
ones[0].Modified = 0
if fmt.Sprint(o) != fmt.Sprint(ones[0]) {
t.Fatalf("objects should match after removing modify:\n%+v\n%+v", o, ones[0])
}
}
}
func TestBoltDBDelete(t *testing.T) {