package query import ( "dim/types" "testing" ) func TestFieldListToSelect(t *testing.T) { tests := []struct { table string names types.FieldList mapping map[string]string out string }{ {"foo", types.NewFieldList("name"), map[string]string{"name": "name"}, "name as name"}, { "foo", types.NewFieldList("foo", "bar", "baz"), map[string]string{"foo": "c.foo", "bar": "b.bar"}, "b.bar as bar,foo.attributes->'baz' as baz,c.foo as foo", }, { "foo", types.NewFieldList("subnets", "vlan", "name"), map[string]string{"subnets": "s.subnets", "vlan": "vlan.vlan_id", "name": "p.name"}, "p.name as name,s.subnets as subnets,vlan.vlan_id as vlan", }, } for _, test := range tests { out := FieldListToSelect(test.table, test.names, test.mapping) if out != test.out { t.Errorf("expected `%s`, got `%s`", test.out, out) } } } func TestNameToAttrPath(t *testing.T) { tests := []struct { table string in string out string }{ {"zoo", "foo", `zoo.attributes->'foo'`}, {"zoo", "foo.bar", `zoo.attributes->'foo'->'bar'`}, {"zoo", "", `zoo.attributes`}, } for _, test := range tests { out := nameToAttrPath(test.table, test.in) if test.out != out { t.Errorf("expected `%s`, got `%s`", test.out, out) } } }