Improving Coverage at Utils

This commit is contained in:
arberkatellari
2022-11-18 18:51:32 -05:00
committed by Dan Christian Bogos
parent acafea967a
commit fd0bec2e10
2 changed files with 131 additions and 18 deletions

View File

@@ -2406,8 +2406,19 @@ func TestMergeRate(t *testing.T) {
}
// unfinished
type MockMarshaler struct{}
func (MockMarshaler) Marshal(interface{}) ([]byte, error) {
return nil, ErrNotImplemented
}
func (MockMarshaler) Unmarshal([]byte, interface{}) error {
return ErrNotImplemented
}
func TestAsDataDBMap(t *testing.T) {
ms := MockMarshaler{}
rp := &RateProfile{
FilterIDs: []string{"fltr1", "fltr2"},
Weights: DynamicWeights{{
@@ -2418,27 +2429,66 @@ func TestAsDataDBMap(t *testing.T) {
MaxCost: NewDecimal(10, 0),
MaxCostStrategy: "strategy",
Rates: map[string]*Rate{
"rat1": {
ID: "rat1",
FilterIDs: []string{"fltr1"},
ActivationTimes: "* * * * *",
Weights: DynamicWeights{{}},
Blocker: true,
IntervalRates: []*IntervalRate{{}},
},
"rat2": {
ID: "rat2",
},
"rat3": {},
"rat1": {ID: "rat1"}, "rat2": {ID: "rat2"},
},
}
// exp := map[FilterIDs:fltr1;fltr2 MaxCost:10 MaxCostStrategy:strategy MinCost:10 Rates:rat1:{"ID":"rat1","FilterIDs":["fltr1"],"ActivationTimes":"* * * * *","Weights":[{"FilterIDs":null,"Weight":0}],"Blocker":true,"IntervalRates":[{"IntervalStart":null,"FixedFee":null,"RecurrentFee":null,"Unit":null,"Increment":null}]} Rates:rat2:{"ID":"rat2","FilterIDs":null,"ActivationTimes":"","Weights":null,"Blocker":false,"IntervalRates":null} Rates:rat3:{"ID":"","FilterIDs":null,"ActivationTimes":"","Weights":null,"Blocker":false,"IntervalRates":null} Weights:;10]
if _, err := rp.AsDataDBMap(JSONMarshaler{}); err != nil {
exp := "{\"FilterIDs\":\"fltr1;fltr2\",\"MaxCost\":\"10\",\"MaxCostStrategy\":\"strategy\",\"MinCost\":\"10\",\"Rates:rat1\":\"{\\\"ID\\\":\\\"rat1\\\",\\\"FilterIDs\\\":null,\\\"ActivationTimes\\\":\\\"\\\",\\\"Weights\\\":null,\\\"Blocker\\\":false,\\\"IntervalRates\\\":null}\",\"Rates:rat2\":\"{\\\"ID\\\":\\\"rat2\\\",\\\"FilterIDs\\\":null,\\\"ActivationTimes\\\":\\\"\\\",\\\"Weights\\\":null,\\\"Blocker\\\":false,\\\"IntervalRates\\\":null}\",\"Weights\":\";10\"}"
if rcv, err := rp.AsDataDBMap(JSONMarshaler{}); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(exp, ToJSON(rcv)) {
t.Errorf("Expected <%v %T>, \nReceived <%v %T>", exp, exp, ToJSON(rcv), ToJSON(rcv))
}
if _, err := rp.AsDataDBMap(ms); err == nil || err != ErrNotImplemented {
t.Errorf("Expected <%v>, Received <%v>", ErrNotImplemented, err)
}
}
func TestNewRateProfileFromMapDataDBMap(t *testing.T) {
mapRP := map[string]interface{}{
"FilterIDs": "fltrID1",
"Weights": "fltrID1;20",
"MinCost": "2",
"MaxCost": "10",
"Rates:rat1": "{\"ID\":\"rat1\",\"FilterIDs\":null,\"ActivationTimes\":\"\",\"Weights\":null,\"Blocker\":false,\"IntervalRates\":null}",
}
if rcv, err := NewRateProfileFromMapDataDBMap("cgrates.org", "ExID", mapRP, JSONMarshaler{}); err != nil {
t.Error(rcv, err)
}
mapRP = map[string]interface{}{
"FilterIDs": "fltrID1",
"Weights": "wrong",
}
expErr := "invalid DynamicWeight format for string <wrong>"
if _, err := NewRateProfileFromMapDataDBMap("cgrates.org", "ExID", mapRP, JSONMarshaler{}); err == nil || err.Error() != expErr {
t.Errorf("Expected error <%v>, received <%v>", expErr, err)
}
mapRP = map[string]interface{}{
"FilterIDs": "fltrID1",
"MinCost": "wrong",
}
expErr = "can't convert <wrong> to decimal"
if _, err := NewRateProfileFromMapDataDBMap("cgrates.org", "ExID", mapRP, JSONMarshaler{}); err == nil || err.Error() != expErr {
t.Errorf("Expected error <%v>, received <%v>", expErr, err)
}
mapRP = map[string]interface{}{
"FilterIDs": "fltrID1",
"MaxCost": "wrong",
}
expErr = "can't convert <wrong> to decimal"
if _, err := NewRateProfileFromMapDataDBMap("cgrates.org", "ExID", mapRP, JSONMarshaler{}); err == nil || err.Error() != expErr {
t.Errorf("Expected error <%v>, received <%v>", expErr, err)
}
mapRP = map[string]interface{}{
"FilterIDs": "fltrID1",
"Rates:rat1": "{\"ID\":\"rat1\",\"FilterIDs\":null,\"ActivationTimes\":\"\",\"Weights\":null,\"Blocker\":false,\"IntervalRates\":null}\",\"Rates:rat2\":\"{\"ID\":\"rat2\",\"FilterIDs\":null,\"ActivationTimes\":\"\",\"Weights\":null,\"Blocker\":false,\"IntervalRates\":null}\",\"Weights\":\";10\"}",
}
expErr = "invalid character '\"' after top-level value"
if _, err := NewRateProfileFromMapDataDBMap("cgrates.org", "ExID", mapRP, JSONMarshaler{}); err == nil || err.Error() != expErr {
t.Errorf("Expected error <%v>, received <%v>", expErr, err)
}
// else if !reflect.DeepEqual(ToJSON(rp), ToJSON(rcv)) {
// t.Error(ToJSON(rcv))
// }
}

View File

@@ -166,3 +166,66 @@ func TestNewBincMarshler(t *testing.T) {
t.Errorf("Expected <%+v>, Received <%+v>", ToJSON(exp), ToJSON(rcv))
}
}
func TestCodecMsgpackMarshalerMarshal(t *testing.T) {
cmm := &CodecMsgpackMarshaler{&codec.MsgpackHandle{}}
v := "texted"
exp := []byte{166, 116, 101, 120, 116, 101, 100}
if rcv, err := cmm.Marshal(v); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(exp, rcv) {
t.Errorf("Expected <%v>, Received <%v>", exp, rcv)
}
}
func TestCodecMsgpackMarshalerUnmarshal(t *testing.T) {
cmm := &CodecMsgpackMarshaler{&codec.MsgpackHandle{}}
data := []byte{116, 101, 100}
v := "testv"
expErr := "[pos 1]: invalid container type: expecting bin|str|array"
if err := cmm.Unmarshal(data, v); err == nil || err.Error() != expErr {
t.Errorf("Expected error <%v>, Received <%v>", expErr, err)
}
}
func TestBincMarshalerMarshal(t *testing.T) {
bm := &BincMarshaler{&codec.BincHandle{}}
v := "testinterface"
exp := []byte{64, 13, 116, 101, 115, 116, 105, 110, 116, 101, 114, 102, 97, 99, 101}
if rcv, err := bm.Marshal(v); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(exp, rcv) {
t.Errorf("Expected <%v>, Received <%v>", exp, rcv)
}
}
func TestBincMarshalerUnmarshal(t *testing.T) {
bm := &BincMarshaler{&codec.BincHandle{}}
v := "testinterce"
data := []byte{64, 13, 11, 115, 116, 105, 110, 116, 101, 114, 102, 97, 99, 101}
expErr := "unexpected EOF"
if err := bm.Unmarshal(data, v); err == nil || err.Error() != expErr {
t.Errorf("Expected error <%v>, Received <%v>", expErr, err)
}
}
func TestGOBMarshalerMarshal(t *testing.T) {
v := "test"
gobm := GOBMarshaler{}
exp := []byte{7, 12, 0, 4, 116, 101, 115, 116}
if rcv, err := gobm.Marshal(v); err != nil {
t.Error(rcv, err)
} else if !reflect.DeepEqual(exp, rcv) {
t.Errorf("Expected <%v>, Received <%v>", exp, rcv)
}
}
func TestGOBMarshalerUnmarshal(t *testing.T) {
gobm := GOBMarshaler{}
v := "testinterce"
data := []byte{64, 13, 11, 115, 116, 105, 110, 116, 101, 114, 102, 97, 99, 101}
expErr := "gob: attempt to decode into a non-pointer"
if err := gobm.Unmarshal(data, v); err == nil || err.Error() != expErr {
t.Errorf("Expected error <%v>, Received <%v>", expErr, err)
}
}