Impl new driver even if i lose arr operations
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user