Fixed data checking value from objdp + test

This commit is contained in:
porosnicuadrian
2021-05-25 15:31:29 +03:00
committed by Dan Christian Bogos
parent fac633cad3
commit 98aa157f76
2 changed files with 33 additions and 2 deletions

View File

@@ -62,6 +62,9 @@ func (objDP *ObjectDP) FieldAsInterface(fldPath []string) (data interface{}, err
// []string{ BalanceMap *monetary[0] Value }
var has bool
if data, has = objDP.getCache(strings.Join(fldPath, utils.NestingSep)); has {
if data == nil { // field doesn't exist
err = utils.ErrNotFound
}
return
}
data = obj // in case the fldPath is empty we need to return the whole object

View File

@@ -2246,14 +2246,42 @@ func TestFilterPassRSRFieldsWithMultplieValues(t *testing.T) {
cfg := config.NewDefaultCGRConfig()
dm := NewDataManager(NewInternalDB(nil, nil, true), cfg.CacheCfg(), nil)
flts := NewFilterS(cfg, nil, dm)
if passes, err := flts.Pass("cgrate.org", []string{"*rsr:~*req.23:dan|1001"}, ev); err != nil {
if passes, err := flts.Pass("cgrates.org", []string{"*rsr:~*req.23:dan|1001"}, ev); err != nil {
t.Error(err)
} else if !passes {
t.Error("Not passing")
}
if passes, err := flts.Pass("cgrate.org", []string{"*rsr:~*req.23:dan"}, ev); err != nil {
if passes, err := flts.Pass("cgrates.org", []string{"*rsr:~*req.23:dan"}, ev); err != nil {
t.Error(err)
} else if !passes {
t.Error("Not passing")
}
}
func TestFilterGreaterThanOnObjectDP(t *testing.T) {
cfg := config.NewDefaultCGRConfig()
cfg.FilterSCfg().ResourceSConns = []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources)}
dm := NewDataManager(NewInternalDB(nil, nil, true), cfg.CacheCfg(), nil)
mockConn := &ccMock{
calls: map[string]func(args interface{}, reply interface{}) error{
utils.ResourceSv1GetResourceWithConfig: func(args interface{}, reply interface{}) error {
*(reply.(*ResourceWithConfig)) = ResourceWithConfig{
Resource: &Resource{},
}
return nil
},
},
}
mockChan := make(chan rpcclient.ClientConnector, 1)
mockChan <- mockConn
connMgr := NewConnManager(cfg, map[string]chan rpcclient.ClientConnector{
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources): mockChan,
})
flts := NewFilterS(cfg, connMgr, dm)
ev := utils.MapStorage{}
if _, err := flts.Pass("cgrates.org", []string{"*gte:~*resources.RES1.Available2:2",
"*lt:~*resources.RES1.Available2:10"}, ev); err != nil {
t.Error(err)
}
}