diff --git a/config/stordbcfg_test.go b/config/stordbcfg_test.go index 01dd7acae..c63bcdbf3 100644 --- a/config/stordbcfg_test.go +++ b/config/stordbcfg_test.go @@ -143,9 +143,6 @@ func TestStoreDbCfgloadFromJsonCfgPort(t *testing.T) { } func TestStorDbCfgAsMapInterface(t *testing.T) { - var dbcfg StorDbCfg - dbcfg.Items = make(map[string]*ItemOpt) - dbcfg.Opts = make(map[string]interface{}) cfgJSONStr := `{ "stor_db": { "db_type": "*mysql", diff --git a/config/suretaxcfg.go b/config/suretaxcfg.go index 9735e996d..a38783804 100644 --- a/config/suretaxcfg.go +++ b/config/suretaxcfg.go @@ -175,163 +175,114 @@ func (self *SureTaxCfg) loadFromJsonCfg(jsnCfg *SureTaxJsonCfg) (err error) { return nil } -func (st *SureTaxCfg) AsMapInterface(separator string) map[string]interface{} { - var clientTracking string - if st.ClientTracking != nil { - values := make([]string, len(st.ClientTracking)) - for i, item := range st.ClientTracking { - values[i] = item.Rules - } - clientTracking = strings.Join(values, separator) +func (st *SureTaxCfg) AsMapInterface(separator string) (initialMP map[string]interface{}) { + initialMP = map[string]interface{}{ + utils.UrlCfg: st.Url, + utils.ClientNumberCfg: st.ClientNumber, + utils.ValidationKeyCfg: st.ValidationKey, + utils.BusinessUnitCfg: st.BusinessUnit, + utils.TimezoneCfg: st.Timezone.String(), + utils.IncludeLocalCostCfg: st.IncludeLocalCost, + utils.ReturnFileCodeCfg: st.ReturnFileCode, + utils.ResponseGroupCfg: st.ResponseGroup, + utils.ResponseTypeCfg: st.ResponseType, + utils.RegulatoryCodeCfg: st.RegulatoryCode, } - var customerNumber string - if st.CustomerNumber != nil { - values := make([]string, len(st.CustomerNumber)) - for i, item := range st.CustomerNumber { - values[i] = item.Rules - } - customerNumber = strings.Join(values, separator) - } - var origNumber string - if st.OrigNumber != nil { - values := make([]string, len(st.OrigNumber)) - for i, item := range st.OrigNumber { - values[i] = item.Rules - } - origNumber = strings.Join(values, separator) - } - var termNumber string - if st.TermNumber != nil { - values := make([]string, len(st.TermNumber)) - for i, item := range st.TermNumber { - values[i] = item.Rules - } - termNumber = strings.Join(values, separator) - } - var billToNumber string - if st.BillToNumber != nil { - values := make([]string, len(st.BillToNumber)) - for i, item := range st.BillToNumber { - values[i] = item.Rules - } - billToNumber = strings.Join(values, separator) - } - var zipcode string - if st.Zipcode != nil { - values := make([]string, len(st.Zipcode)) - for i, item := range st.Zipcode { - values[i] = item.Rules - } - zipcode = strings.Join(values, separator) - } - var plus4 string - if st.Plus4 != nil { - values := make([]string, len(st.Plus4)) - for i, item := range st.Plus4 { - values[i] = item.Rules - } - plus4 = strings.Join(values, separator) - } - var p2PZipcode string - if st.P2PZipcode != nil { - values := make([]string, len(st.P2PZipcode)) - for i, item := range st.P2PZipcode { - values[i] = item.Rules - } - p2PZipcode = strings.Join(values, separator) - } - var p2PPlus4 string - if st.P2PPlus4 != nil { - values := make([]string, len(st.P2PPlus4)) - for i, item := range st.P2PPlus4 { - values[i] = item.Rules - } - p2PPlus4 = strings.Join(values, separator) - } - var units string - if st.Units != nil { - values := make([]string, len(st.Units)) - for i, item := range st.Units { - values[i] = item.Rules - } - units = strings.Join(values, separator) - } - var unitType string - if st.UnitType != nil { - values := make([]string, len(st.UnitType)) - for i, item := range st.UnitType { - values[i] = item.Rules - } - unitType = strings.Join(values, separator) - } - var taxIncluded string - if st.TaxIncluded != nil { - values := make([]string, len(st.TaxIncluded)) - for i, item := range st.TaxIncluded { - values[i] = item.Rules - } - taxIncluded = strings.Join(values, separator) - } - var taxSitusRule string - if st.TaxSitusRule != nil { - values := make([]string, len(st.TaxSitusRule)) - for i, item := range st.TaxSitusRule { - values[i] = item.Rules - } - taxSitusRule = strings.Join(values, separator) - } - var transTypeCode string - if st.TransTypeCode != nil { - values := make([]string, len(st.TransTypeCode)) - for i, item := range st.TransTypeCode { - values[i] = item.Rules - } - transTypeCode = strings.Join(values, separator) - } - var salesTypeCode string - if st.SalesTypeCode != nil { - values := make([]string, len(st.SalesTypeCode)) - for i, item := range st.SalesTypeCode { - values[i] = item.Rules - } - salesTypeCode = strings.Join(values, separator) - } - var taxExemptionCodeList string - if st.TaxExemptionCodeList != nil { - values := make([]string, len(st.TaxExemptionCodeList)) - for i, item := range st.TaxExemptionCodeList { - values[i] = item.Rules - } - taxExemptionCodeList = strings.Join(values, separator) + values := make([]string, len(st.ClientTracking)) + for i, item := range st.ClientTracking { + values[i] = item.Rules } + initialMP[utils.ClientTrackingCfg] = strings.Join(values, separator) - return map[string]interface{}{ - utils.UrlCfg: st.Url, - utils.ClientNumberCfg: st.ClientNumber, - utils.ValidationKeyCfg: st.ValidationKey, - utils.BusinessUnitCfg: st.BusinessUnit, - utils.TimezoneCfg: st.Timezone.String(), - utils.IncludeLocalCostCfg: st.IncludeLocalCost, - utils.ReturnFileCodeCfg: st.ReturnFileCode, - utils.ResponseGroupCfg: st.ResponseGroup, - utils.ResponseTypeCfg: st.ResponseType, - utils.RegulatoryCodeCfg: st.RegulatoryCode, - utils.ClientTrackingCfg: clientTracking, - utils.CustomerNumberCfg: customerNumber, - utils.OrigNumberCfg: origNumber, - utils.TermNumberCfg: termNumber, - utils.BillToNumberCfg: billToNumber, - utils.ZipcodeCfg: zipcode, - utils.Plus4Cfg: plus4, - utils.P2PZipcodeCfg: p2PZipcode, - utils.P2PPlus4Cfg: p2PPlus4, - utils.UnitsCfg: units, - utils.UnitTypeCfg: unitType, - utils.TaxIncludedCfg: taxIncluded, - utils.TaxSitusRuleCfg: taxSitusRule, - utils.TransTypeCodeCfg: transTypeCode, - utils.SalesTypeCodeCfg: salesTypeCode, - utils.TaxExemptionCodeListCfg: taxExemptionCodeList, + values = make([]string, len(st.CustomerNumber)) + for i, item := range st.CustomerNumber { + values[i] = item.Rules } + initialMP[utils.CustomerNumberCfg] = strings.Join(values, separator) + values = make([]string, len(st.OrigNumber)) + for i, item := range st.OrigNumber { + values[i] = item.Rules + } + initialMP[utils.OrigNumberCfg] = strings.Join(values, separator) + + values = make([]string, len(st.TermNumber)) + for i, item := range st.TermNumber { + values[i] = item.Rules + } + initialMP[utils.TermNumberCfg] = strings.Join(values, separator) + + values = make([]string, len(st.BillToNumber)) + for i, item := range st.BillToNumber { + values[i] = item.Rules + } + initialMP[utils.BillToNumberCfg] = strings.Join(values, separator) + + values = make([]string, len(st.Zipcode)) + for i, item := range st.Zipcode { + values[i] = item.Rules + } + initialMP[utils.ZipcodeCfg] = strings.Join(values, separator) + + values = make([]string, len(st.Plus4)) + for i, item := range st.Plus4 { + values[i] = item.Rules + } + initialMP[utils.Plus4Cfg] = strings.Join(values, separator) + + values = make([]string, len(st.P2PZipcode)) + for i, item := range st.P2PZipcode { + values[i] = item.Rules + } + initialMP[utils.P2PZipcodeCfg] = strings.Join(values, separator) + + values = make([]string, len(st.P2PPlus4)) + for i, item := range st.P2PPlus4 { + values[i] = item.Rules + } + initialMP[utils.P2PPlus4Cfg] = strings.Join(values, separator) + + values = make([]string, len(st.Units)) + for i, item := range st.Units { + values[i] = item.Rules + } + initialMP[utils.UnitsCfg] = strings.Join(values, separator) + + values = make([]string, len(st.UnitType)) + for i, item := range st.UnitType { + values[i] = item.Rules + } + initialMP[utils.UnitTypeCfg] = strings.Join(values, separator) + + values = make([]string, len(st.TaxIncluded)) + for i, item := range st.TaxIncluded { + values[i] = item.Rules + } + initialMP[utils.TaxIncludedCfg] = strings.Join(values, separator) + + values = make([]string, len(st.TaxSitusRule)) + for i, item := range st.TaxSitusRule { + values[i] = item.Rules + } + initialMP[utils.TaxSitusRuleCfg] = strings.Join(values, separator) + + values = make([]string, len(st.TransTypeCode)) + for i, item := range st.TransTypeCode { + values[i] = item.Rules + } + initialMP[utils.TransTypeCodeCfg] = strings.Join(values, separator) + + values = make([]string, len(st.SalesTypeCode)) + for i, item := range st.SalesTypeCode { + values[i] = item.Rules + } + initialMP[utils.SalesTypeCodeCfg] = strings.Join(values, separator) + + values = make([]string, len(st.TaxExemptionCodeList)) + for i, item := range st.TaxExemptionCodeList { + values[i] = item.Rules + } + initialMP[utils.TaxExemptionCodeListCfg] = strings.Join(values, separator) + + return } diff --git a/config/suretaxcfg_test.go b/config/suretaxcfg_test.go index d84191cee..b87e779f3 100644 --- a/config/suretaxcfg_test.go +++ b/config/suretaxcfg_test.go @@ -112,72 +112,96 @@ func TestSureTaxCfgloadFromJsonCfg(t *testing.T) { } func TestSureTaxCfgAsMapInterface(t *testing.T) { - var sureTaxCfg SureTaxCfg cfgJSONStr := `{ - "suretax": { - "url": "", - "client_number": "", - "validation_key": "", - "business_unit": "", - "timezone": "UTC", - "include_local_cost": false, - "return_file_code": "0", - "response_group": "03", - "response_type": "D4", - "regulatory_code": "03", - "client_tracking": "~*req.CGRID", - "customer_number": "~*req.Subject", - "orig_number": "~*req.Subject", - "term_number": "~*req.Destination", - "bill_to_number": "", - "zipcode": "", - "plus4": "", - "p2pzipcode": "", - "p2pplus4": "", - "units": "1", - "unit_type": "00", - "tax_included": "0", - "tax_situs_rule": "04", - "trans_type_code": "010101", - "sales_type_code": "R", - "tax_exemption_code_list": "", - }, + "suretax": {}, }` eMap := map[string]interface{}{ - "url": "", - "client_number": "", - "validation_key": "", - "business_unit": "", - "timezone": "UTC", - "include_local_cost": false, - "return_file_code": "0", - "response_group": "03", - "response_type": "D4", - "regulatory_code": "03", - "client_tracking": "~*req.CGRID", - "customer_number": "~*req.Subject", - "orig_number": "~*req.Subject", - "term_number": "~*req.Destination", - "bill_to_number": "", - "zipcode": "", - "plus4": "", - "p2pzipcode": "", - "p2pplus4": "", - "units": "1", - "unit_type": "00", - "tax_included": "0", - "tax_situs_rule": "04", - "trans_type_code": "010101", - "sales_type_code": "R", - "tax_exemption_code_list": "", + utils.UrlCfg: utils.EmptyString, + utils.ClientNumberCfg: utils.EmptyString, + utils.ValidationKeyCfg: utils.EmptyString, + utils.BusinessUnitCfg: utils.EmptyString, + utils.TimezoneCfg: "Local", + utils.IncludeLocalCostCfg: false, + utils.ReturnFileCodeCfg: "0", + utils.ResponseGroupCfg: "03", + utils.ResponseTypeCfg: "D4", + utils.RegulatoryCodeCfg: "03", + utils.ClientTrackingCfg: "~*req.CGRID", + utils.CustomerNumberCfg: "~*req.Subject", + utils.OrigNumberCfg: "~*req.Subject", + utils.TermNumberCfg: "~*req.Destination", + utils.BillToNumberCfg: utils.EmptyString, + utils.ZipcodeCfg: utils.EmptyString, + utils.Plus4Cfg: utils.EmptyString, + utils.P2PZipcodeCfg: utils.EmptyString, + utils.P2PPlus4Cfg: utils.EmptyString, + utils.UnitsCfg: "1", + utils.UnitTypeCfg: "00", + utils.TaxIncludedCfg: "0", + utils.TaxSitusRuleCfg: "04", + utils.TransTypeCodeCfg: "010101", + utils.SalesTypeCodeCfg: "R", + utils.TaxExemptionCodeListCfg: utils.EmptyString, } - if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil { + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) - } else if sureTax, err := jsnCfg.SureTaxJsonCfg(); err != nil { - t.Error(err) - } else if err = sureTaxCfg.loadFromJsonCfg(sureTax); err != nil { - t.Error(err) - } else if rcv := sureTaxCfg.AsMapInterface(utils.EmptyString); !reflect.DeepEqual(eMap, rcv) { - t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } else if rcv := cgrCfg.sureTaxCfg.AsMapInterface(cgrCfg.generalCfg.RSRSep); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) + } +} + +func TestSureTaxCfgAsMapInterface1(t *testing.T) { + cfgJSONStr := `{ + "suretax": { + "timezone": "UTC", + "include_local_cost": true, + "return_file_code": "0", + "response_group": "04", + "response_type": "A4", + "regulatory_code": "04", + "client_tracking": "~*req.Destination", + "customer_number": "~*req.Destination", + "orig_number": "~*req.Destination", + "term_number": "~*req.CGRID", + "units": "7", + "unit_type": "02", + "tax_included": "1", + "tax_situs_rule": "03", + "trans_type_code": "01010101", + "sales_type_code": "B", + }, +}` + eMap := map[string]interface{}{ + utils.UrlCfg: utils.EmptyString, + utils.ClientNumberCfg: utils.EmptyString, + utils.ValidationKeyCfg: utils.EmptyString, + utils.BusinessUnitCfg: utils.EmptyString, + utils.TimezoneCfg: "UTC", + utils.IncludeLocalCostCfg: true, + utils.ReturnFileCodeCfg: "0", + utils.ResponseGroupCfg: "04", + utils.ResponseTypeCfg: "A4", + utils.RegulatoryCodeCfg: "04", + utils.ClientTrackingCfg: "~*req.Destination", + utils.CustomerNumberCfg: "~*req.Destination", + utils.OrigNumberCfg: "~*req.Destination", + utils.TermNumberCfg: "~*req.CGRID", + utils.BillToNumberCfg: utils.EmptyString, + utils.ZipcodeCfg: utils.EmptyString, + utils.Plus4Cfg: utils.EmptyString, + utils.P2PZipcodeCfg: utils.EmptyString, + utils.P2PPlus4Cfg: utils.EmptyString, + utils.UnitsCfg: "7", + utils.UnitTypeCfg: "02", + utils.TaxIncludedCfg: "1", + utils.TaxSitusRuleCfg: "03", + utils.TransTypeCodeCfg: "01010101", + utils.SalesTypeCodeCfg: "B", + utils.TaxExemptionCodeListCfg: utils.EmptyString, + } + if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { + t.Error(err) + } else if rcv := cgrCfg.sureTaxCfg.AsMapInterface(cgrCfg.generalCfg.RSRSep); !reflect.DeepEqual(rcv, eMap) { + t.Errorf("Expected %+v \n, received %+v", utils.ToJSON(eMap), utils.ToJSON(rcv)) } }