From a722e6cab483df2780f5bef079a40c9ea669e6fd Mon Sep 17 00:00:00 2001 From: adragusin Date: Fri, 8 Nov 2019 17:48:01 +0200 Subject: [PATCH] Updated tests in utils/cgrevent --- utils/cgrevent.go | 14 +---- utils/cgrevent_test.go | 113 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 109 insertions(+), 18 deletions(-) diff --git a/utils/cgrevent.go b/utils/cgrevent.go index c28dd61e9..870943c9e 100644 --- a/utils/cgrevent.go +++ b/utils/cgrevent.go @@ -19,8 +19,6 @@ along with this program. If not, see package utils import ( - "reflect" - "strings" "time" ) @@ -88,6 +86,7 @@ func (ev *CGREvent) TenantID() string { return ConcatenatedKey(ev.Tenant, ev.ID) } +/* func (ev *CGREvent) FilterableEvent(fltredFields []string) (fEv map[string]interface{}) { fEv = make(map[string]interface{}) if len(fltredFields) == 0 { @@ -112,6 +111,7 @@ func (ev *CGREvent) FilterableEvent(fltredFields []string) (fEv map[string]inter } return } +*/ func (ev *CGREvent) Clone() (clned *CGREvent) { clned = &CGREvent{ @@ -128,16 +128,6 @@ func (ev *CGREvent) Clone() (clned *CGREvent) { return } -// RemFldsWithPrefix will remove fields starting with prefix from event -func (ev *CGREvent) RemFldsWithPrefix(prfx string) { - for fldName := range ev.Event { - if strings.HasPrefix(fldName, prfx) { - delete(ev.Event, fldName) - } - } -} - -// RemFldsWithPrefix will remove fields starting with prefix from event func (ev *CGREvent) consumeArgDispatcher() (arg *ArgDispatcher) { if ev == nil { return diff --git a/utils/cgrevent_test.go b/utils/cgrevent_test.go index 55ee6a9c3..9b3940014 100644 --- a/utils/cgrevent_test.go +++ b/utils/cgrevent_test.go @@ -24,6 +24,83 @@ import ( "time" ) +func TestCGREventHasField(t *testing.T) { + //empty check + cgrEvent := new(CGREvent) + rcv := cgrEvent.HasField("") + if rcv { + t.Error("Expecting: false, received: ", rcv) + } + //normal check + cgrEvent = &CGREvent{ + Event: map[string]interface{}{ + Usage: time.Duration(20 * time.Second), + }, + } + rcv = cgrEvent.HasField("Usage") + if !rcv { + t.Error("Expecting: true, received: ", rcv) + } +} + +func TestCGREventCheckMandatoryFields(t *testing.T) { + //empty check + cgrEvent := new(CGREvent) + fldNames := []string{} + err := cgrEvent.CheckMandatoryFields(fldNames) + if err != nil { + t.Error(err) + } + cgrEvent = &CGREvent{ + Event: map[string]interface{}{ + Usage: time.Duration(20 * time.Second), + "test1": 1, + "test2": 2, + "test3": 3, + }, + } + //normal check + fldNames = []string{"test1", "test2"} + err = cgrEvent.CheckMandatoryFields(fldNames) + if err != nil { + t.Error(err) + } + //MANDATORY_IE_MISSING + fldNames = []string{"test4", "test5"} + err = cgrEvent.CheckMandatoryFields(fldNames) + if err == nil || err.Error() != NewErrMandatoryIeMissing("test4").Error() { + t.Errorf("Expected %s, received %s", NewErrMandatoryIeMissing("test4"), err) + } +} + +func TestCGREventFielAsString(t *testing.T) { + //empty check + cgrEvent := new(CGREvent) + fldname := "test" + _, err := cgrEvent.FieldAsString(fldname) + if err == nil || err.Error() != ErrNotFound.Error() { + t.Errorf("Expected %s, received %s", ErrNotFound, err) + } + //normal check + cgrEvent = &CGREvent{ + Event: map[string]interface{}{ + Usage: time.Duration(20 * time.Second), + "test1": 1, + "test2": 2, + "test3": 3, + }, + } + fldname = "test1" + rcv, err := cgrEvent.FieldAsString(fldname) + if err != nil { + t.Error(err) + } + if rcv != "1" { + t.Errorf("Expected: 1, received %+q", rcv) + } + +} + func TestLibSuppliersUsage(t *testing.T) { se := &CGREvent{ Tenant: "cgrates.org", @@ -144,11 +221,9 @@ func TestCGREventFieldAsFloat64(t *testing.T) { t.Errorf("Expecting: %+v, received: %+v", se.Event["Weight"], answ) } answ, err = se.FieldAsFloat64("PddInterval") - //TODO: Make an error to be expected : - // cgrEvent_test.go:149: strconv.ParseFloat: parsing "1s": invalid syntax - // if err != nil { - // t.Error(err) - // } + if err == nil || err.Error() != `strconv.ParseFloat: parsing "1s": invalid syntax` { + t.Errorf("Expected %s, received %s", `strconv.ParseFloat: parsing "1s": invalid syntax`, err) + } if answ != 0 { t.Errorf("Expecting: %+v, received: %+v", 0, answ) } @@ -156,7 +231,34 @@ func TestCGREventFieldAsFloat64(t *testing.T) { if _, err := se.FieldAsFloat64(AnswerTime); err == nil || !strings.HasPrefix(err.Error(), "cannot convert field") { t.Errorf("Unexpected error : %+v", err) } + if _, err := se.FieldAsFloat64(Account); err == nil || err.Error() != ErrNotFound.Error() { + t.Errorf("Expected %s, received %s", ErrNotFound, err) + } + // } } + +// } +func TestCGREventTenantID(t *testing.T) { + //empty check + cgrEvent := new(CGREvent) + rcv := cgrEvent.TenantID() + eOut := ":" + if !reflect.DeepEqual(eOut, rcv) { + t.Errorf("Expecting: %+v, received: %+v", eOut, rcv) + } + //normal check + cgrEvent = &CGREvent{ + Tenant: "cgrates.org", + ID: "supplierEvent1", + } + rcv = cgrEvent.TenantID() + eOut = "cgrates.org:supplierEvent1" + if !reflect.DeepEqual(eOut, rcv) { + t.Errorf("Expecting: %+v, received: %+v", eOut, rcv) + } + +} + func TestCGREventClone(t *testing.T) { now := time.Now() ev := &CGREvent{ @@ -178,5 +280,4 @@ func TestCGREventClone(t *testing.T) { if cloned.Time == ev.Time { t.Errorf("Expecting: different pointer but received: %+v", cloned.Time) } - }