Update storage to new object format
This commit is contained in:
65
storage/operator/modify_test.go
Normal file
65
storage/operator/modify_test.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package operator
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
func TestModify(t *testing.T) {
|
||||
cases := map[string]struct {
|
||||
marshalme interface{}
|
||||
key1 string
|
||||
key2 string
|
||||
want interface{}
|
||||
}{
|
||||
"unset": {
|
||||
marshalme: Unset("field"),
|
||||
key1: "field",
|
||||
key2: "$unset",
|
||||
want: nil,
|
||||
},
|
||||
"popif": {
|
||||
marshalme: PopIf{Key: "field", Filter: "world"},
|
||||
key1: "$pull",
|
||||
key2: "field",
|
||||
want: "world",
|
||||
},
|
||||
"popif map": {
|
||||
marshalme: PopIf{Key: "field", Filter: map[string]string{"world": "jk"}},
|
||||
key1: "$pull",
|
||||
key2: "field",
|
||||
want: map[string]string{"world": "jk"},
|
||||
},
|
||||
"set": {
|
||||
marshalme: Set{Key: "field", Value: "value"},
|
||||
key1: "$set",
|
||||
key2: "field",
|
||||
want: "value",
|
||||
},
|
||||
"push": {
|
||||
marshalme: Push{Key: "field", Value: "value"},
|
||||
key1: "$push",
|
||||
key2: "field",
|
||||
want: "value",
|
||||
},
|
||||
}
|
||||
|
||||
for name, d := range cases {
|
||||
c := d
|
||||
t.Run(name, func(t *testing.T) {
|
||||
var v map[string]map[string]interface{}
|
||||
if b, err := bson.Marshal(c.marshalme); err != nil {
|
||||
t.Error(err)
|
||||
} else if err := bson.Unmarshal(b, &v); err != nil {
|
||||
t.Error(err)
|
||||
} else if got := v[c.key1][c.key2]; fmt.Sprint(got) != fmt.Sprint(c.want) {
|
||||
a, _ := json.Marshal(got)
|
||||
b, _ := json.Marshal(v)
|
||||
t.Errorf("want [%s][%s] = %v, got %s from %s", c.key1, c.key2, c.want, string(a), string(b))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user