mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-17 14:19:54 +05:00
AccountS - TestABDebitUsage
This commit is contained in:
@@ -256,6 +256,13 @@ func (aB *abstractBalance) debitUsage(usage *utils.Decimal, startTime time.Time,
|
||||
usage.Big = roundedUsageWithIncrements(usage.Big, costIcrm.Increment.Big) // make sure usage is multiple of increments
|
||||
}
|
||||
if i == 0 { // no estimation done, covering full
|
||||
aB.blnCfg.Units.Big = utils.SubstractBig(aB.blnCfg.Units.Big, usage.Big)
|
||||
if hasLmt { // put back the limit
|
||||
aB.blnCfg.Units.Big = utils.SumBig(aB.blnCfg.Units.Big, blncLmt.Big)
|
||||
}
|
||||
if hasUF {
|
||||
usage.Big = utils.DivideBig(usage.Big, uF.Factor.Big)
|
||||
}
|
||||
return
|
||||
}
|
||||
usagePaid = new(decimal.Big).Copy(usage.Big)
|
||||
|
||||
@@ -43,7 +43,6 @@ func TestABDebitUsageFromConcrete(t *testing.T) {
|
||||
},
|
||||
Units: utils.NewDecimal(500, 0), // 500 EURcents
|
||||
},
|
||||
fltrS: new(engine.FilterS),
|
||||
},
|
||||
{
|
||||
blnCfg: &utils.Balance{
|
||||
@@ -54,7 +53,6 @@ func TestABDebitUsageFromConcrete(t *testing.T) {
|
||||
},
|
||||
Units: utils.NewDecimal(125, 2),
|
||||
},
|
||||
fltrS: new(engine.FilterS),
|
||||
},
|
||||
}}
|
||||
// consume only from first balance
|
||||
@@ -105,3 +103,41 @@ func TestABDebitUsageFromConcrete(t *testing.T) {
|
||||
t.Errorf("Unexpected units in first balance: %s", aB.cncrtBlncs[1].blnCfg.Units)
|
||||
}
|
||||
}
|
||||
|
||||
func TestABDebitUsage(t *testing.T) {
|
||||
aB := &abstractBalance{
|
||||
blnCfg: &utils.Balance{
|
||||
ID: "AB1",
|
||||
Type: utils.MetaAbstract,
|
||||
CostIncrements: []*utils.CostIncrement{
|
||||
{
|
||||
Increment: utils.NewDecimal(int64(time.Duration(time.Second)), 0),
|
||||
RecurrentFee: utils.NewDecimal(1, 0)},
|
||||
},
|
||||
Units: utils.NewDecimal(int64(time.Duration(60*time.Second)), 0), // 1 Minute
|
||||
},
|
||||
cncrtBlncs: []*concreteBalance{
|
||||
{
|
||||
blnCfg: &utils.Balance{
|
||||
ID: "CB1",
|
||||
Type: utils.MetaConcrete,
|
||||
UnitFactors: []*utils.UnitFactor{
|
||||
{
|
||||
Factor: utils.NewDecimal(1, 0), // EuroCents
|
||||
},
|
||||
},
|
||||
Units: utils.NewDecimal(50, 0), // 50 EURcents
|
||||
},
|
||||
},
|
||||
},
|
||||
fltrS: new(engine.FilterS)}
|
||||
|
||||
if _, err := aB.debitUsage(utils.NewDecimal(int64(time.Duration(30*time.Second)), 0),
|
||||
time.Now(), new(utils.CGREvent)); err != nil {
|
||||
t.Error(err)
|
||||
} else if aB.blnCfg.Units.Compare(utils.NewDecimal(int64(time.Duration(30*time.Second)), 0)) != 0 {
|
||||
t.Errorf("Unexpected units in abstract balance: %s", aB.blnCfg.Units)
|
||||
} else if aB.cncrtBlncs[0].blnCfg.Units.Compare(utils.NewDecimal(20, 0)) != 0 {
|
||||
t.Errorf("Unexpected units in abstract balance: %s", aB.blnCfg.Units)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user