Select Git revision
data_test.go 11.25 KiB
package data
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func TestDelete(t *testing.T) {
var uninitializedMap map[string]any
tests := []struct {
name string
in interface{}
field string
out interface{}
}{
{
"simple",
map[string]interface{}{"a": "1", "z": "2"},
"a",
map[string]interface{}{"z": "2"},
},
{
"object",
map[string]interface{}{"a": map[string]interface{}{"a": "1", "z": "2"}},
"a",
map[string]interface{}{},
},
{
"object field",
map[string]interface{}{"a": map[string]interface{}{"a": "1", "z": "2"}},
"a.a",
map[string]interface{}{"a": map[string]interface{}{"z": "2"}},
},
{
"object field from map with array",
map[string]interface{}{"a": []interface{}{
map[string]interface{}{"a": "1", "b": "2"},
map[string]interface{}{"a": "3", "b": "4"},
}, "z": "2"},
"a.a",
map[string]interface{}{"a": []interface{}{
map[string]interface{}{"b": "2"},
map[string]interface{}{"b": "4"},
}, "z": "2"},
},
{
"object field from map with array of arrays",
map[string]interface{}{"a": []interface{}{
[]interface{}{
map[string]interface{}{"a": "1", "b": "2"},
}, []interface{}{
map[string]interface{}{"a": "3", "b": "4"},
},
}, "z": "2"},
"a.a",
map[string]interface{}{"a": []interface{}{
[]interface{}{
map[string]interface{}{"b": "2"},
}, []interface{}{
map[string]interface{}{"b": "4"},
},
}, "z": "2"},
},
{
"object from uninitialized map",
uninitializedMap,
"a",