From cf430d5d9cec0bce1f448bdc1baf7f00195cca95 Mon Sep 17 00:00:00 2001 From: porosnicuadrian Date: Tue, 15 Sep 2020 16:45:32 +0300 Subject: [PATCH] Updated chargerscfg AsMapInterface method --- config/chargerscfg.go | 47 +++++++++++++----------- config/chargerscfg_test.go | 73 +++++++++++++++++++++++--------------- 2 files changed, 71 insertions(+), 49 deletions(-) diff --git a/config/chargerscfg.go b/config/chargerscfg.go index 07269f6de..e536e60ee 100644 --- a/config/chargerscfg.go +++ b/config/chargerscfg.go @@ -83,36 +83,43 @@ func (cS *ChargerSCfg) loadFromJsonCfg(jsnCfg *ChargerSJsonCfg) (err error) { return } -func (cS *ChargerSCfg) AsMapInterface() map[string]interface{} { - attributeSConns := make([]string, len(cS.AttributeSConns)) - for i, item := range cS.AttributeSConns { - buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes) - if item == buf { - attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString) - } else { - attributeSConns[i] = item - } +func (cS *ChargerSCfg) AsMapInterface() (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ + utils.EnabledCfg: cS.Enabled, + utils.IndexedSelectsCfg: cS.IndexedSelects, + utils.NestedFieldsCfg: cS.NestedFields, + } + if cS.AttributeSConns != nil { + attributeSConns := make([]string, len(cS.AttributeSConns)) + for i, item := range cS.AttributeSConns { + if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes) { + attributeSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaAttributes, utils.EmptyString) + } else { + attributeSConns[i] = item + } + } + initialMP[utils.AttributeSConnsCfg] = attributeSConns } - stringIndexedFields := []string{} if cS.StringIndexedFields != nil { - stringIndexedFields = make([]string, len(*cS.StringIndexedFields)) + stringIndexedFields := make([]string, len(*cS.StringIndexedFields)) for i, item := range *cS.StringIndexedFields { stringIndexedFields[i] = item } + initialMP[utils.StringIndexedFieldsCfg] = stringIndexedFields } - prefixIndexedFields := []string{} if cS.PrefixIndexedFields != nil { - prefixIndexedFields = make([]string, len(*cS.PrefixIndexedFields)) + prefixIndexedFields := make([]string, len(*cS.PrefixIndexedFields)) for i, item := range *cS.PrefixIndexedFields { prefixIndexedFields[i] = item } + initialMP[utils.PrefixIndexedFieldsCfg] = prefixIndexedFields } - return map[string]interface{}{ - utils.EnabledCfg: cS.Enabled, - utils.IndexedSelectsCfg: cS.IndexedSelects, - utils.AttributeSConnsCfg: attributeSConns, - utils.StringIndexedFieldsCfg: stringIndexedFields, - utils.PrefixIndexedFieldsCfg: prefixIndexedFields, - utils.NestedFieldsCfg: cS.NestedFields, + if cS.SuffixIndexedFields != nil { + sufixIndexedFields := make([]string, len(*cS.SuffixIndexedFields)) + for i, item := range *cS.SuffixIndexedFields { + sufixIndexedFields[i] = item + } + initialMP[utils.SuffixIndexedFieldsCfg] = sufixIndexedFields } + return } diff --git a/config/chargerscfg_test.go b/config/chargerscfg_test.go index 396b7ce09..37874c711 100644 --- a/config/chargerscfg_test.go +++ b/config/chargerscfg_test.go @@ -61,7 +61,6 @@ func TestChargerSCfgloadFromJsonCfg(t *testing.T) { } func TestChargerSCfgAsMapInterface(t *testing.T) { - var chgscfg ChargerSCfg cfgJSONStr := `{ "chargers": { "enabled": false, @@ -72,24 +71,22 @@ func TestChargerSCfgAsMapInterface(t *testing.T) { }, }` eMap := map[string]interface{}{ - "enabled": false, - "attributes_conns": []string{}, - "indexed_selects": true, - "prefix_indexed_fields": []string{}, - "nested_fields": false, - "string_indexed_fields": []string{}, + utils.EnabledCfg: false, + utils.AttributeSConnsCfg: []string{}, + utils.IndexedSelectsCfg: true, + utils.PrefixIndexedFieldsCfg: []string{}, + utils.NestedFieldsCfg: false, + utils.SuffixIndexedFieldsCfg: []string{}, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if jsnChgCfg, err := jsnCfg.ChargerServJsonCfg(); err != nil { - t.Error(err) - } else if err = chgscfg.loadFromJsonCfg(jsnChgCfg); err != nil { - t.Error(err) - } else if rcv := chgscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.chargerSCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected %+v, recieved %+v", eMap, rcv) } +} - cfgJSONStr = `{ +func TestChargerSCfgAsMapInterface1(t *testing.T) { + cfgJSONStr := `{ "chargers": { "enabled": false, "attributes_conns": ["*internal"], @@ -98,21 +95,39 @@ func TestChargerSCfgAsMapInterface(t *testing.T) { "nested_fields": false, }, }` - eMap = map[string]interface{}{ - "enabled": false, - "attributes_conns": []string{"*internal"}, - "indexed_selects": true, - "prefix_indexed_fields": []string{}, - "nested_fields": false, - "string_indexed_fields": []string{}, + eMap := map[string]interface{}{ + utils.EnabledCfg: false, + utils.AttributeSConnsCfg: []string{"*internal"}, + utils.IndexedSelectsCfg: true, + utils.PrefixIndexedFieldsCfg: []string{}, + utils.NestedFieldsCfg: false, + utils.SuffixIndexedFieldsCfg: []string{}, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if jsnChgCfg, err := jsnCfg.ChargerServJsonCfg(); err != nil { - t.Error(err) - } else if err = chgscfg.loadFromJsonCfg(jsnChgCfg); err != nil { - t.Error(err) - } else if rcv := chgscfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.chargerSCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) { + t.Errorf("Expected %+v, recieved %+v", eMap, rcv) + } +} + +func TestChargerSCfgAsMapInterface2(t *testing.T) { + cfgJSONStr := `{ + "chargers": { + "prefix_indexed_fields": ["*req.DestinationPrefix"], + "suffix_indexed_fields": ["*req.Field1","*req.Field2","*req.Field3"], + }, +}` + eMap := map[string]interface{}{ + utils.EnabledCfg: false, + utils.AttributeSConnsCfg: []string{}, + utils.IndexedSelectsCfg: true, + utils.PrefixIndexedFieldsCfg: []string{"*req.DestinationPrefix"}, + utils.NestedFieldsCfg: false, + utils.SuffixIndexedFieldsCfg: []string{"*req.Field1", "*req.Field2", "*req.Field3"}, + } + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { + t.Error(err) + } else if rcv := cgrCfg.chargerSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v, received %+v", eMap, rcv) } }