From f951224e50172f48cf9c03d701cc289ede7cd443 Mon Sep 17 00:00:00 2001 From: nickolasdaniel Date: Thu, 21 Oct 2021 10:20:20 +0300 Subject: [PATCH] Unit testing in utils --- utils/libdynamics_test.go | 186 ++++++++++++++++++++++++++++++++++---- 1 file changed, 170 insertions(+), 16 deletions(-) diff --git a/utils/libdynamics_test.go b/utils/libdynamics_test.go index a537f8958..7adadf36f 100644 --- a/utils/libdynamics_test.go +++ b/utils/libdynamics_test.go @@ -167,10 +167,12 @@ func TestCloneDynamicDecimalBigOpt(t *testing.T) { func TestDynamicStringSliceOptEqual(t *testing.T) { v1 := []*DynamicStringSliceOpt{ { + Tenant: "cgrates.org", Value: []string{"VAL_1", "VAL_2"}, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: []string{"VAL_3", "VAL_4"}, FilterIDs: []string{"fltr2"}, }, @@ -178,10 +180,12 @@ func TestDynamicStringSliceOptEqual(t *testing.T) { v2 := []*DynamicStringSliceOpt{ { + Tenant: "cgrates.org", Value: []string{"VAL_1", "VAL_2"}, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: []string{"VAL_3", "VAL_4"}, FilterIDs: []string{"fltr2"}, }, @@ -198,6 +202,13 @@ func TestDynamicStringSliceOptEqual(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicStringSliceOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicStringSliceOptEqual(v1, v2) { @@ -217,10 +228,12 @@ func TestDynamicStringSliceOptEqual(t *testing.T) { func TestDynamicStringOptEqual(t *testing.T) { v1 := []*DynamicStringOpt{ { + Tenant: "cgrates.org", Value: "VAL_1", FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: "VAL_2", FilterIDs: []string{"fltr2"}, }, @@ -228,10 +241,12 @@ func TestDynamicStringOptEqual(t *testing.T) { v2 := []*DynamicStringOpt{ { + Tenant: "cgrates.org", Value: "VAL_1", FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: "VAL_2", FilterIDs: []string{"fltr2"}, }, @@ -246,6 +261,13 @@ func TestDynamicStringOptEqual(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicStringOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicStringOptEqual(v1, v2) { @@ -265,10 +287,12 @@ func TestDynamicStringOptEqual(t *testing.T) { func TestDynamicBoolOptEquals(t *testing.T) { v1 := []*DynamicBoolOpt{ { + Tenant: "cgrates.org", Value: true, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: false, FilterIDs: []string{"fltr2"}, }, @@ -276,10 +300,12 @@ func TestDynamicBoolOptEquals(t *testing.T) { v2 := []*DynamicBoolOpt{ { + Tenant: "cgrates.org", Value: true, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: false, FilterIDs: []string{"fltr2"}, }, @@ -294,6 +320,13 @@ func TestDynamicBoolOptEquals(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicBoolOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicBoolOptEqual(v1, v2) { @@ -313,10 +346,12 @@ func TestDynamicBoolOptEquals(t *testing.T) { func TestDynamicIntOptEqual(t *testing.T) { v1 := []*DynamicIntOpt{ { + Tenant: "cgrates.org", Value: 1, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: 2, FilterIDs: []string{"fltr2"}, }, @@ -324,10 +359,12 @@ func TestDynamicIntOptEqual(t *testing.T) { v2 := []*DynamicIntOpt{ { + Tenant: "cgrates.org", Value: 1, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: 2, FilterIDs: []string{"fltr2"}, }, @@ -342,6 +379,13 @@ func TestDynamicIntOptEqual(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicIntOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicIntOptEqual(v1, v2) { @@ -361,10 +405,12 @@ func TestDynamicIntOptEqual(t *testing.T) { func TestDynamicFloat64OptEqual(t *testing.T) { v1 := []*DynamicFloat64Opt{ { + Tenant: "cgrates.org", Value: 1.2, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: 2.6, FilterIDs: []string{"fltr2"}, }, @@ -372,10 +418,12 @@ func TestDynamicFloat64OptEqual(t *testing.T) { v2 := []*DynamicFloat64Opt{ { + Tenant: "cgrates.org", Value: 1.2, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: 2.6, FilterIDs: []string{"fltr2"}, }, @@ -390,6 +438,13 @@ func TestDynamicFloat64OptEqual(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicFloat64OptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicFloat64OptEqual(v1, v2) { @@ -409,10 +464,12 @@ func TestDynamicFloat64OptEqual(t *testing.T) { func TestDynamicDurationOptEquals(t *testing.T) { v1 := []*DynamicDurationOpt{ { + Tenant: "cgrates.org", Value: time.Second * 2, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: time.Second * 5, FilterIDs: []string{"fltr2"}, }, @@ -420,10 +477,12 @@ func TestDynamicDurationOptEquals(t *testing.T) { v2 := []*DynamicDurationOpt{ { + Tenant: "cgrates.org", Value: time.Second * 2, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: time.Second * 5, FilterIDs: []string{"fltr2"}, }, @@ -438,6 +497,13 @@ func TestDynamicDurationOptEquals(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicDurationOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicDurationOptEqual(v1, v2) { @@ -457,10 +523,12 @@ func TestDynamicDurationOptEquals(t *testing.T) { func TestDynamicDecimalBigOptEquals(t *testing.T) { v1 := []*DynamicDecimalBigOpt{ { + Tenant: "cgrates.org", Value: new(decimal.Big).SetUint64(10), FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: new(decimal.Big).SetUint64(2), FilterIDs: []string{"fltr2"}, }, @@ -468,10 +536,12 @@ func TestDynamicDecimalBigOptEquals(t *testing.T) { v2 := []*DynamicDecimalBigOpt{ { + Tenant: "cgrates.org", Value: new(decimal.Big).SetUint64(10), FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: new(decimal.Big).SetUint64(2), FilterIDs: []string{"fltr2"}, }, @@ -486,6 +556,13 @@ func TestDynamicDecimalBigOptEquals(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicDecimalBigOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicDecimalBigOptEqual(v1, v2) { @@ -505,10 +582,12 @@ func TestDynamicDecimalBigOptEquals(t *testing.T) { func TestDynamicInterfaceOptEqual(t *testing.T) { v1 := []*DynamicInterfaceOpt{ { + Tenant: "cgrates.org", Value: 1, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: 2, FilterIDs: []string{"fltr2"}, }, @@ -516,10 +595,12 @@ func TestDynamicInterfaceOptEqual(t *testing.T) { v2 := []*DynamicInterfaceOpt{ { + Tenant: "cgrates.org", Value: 1, FilterIDs: []string{"fltr1"}, }, { + Tenant: "cgrates.org", Value: 2, FilterIDs: []string{"fltr2"}, }, @@ -534,6 +615,13 @@ func TestDynamicInterfaceOptEqual(t *testing.T) { t.Error("Expected slices to differ") } + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicInterfaceOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + //Test if different filters v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") if DynamicInterfaceOptEqual(v1, v2) { @@ -571,10 +659,16 @@ func TestStringToDecimalBigDynamicOpts(t *testing.T) { if err != nil { t.Error(err) } - // fmt.Println(rcv[0].Value) if !reflect.DeepEqual(rcv, exp) { t.Errorf("Expected %v \n but received \n %v", exp, rcv) } + + //Check conversion error + errExpect := "can't convert to decimal" + dsOpt[0].Value = "this_is_definitely_a_decimal_big" + if _, err := StringToDecimalBigDynamicOpts(dsOpt); err == nil || err.Error() != errExpect { + t.Error(err) + } } func TestDynamicIntPointerOptEqual(t *testing.T) { @@ -588,19 +682,43 @@ func TestDynamicIntPointerOptEqual(t *testing.T) { v2 := []*DynamicIntPointerOpt{ { - FilterIDs: []string{"fld3"}, - Tenant: "cgrates.net", - Value: IntPointer(300), + FilterIDs: []string{"fld1", "fld2"}, + Tenant: "cgrates.org", + Value: IntPointer(200), }, } - if DynamicIntPointerOptEqual(v1, v2) { - t.Error("Expected items to be different") + if !DynamicIntPointerOptEqual(v1, v2) { + t.Error("Expected items to match") } - v1 = v2 - if !DynamicIntPointerOptEqual(v1, v2) { - t.Error("Expected items to be the same") + //Test if different tenants + v1[0].Tenant = "cgrates.net" + if DynamicIntPointerOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + + //Test if different values + v1[0].Value = IntPointer(500) + if DynamicIntPointerOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Value = IntPointer(200) + + //Test if different filters + v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") + if DynamicIntPointerOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + + //Test if different lengths + v1 = append(v1, &DynamicIntPointerOpt{ + Value: IntPointer(2), + FilterIDs: []string{"fltr1"}, + }) + if DynamicIntPointerOptEqual(v1, v2) { + t.Error("Expected slices to differ") } } @@ -615,19 +733,42 @@ func TestDynamicDurationPointerOptEqual(t *testing.T) { v2 := []*DynamicDurationPointerOpt{ { - FilterIDs: []string{"fltr4"}, - Tenant: "cgrates.net", - Value: DurationPointer(5 * time.Second), + FilterIDs: []string{"fld3"}, + Tenant: "cgrates.org", + Value: DurationPointer(3 * time.Second), }, } + if !DynamicDurationPointerOptEqual(v1, v2) { + t.Error("Expected items to match") + } + //Test if different tenants + v1[0].Tenant = "cgrates.net" if DynamicDurationPointerOptEqual(v1, v2) { - t.Error("Expected items to be different") + t.Error("Expected slices to differ") + } + v1[0].Tenant = "cgrates.org" + + //Test if different values + v1[0].Value = DurationPointer(4 * time.Second) + if DynamicDurationPointerOptEqual(v1, v2) { + t.Error("Expected slices to differ") + } + v1[0].Value = DurationPointer(3 * time.Second) + + //Test if different filters + v1[0].FilterIDs = append(v1[0].FilterIDs, "new_fltr") + if DynamicDurationPointerOptEqual(v1, v2) { + t.Error("Expected slices to differ") } - v1 = v2 - if !DynamicDurationPointerOptEqual(v1, v2) { - t.Error("Expected items to be the same") + //Test if different lengths + v1 = append(v1, &DynamicDurationPointerOpt{ + Value: DurationPointer(2), + FilterIDs: []string{"fltr1"}, + }) + if DynamicDurationPointerOptEqual(v1, v2) { + t.Error("Expected slices to differ") } } @@ -678,6 +819,13 @@ func TestStringToDurationDynamicOpts(t *testing.T) { if !reflect.DeepEqual(rcv, exp) { t.Errorf("Expected %v \n but received \n %v", exp, rcv) } + + //Check conversion error + errExpect := `time: unknown unit "c" in duration "50c"` + sOpts[0].Value = "50c" + if _, err := StringToDurationDynamicOpts(sOpts); err == nil || err.Error() != errExpect { + t.Error(err) + } } func TestDurationToStringDynamicOpts(t *testing.T) { @@ -774,6 +922,12 @@ func TestStringToDurationPointerDynamicOpts(t *testing.T) { if !reflect.DeepEqual(rcv, exp) { t.Errorf("Expected %v \n but received \n %v", exp, rcv) } + + errExpect := `time: unknown unit "c" in duration "50c"` + sOpts[0].Value = "50c" + if _, err := StringToDurationPointerDynamicOpts(sOpts); err == nil || err.Error() != errExpect { + t.Error(err) + } } func TestDurationPointerToStringDynamicOpts(t *testing.T) { exp := []*DynamicStringOpt{