/* Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments Copyright (C) ITsysCOM GmbH This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or56 (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see */ package engine import ( "reflect" "testing" "time" "github.com/cgrates/cgrates/utils" ) func TestModelsAsMapStringInterface(t *testing.T) { testCdrSql := CDRsql{ ID: 1, // Cgrid: "testCgrID1", RunID: "testRunID", OriginHost: "testOriginHost", Source: "testSource", OriginID: "testOriginId", TOR: "testTOR", RequestType: "testRequestType", Tenant: "cgrates.org", Category: "testCategory", Account: "testAccount", Subject: "testSubject", Destination: "testDestination", SetupTime: time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC), AnswerTime: utils.TimePointer(time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC)), Usage: 2, ExtraFields: "extraFields", CostSource: "testCostSource", Cost: 2, CostDetails: "testCostDetails", ExtraInfo: "testExtraInfo", CreatedAt: time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC), UpdatedAt: time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC), DeletedAt: utils.TimePointer(time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC)), } expected := map[string]any{ // "cgrid": testCdrSql.Cgrid, "run_id": testCdrSql.RunID, "origin_host": testCdrSql.OriginHost, "source": testCdrSql.Source, "origin_id": testCdrSql.OriginID, "tor": testCdrSql.TOR, "request_type": testCdrSql.RequestType, "tenant": testCdrSql.Tenant, "category": testCdrSql.Category, "account": testCdrSql.Account, "subject": testCdrSql.Subject, "destination": testCdrSql.Destination, "setup_time": testCdrSql.SetupTime, "answer_time": testCdrSql.AnswerTime, "usage": testCdrSql.Usage, "extra_fields": testCdrSql.ExtraFields, "cost_source": testCdrSql.CostSource, "cost": testCdrSql.Cost, "cost_details": testCdrSql.CostDetails, "extra_info": testCdrSql.ExtraInfo, "created_at": testCdrSql.CreatedAt, "updated_at": testCdrSql.UpdatedAt, } result := testCdrSql.AsMapStringInterface() if !reflect.DeepEqual(expected, result) { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) } } func TestResourceMdlTableName(t *testing.T) { model := ResourceMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "fltrId", Weights: "weights", UsageTTL: "useageTTL", Limit: "limit", AllocationMessage: "message", Blocker: true, Stored: true, ThresholdIDs: "thresholdid", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPResources) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPResources, rcv) } } func TestStatMdlTableName(t *testing.T) { model := StatMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "fltrId", Weights: "weights", Blockers: "blockers", QueueLength: 2, TTL: "TTL", MinItems: 3, Stored: true, ThresholdIDs: "thresholdid", MetricIDs: "metricIds", MetricFilterIDs: "metricfltrIds", MetricBlockers: "metricBlockrs", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPStats) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPStats, rcv) } } func TestThresholdMdlTableName(t *testing.T) { model := ThresholdMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "fltrId", Weights: "weights", MaxHits: 44, MinHits: 1, MinSleep: "2s", Blocker: true, ActionProfileIDs: "actProfileIds", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPThresholds) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPThresholds, rcv) } } func TestFilterMdlTableName(t *testing.T) { model := FilterMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", Type: "type", Element: "elm", Values: "vals", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPFilters) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPFilters, rcv) } } func TestCDRsqlTableName(t *testing.T) { cdrSql := &CDRsql{ ID: 1, RunID: "testRunID", OriginHost: "testOriginHost", Source: "testSource", OriginID: "testOriginId", TOR: "testTOR", RequestType: "testRequestType", Tenant: "cgrates.org", Category: "testCategory", Account: "testAccount", Subject: "testSubject", Destination: "testDestination", SetupTime: time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC), AnswerTime: utils.TimePointer(time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC)), Usage: 2, ExtraFields: "extraFields", CostSource: "testCostSource", Cost: 2, CostDetails: "testCostDetails", ExtraInfo: "testExtraInfo", CreatedAt: time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC), UpdatedAt: time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC), DeletedAt: utils.TimePointer(time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC)), } rcv := cdrSql.TableName() if !reflect.DeepEqual(rcv, utils.CDRsTBL) { t.Errorf("Expected <%v>, Received <%v>", utils.CDRsTBL, rcv) } } func TestSessionCostsSQLTableName(t *testing.T) { sessCostSql := &SessionCostsSQL{ ID: 1, RunID: "testRunID", OriginHost: "testOriginHost", OriginID: "testOriginId", CostSource: "testCostSource", Usage: 2, CostDetails: "testCostDetails", CreatedAt: time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC), DeletedAt: utils.TimePointer(time.Date(2021, 3, 3, 3, 3, 3, 3, time.UTC)), } rcv := sessCostSql.TableName() if !reflect.DeepEqual(rcv, utils.SessionCostsTBL) { t.Errorf("Expected <%v>, Received <%v>", utils.SessionCostsTBL, rcv) } } func TestTBLVersionTableName(t *testing.T) { tblVer := &TBLVersion{ ID: 1, Item: "testItem", Version: 14, } rcv := tblVer.TableName() if !reflect.DeepEqual(rcv, utils.TBLVersions) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLVersions, rcv) } } func TestRouteMdlTableName(t *testing.T) { model := RouteMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "fltrId", Weights: "weights", Blockers: "blockers", Sorting: "testSorting", SortingParameters: "testSortingParams", RouteID: "testRouteId", RouteFilterIDs: "testRouteFltrId", RouteAccountIDs: "testRouteAccIds", RouteRateProfileIDs: "testRouteRateProfileIds", RouteResourceIDs: "testRouteResrcIds", RouteStatIDs: "testRouteStatIds", RouteWeights: "testRouteWeights", RouteBlockers: "testRouteBlckrs", RouteParameters: "testRouteParams", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPRoutes) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPRoutes, rcv) } } func TestAttributeMdlTableName(t *testing.T) { model := AttributeMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "fltrId", Weights: "weights", Blockers: "blockers", AttributeFilterIDs: "testAttrFltrIds", AttributeBlockers: "testAttrBlckrs", Path: "testPath", Type: "testType", Value: "testValue", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPAttributes) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPAttributes, rcv) } } func TestChargerMdlTableName(t *testing.T) { model := ChargerMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "fltrId", Weights: "weights", Blockers: "blockers", RunID: "testRunId", AttributeIDs: "testAttrIds", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPChargers) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPChargers, rcv) } } func TestRateProfileMdlTableName(t *testing.T) { model := RateProfileMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "testFiltrIds", Weights: "testWeights", MinCost: 1, MaxCost: 99, MaxCostStrategy: "testMaxCostStrat", RateID: "testRateId", RateFilterIDs: "testRateFltrIds", RateActivationTimes: "testRateActiveTime", RateWeights: "testRateWeights", RateBlocker: true, RateIntervalStart: "testRateIntervalStart", RateFixedFee: 22, RateRecurrentFee: 55, RateUnit: "testRateUnit", RateIncrement: "testRateIncrement", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPRateProfiles) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPRateProfiles, rcv) } } func TestActionProfileMdlTableName(t *testing.T) { model := ActionProfileMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "testFiltrIds", Weights: "testWeights", Blockers: "testBlockers", Schedule: "testSchedule", TargetType: "testTargetType", TargetIDs: "testTargetIds", ActionID: "testActionId", ActionFilterIDs: "testActionFltrIds", ActionTTL: "testActionTTL", ActionType: "testActionType", ActionOpts: "testActionOpts", ActionWeights: "testActionWeights", ActionBlockers: "testActionBlockers", ActionDiktatsID: "testActionDiktatsID", ActionDiktatsFilterIDs: "testActionDiktatsFilterIDs", ActionDiktatsOpts: "testActionDiktatsOpts", ActionDiktatsWeights: "testActionDiktatsWeights", ActionDiktatsBlockers: "testActionDiktatsBlockers", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPActionProfiles) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPActionProfiles, rcv) } } func TestAccountMdlTableName(t *testing.T) { model := AccountMdl{ PK: 2, Tpid: "tpid", Tenant: "tenant", ID: "id", FilterIDs: "testFiltrIds", Weights: "testWeights", Blockers: "testBlockers", Opts: "testOpts", BalanceID: "testBalId", BalanceFilterIDs: "testBalFltrIds", BalanceWeights: "testBalWeights", BalanceBlockers: "testBalBlockrs", BalanceType: "testBalType", BalanceUnits: "testBalUnits", BalanceUnitFactors: "testBalUnitFactors", BalanceOpts: "testBalOpts", BalanceCostIncrements: "testBalCostIncr", BalanceAttributeIDs: "testBalAttrIds", BalanceRateProfileIDs: "testBalRateProfileIds", ThresholdIDs: "testThresholdIds", CreatedAt: time.Now(), } rcv := model.TableName() if !reflect.DeepEqual(rcv, utils.TBLTPAccounts) { t.Errorf("Expected <%v>, Received <%v>", utils.TBLTPAccounts, rcv) } }