mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Add tests for FCTemplate and fixes #1267
This commit is contained in:
committed by
Dan Christian Bogos
parent
14eaba5863
commit
ed80f7a281
@@ -143,7 +143,7 @@ func InflateTemplates(fcts []*FCTemplate, msgTpls map[string][]*FCTemplate) ([]*
|
||||
if !has {
|
||||
return nil, fmt.Errorf("no template with id: <%s>", tplID)
|
||||
} else if len(refTpl) == 0 {
|
||||
continue
|
||||
return nil, fmt.Errorf("empty template with id: <%s>", tplID)
|
||||
}
|
||||
wrkSlice := make([]*FCTemplate, len(refTpl)+len(fcts[i:])-1) // so we can cover tpls[i+1:]
|
||||
copy(wrkSlice[:len(refTpl)], refTpl) // copy fields out of referenced template
|
||||
|
||||
@@ -85,3 +85,207 @@ func TestFCTemplatesFromFCTemplatesJsonCfg(t *testing.T) {
|
||||
t.Errorf("expected: %s ,received: %s", utils.ToJSON(expected), utils.ToJSON(rcv))
|
||||
}
|
||||
}
|
||||
|
||||
func TestFCTemplateInflate1(t *testing.T) {
|
||||
fcTmp1 := []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Tenant",
|
||||
Type: "*composed",
|
||||
FieldId: "Tenant",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("cgrates.org", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "RunID",
|
||||
Type: "*composed",
|
||||
FieldId: "RunID",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("SampleValue", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "TmpMap",
|
||||
Type: "*template",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("TmpMap", true),
|
||||
},
|
||||
}
|
||||
fcTmpMp := map[string][]*FCTemplate{
|
||||
"TmpMap": []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Elem1",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem1",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("Elem1", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "Elem2",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2", true),
|
||||
},
|
||||
},
|
||||
"TmpMap2": []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Elem2.1",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2.1",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2.1", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "Elem2.2",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2.2",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2.2", true),
|
||||
},
|
||||
},
|
||||
}
|
||||
expFC := []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Tenant",
|
||||
Type: "*composed",
|
||||
FieldId: "Tenant",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("cgrates.org", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "RunID",
|
||||
Type: "*composed",
|
||||
FieldId: "RunID",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("SampleValue", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "Elem1",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem1",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("Elem1", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "Elem2",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2", true),
|
||||
},
|
||||
}
|
||||
if rcv, err := InflateTemplates(fcTmp1, fcTmpMp); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(expFC, rcv) {
|
||||
t.Errorf("expected: %s ,received: %s", utils.ToJSON(expFC), utils.ToJSON(rcv))
|
||||
}
|
||||
}
|
||||
|
||||
func TestFCTemplateInflate2(t *testing.T) {
|
||||
fcTmp1 := []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Tenant",
|
||||
Type: "*composed",
|
||||
FieldId: "Tenant",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("cgrates.org", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "RunID",
|
||||
Type: "*composed",
|
||||
FieldId: "RunID",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("SampleValue", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "TmpMap3",
|
||||
Type: "*template",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("TmpMap3", true),
|
||||
},
|
||||
}
|
||||
fcTmpMp := map[string][]*FCTemplate{
|
||||
"TmpMap": []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Elem1",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem1",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("Elem1", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "Elem2",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2", true),
|
||||
},
|
||||
},
|
||||
"TmpMap2": []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Elem2.1",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2.1",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2.1", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "Elem2.2",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2.2",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2.2", true),
|
||||
},
|
||||
},
|
||||
}
|
||||
if _, err := InflateTemplates(fcTmp1, fcTmpMp); err.Error() != "no template with id: <TmpMap3>" {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFCTemplateInflate3(t *testing.T) {
|
||||
fcTmp1 := []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Tenant",
|
||||
Type: "*composed",
|
||||
FieldId: "Tenant",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("cgrates.org", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "RunID",
|
||||
Type: "*composed",
|
||||
FieldId: "RunID",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("SampleValue", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "TmpMap",
|
||||
Type: "*template",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("TmpMap", true),
|
||||
},
|
||||
}
|
||||
fcTmpMp := map[string][]*FCTemplate{
|
||||
"TmpMap": []*FCTemplate{},
|
||||
"TmpMap2": []*FCTemplate{
|
||||
&FCTemplate{
|
||||
Tag: "Elem2.1",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2.1",
|
||||
Filters: []string{"Filter1", "Filter2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2.1", true),
|
||||
},
|
||||
&FCTemplate{
|
||||
Tag: "Elem2.2",
|
||||
Type: "*composed",
|
||||
FieldId: "Elem2.2",
|
||||
Filters: []string{"Filter1_1", "Filter2_2"},
|
||||
Value: NewRSRParsersMustCompile("Elem2.2", true),
|
||||
},
|
||||
},
|
||||
}
|
||||
if _, err := InflateTemplates(fcTmp1, fcTmpMp); err == nil ||
|
||||
err.Error() != "empty template with id: <TmpMap>" {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,13 +172,13 @@ func (rpf *RatingProfile) GetRatingPlansForPrefix(cd *CallDescriptor) (err error
|
||||
} else {
|
||||
for _, p := range utils.SplitPrefix(cd.Destination, MIN_PREFIX_MATCH) {
|
||||
if destIDs, err := dm.DataDB().GetReverseDestination(p, false, utils.NonTransactional); err == nil {
|
||||
var bestWeight float64
|
||||
var bestWeight *float64
|
||||
for _, dID := range destIDs {
|
||||
if _, ok := rpl.DestinationRates[dID]; ok {
|
||||
ril := rpl.RateIntervalList(dID)
|
||||
currentWeight := ril.GetWeight()
|
||||
if currentWeight > bestWeight {
|
||||
bestWeight = currentWeight
|
||||
if bestWeight == nil || currentWeight > *bestWeight {
|
||||
bestWeight = utils.Float64Pointer(currentWeight)
|
||||
rps = ril
|
||||
prefix = p
|
||||
destinationId = dID
|
||||
|
||||
Reference in New Issue
Block a user