diff --git a/src/services/storage/models/agreement.model.ts b/src/services/storage/models/agreement.model.ts index 6ea7700c..148e8397 100644 --- a/src/services/storage/models/agreement.model.ts +++ b/src/services/storage/models/agreement.model.ts @@ -59,8 +59,12 @@ export default class Agreement extends Model { return price <= this.availableFunds ? price : this.availableFunds } + /** + * Helper which specifies if the Agreement has at the moment of the call + * sufficient funds for at least one more period. + */ @Column(DataType.VIRTUAL) get hasSufficientFunds () { - return this.toBePayedOut !== this.availableFunds + return this.availableFunds - this.toBePayedOut >= this.size * this.billingPrice } } diff --git a/test/services/storage/models.spec.ts b/test/services/storage/models.spec.ts index 266651ba..455a3bf3 100644 --- a/test/services/storage/models.spec.ts +++ b/test/services/storage/models.spec.ts @@ -153,7 +153,7 @@ const AGREEMENT_TEST_SCHEMA = [ billingPeriod: toSecond(hour), lastPayout: new Date(Date.now() - day) }, - true + false ], [ { @@ -165,6 +165,16 @@ const AGREEMENT_TEST_SCHEMA = [ }, false ], + [ + { + availableFunds: 120, + size: 10, + billingPrice: 10, + billingPeriod: toSecond(hour), + lastPayout: new Date(Date.now() - day) + }, + false + ], [ { availableFunds: 2400,