mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Add new unit tests on engine
This commit is contained in:
committed by
Dan Christian Bogos
parent
8bf51a6112
commit
336b85e5dc
@@ -26,6 +26,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
func TestBalanceSortPrecision(t *testing.T) {
|
||||
@@ -583,3 +584,50 @@ func TestBalancesMatchDestination(t *testing.T) {
|
||||
t.Errorf("MatchDestination(anydestination): expected true, got false for empty DestinationIDs map")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBalancesSetInitialValue(t *testing.T) {
|
||||
t.Run("OldNotNull", func(t *testing.T) {
|
||||
as := &AccountSummary{
|
||||
BalanceSummaries: BalanceSummaries{
|
||||
{UUID: "1", Value: 100, Initial: 0},
|
||||
{UUID: "2", Value: 200, Initial: 0},
|
||||
},
|
||||
}
|
||||
old := &AccountSummary{
|
||||
BalanceSummaries: BalanceSummaries{
|
||||
{UUID: "1", Value: 50, Initial: 0},
|
||||
{UUID: "3", Value: 300, Initial: 0},
|
||||
},
|
||||
}
|
||||
as.SetInitialValue(old)
|
||||
expected := &AccountSummary{
|
||||
BalanceSummaries: BalanceSummaries{
|
||||
{UUID: "1", Value: 100, Initial: 50},
|
||||
{UUID: "2", Value: 200, Initial: 0},
|
||||
{UUID: "3", Value: 0, Initial: 0},
|
||||
},
|
||||
}
|
||||
if diff := cmp.Diff(as, expected); diff != "" {
|
||||
t.Errorf("Unexpected result (-got +want):\n%s", diff)
|
||||
}
|
||||
})
|
||||
t.Run("OldNull", func(t *testing.T) {
|
||||
as := &AccountSummary{
|
||||
BalanceSummaries: BalanceSummaries{
|
||||
{UUID: "1", Value: 100, Initial: 0},
|
||||
{UUID: "2", Value: 200, Initial: 0},
|
||||
},
|
||||
}
|
||||
as.SetInitialValue(nil)
|
||||
expected := &AccountSummary{
|
||||
BalanceSummaries: BalanceSummaries{
|
||||
{UUID: "1", Value: 100, Initial: 0},
|
||||
{UUID: "2", Value: 200, Initial: 0},
|
||||
},
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(as, expected); diff != "" {
|
||||
t.Errorf("Unexpected result (-got +want):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -18,7 +18,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
package engine
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
func TestLibIndexIsDynamicDPPath(t *testing.T) {
|
||||
tests := []struct {
|
||||
@@ -38,3 +44,68 @@ func TestLibIndexIsDynamicDPPath(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLibIndexRemoveFilterIndexesForFilterErrnotFound(t *testing.T) {
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
dataDB := NewInternalDB(nil, nil, true, cfg.DataDbCfg().Items)
|
||||
dm := NewDataManager(dataDB, cfg.CacheCfg(), nil)
|
||||
tntCtx := "cgrates.org:*sessions"
|
||||
test := struct {
|
||||
name string
|
||||
idx map[string]utils.StringSet
|
||||
keys []string
|
||||
itemIDs utils.StringSet
|
||||
}{
|
||||
name: "testing for ErrNotFound",
|
||||
idx: map[string]utils.StringSet{
|
||||
"*string:~*req.Account:1001": utils.NewStringSet([]string{"AP1", "AP2"}),
|
||||
"*string:~*req.Account:1002": utils.NewStringSet([]string{"AP1", "AP2"}),
|
||||
},
|
||||
keys: []string{"*string:~*req.Account:1001"},
|
||||
itemIDs: utils.NewStringSet([]string{"AP1", "AP2"}),
|
||||
}
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
t.Cleanup(func() {
|
||||
if err := dataDB.Flush(""); err != nil {
|
||||
t.Logf("failed to flush dataDB: %v", err)
|
||||
}
|
||||
})
|
||||
if err := dm.SetIndexes(utils.CacheAttributeFilterIndexes, tntCtx, test.idx, true, ""); err != nil {
|
||||
t.Fatalf("dm.SetIndexes() returned unexpected error: %v", err)
|
||||
}
|
||||
err := removeFilterIndexesForFilter(dm, utils.CacheAttributeFilterIndexes, tntCtx, test.keys, test.itemIDs)
|
||||
if err != nil && !errors.Is(err, utils.ErrNotFound) {
|
||||
t.Fatalf("Expected error %v, got %v", utils.ErrNotFound, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestLibIndexSplitFilterIndexErrWrongIdxKeyFormat(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
tntCtxIdxKey string
|
||||
wantErr string
|
||||
}{
|
||||
{
|
||||
name: "invalid index key format with less than 4 parts",
|
||||
tntCtxIdxKey: "invalid:key",
|
||||
wantErr: "WRONG_IDX_KEY_FORMAT<invalid:key>",
|
||||
},
|
||||
{
|
||||
name: "another invalid index key format with less than 4 parts",
|
||||
tntCtxIdxKey: "another:invalid:key",
|
||||
wantErr: "WRONG_IDX_KEY_FORMAT<another:invalid:key>",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
_, _, err := splitFilterIndex(tt.tntCtxIdxKey)
|
||||
if err == nil {
|
||||
t.Fatalf("Expected error but got nil")
|
||||
}
|
||||
if err.Error() != tt.wantErr {
|
||||
t.Fatalf("Expected error %v, but got %v", tt.wantErr, err.Error())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user