Skip to content

Commit ea8cf99

Browse files
committed
fix: sync new quota test
1 parent c825310 commit ea8cf99

File tree

2 files changed

+83
-7
lines changed

2 files changed

+83
-7
lines changed

src/sdk/sdk-legacy/core/creditAccount.spec.ts

Lines changed: 80 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,12 +1575,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
15751575
[STETH]: {
15761576
amountInTarget: 10_1345n,
15771577
balance: 0n,
1578-
token: DAI,
1578+
token: STETH,
15791579
},
15801580
[WETH]: {
15811581
amountInTarget: 0n * PERCENTAGE_FACTOR,
15821582
balance: 0n,
1583-
token: DAI,
1583+
token: WETH,
15841584
},
15851585
},
15861586

@@ -1637,12 +1637,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
16371637
[STETH]: {
16381638
amountInTarget: 10_1345n,
16391639
balance: 0n,
1640-
token: DAI,
1640+
token: STETH,
16411641
},
16421642
[WETH]: {
16431643
amountInTarget: 0n * PERCENTAGE_FACTOR,
16441644
balance: 0n,
1645-
token: DAI,
1645+
token: WETH,
16461646
},
16471647
},
16481648

@@ -1681,6 +1681,82 @@ describe("CreditAccount calcQuotaUpdate test", () => {
16811681
},
16821682
});
16831683
});
1684+
it("should buy quota correctly when all assets listed in both buy and spend", () => {
1685+
const result = CreditAccountData_Legacy.calcQuotaUpdate({
1686+
maxDebt: HUGE_MAX_DEBT,
1687+
quotaReserve: QUOTA_RESERVE,
1688+
quotas: cmQuotas,
1689+
initialQuotas: {
1690+
...caQuota,
1691+
[DAI]: {
1692+
quota: 0n * PERCENTAGE_FACTOR,
1693+
},
1694+
[STETH]: {
1695+
quota: 15n * PERCENTAGE_FACTOR,
1696+
},
1697+
},
1698+
assetsAfterUpdate: {
1699+
[STETH]: {
1700+
amountInTarget: 0n * PERCENTAGE_FACTOR,
1701+
balance: 0n,
1702+
token: STETH,
1703+
},
1704+
[DAI]: {
1705+
amountInTarget: 10n * PERCENTAGE_FACTOR,
1706+
balance: 0n,
1707+
token: DAI,
1708+
},
1709+
[WETH]: {
1710+
amountInTarget: 5n * PERCENTAGE_FACTOR,
1711+
balance: 0n,
1712+
token: WETH,
1713+
},
1714+
},
1715+
1716+
allowedToObtain: {
1717+
[STETH]: {},
1718+
[DAI]: {},
1719+
[WETH]: {},
1720+
},
1721+
allowedToSpend: {
1722+
[STETH]: {},
1723+
[DAI]: {},
1724+
[WETH]: {},
1725+
},
1726+
liquidationThresholds: DEFAULT_LT,
1727+
});
1728+
1729+
expect(result.quotaIncrease).toEqual([
1730+
{
1731+
balance: 10n * PERCENTAGE_FACTOR,
1732+
token: DAI,
1733+
},
1734+
]);
1735+
expect(result.quotaDecrease).toEqual([
1736+
{
1737+
balance: MIN_INT96,
1738+
token: STETH,
1739+
},
1740+
{
1741+
balance: -5n * PERCENTAGE_FACTOR,
1742+
token: WETH,
1743+
},
1744+
]);
1745+
expect(result.desiredQuota).toEqual({
1746+
[DAI]: {
1747+
balance: 10n * PERCENTAGE_FACTOR,
1748+
token: DAI,
1749+
},
1750+
[WETH]: {
1751+
balance: 5n * PERCENTAGE_FACTOR,
1752+
token: WETH,
1753+
},
1754+
[STETH]: {
1755+
balance: 0n * PERCENTAGE_FACTOR,
1756+
token: STETH,
1757+
},
1758+
});
1759+
});
16841760
});
16851761

16861762
describe("CreditAccount calcAvgQuotaBorrowRate test", () => {

src/sdk/sdk-legacy/core/creditAccount.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ export class CreditAccountData_Legacy {
591591
Record<Address, Asset>
592592
>((acc, token) => {
593593
const ch = this.getSingleQuotaChange(token as Address, 0n, props);
594-
if (ch) acc[ch.token] = ch;
594+
if (ch && ch.balance < 0) acc[ch.token] = ch;
595595
return acc;
596596
}, {});
597597

@@ -623,7 +623,7 @@ export class CreditAccountData_Legacy {
623623
maxQuotaIncrease,
624624
props,
625625
);
626-
if (ch) acc[ch.token] = ch;
626+
if (ch && ch.balance > 0) acc[ch.token] = ch;
627627
return acc;
628628
}, {});
629629

@@ -701,7 +701,7 @@ export class CreditAccountData_Legacy {
701701
const quotaChange =
702702
unsafeQuotaChange > 0
703703
? BigIntMath.min(maxQuotaIncrease, unsafeQuotaChange)
704-
: initialQuota !== 0n &&
704+
: unsafeQuotaChange < 0 &&
705705
BigIntMath.abs(unsafeQuotaChange) >= initialQuota
706706
? MIN_INT96
707707
: unsafeQuotaChange;

0 commit comments

Comments
 (0)