Skip to content

Commit

Permalink
test: add tests for minting
Browse files Browse the repository at this point in the history
  • Loading branch information
janndriessen committed Apr 25, 2024
1 parent 30d2fd8 commit f6d09f1
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 36 deletions.
66 changes: 54 additions & 12 deletions src/quote/leveraged-extended/provider.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import { IndexCoopEthereum2xIndex } from 'constants/tokens'
import {
collateralDebtSwapData,
noopSwapData,
outputSwapData,
} from 'constants/swapdata'
import { noopSwapData } from 'constants/swapdata'
import { Exchange } from 'utils'
import { wei } from 'utils/numbers'
import {
Expand All @@ -21,7 +17,7 @@ const zeroExApi = ZeroExApiArbitrumSwapQuote
const { eth, usdc } = QuoteTokens

describe('LeveragedQuoteProvider()', () => {
test.skip('returns quote for ETH2X - minting', async () => {
test('returns quote for ETH2X - minting w/ ETH', async () => {
const indexToken = IndexCoopEthereum2xIndex
const indexTokenAmount = wei(1)
const request = {
Expand All @@ -43,12 +39,59 @@ describe('LeveragedQuoteProvider()', () => {
if (!quote) fail()
expect(quote.indexTokenAmount).toEqual(indexTokenAmount)
expect(quote.inputOutputTokenAmount.gt(0)).toBe(true)
expect(quote.swapDataDebtCollateral).toStrictEqual(
collateralDebtSwapData[indexToken.symbol]
)
expect(quote.swapDataPaymentToken).toStrictEqual(
outputSwapData[indexToken.symbol]['ETH']
// Testing for individual params as changing quotes could affect the results
expect(quote.swapDataDebtCollateral.exchange).not.toBe(Exchange.None)
expect(quote.swapDataDebtCollateral.fees.length).toBeGreaterThanOrEqual(1)
expect(
quote.swapDataDebtCollateral.path.some(
(address) => address === '0x82af49447d8a07e3bd95bd0d56f35241523fbab1'
)
).toBe(true)
expect(
quote.swapDataDebtCollateral.path.some(
(address) => address === '0xaf88d065e77c8cc2239327c5edb3a432268e5831'
)
).toBe(true)
})

test('returns quote for ETH2X - minting w/ ERC20', async () => {
const indexToken = IndexCoopEthereum2xIndex
const indexTokenAmount = wei(1)
const request = {
isMinting: true,
inputToken: usdc,
outputToken: {
symbol: indexToken.symbol,
decimals: 18,
address: indexToken.addressArbitrum!,
},
indexTokenAmount,
slippage: 0.5,
}
const quoteProvider = new LeveragedExtendedQuoteProvider(
provider,
zeroExApi
)
const quote = await quoteProvider.getQuote(request)
console.log(quote?.indexTokenAmount.toString())
console.log(quote?.inputOutputTokenAmount.toString())
console.log(quote?.swapDataPaymentToken)
if (!quote) fail()
expect(quote.indexTokenAmount).toEqual(indexTokenAmount)
expect(quote.inputOutputTokenAmount.gt(0)).toBe(true)
// Testing for individual params as changing quotes could affect the results
expect(quote.swapDataDebtCollateral.exchange).not.toBe(Exchange.None)
expect(quote.swapDataDebtCollateral.fees.length).toBeGreaterThanOrEqual(1)
expect(
quote.swapDataDebtCollateral.path.some(
(address) => address === '0x82af49447d8a07e3bd95bd0d56f35241523fbab1'
)
).toBe(true)
expect(
quote.swapDataDebtCollateral.path.some(
(address) => address === '0xaf88d065e77c8cc2239327c5edb3a432268e5831'
)
).toBe(true)
})

test('returns quote for ETH2X - redeeming to ETH', async () => {
Expand Down Expand Up @@ -113,7 +156,6 @@ describe('LeveragedQuoteProvider()', () => {
zeroExApi
)
const quote = await quoteProvider.getQuote(request)
console.log(quote?.inputOutputTokenAmount.toString())
if (!quote) fail()
expect(quote.indexTokenAmount).toEqual(indexTokenAmount)
expect(quote.inputOutputTokenAmount.gt(0)).toBe(true)
Expand Down
27 changes: 3 additions & 24 deletions src/quote/leveraged-extended/provider.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
import { BigNumber } from '@ethersproject/bignumber'
import { JsonRpcProvider } from '@ethersproject/providers'

import { ChainId } from 'constants/chains'
import {
ETH,
InterestCompoundingETHIndex,
MATIC,
stETH,
} from 'constants/tokens'
import { ETH, InterestCompoundingETHIndex } from 'constants/tokens'
import { ZeroExApi } from 'utils/0x'
import { slippageAdjustedTokenAmount } from 'utils/slippage'
import {
Expand Down Expand Up @@ -111,9 +105,7 @@ export class LeveragedExtendedQuoteProvider
)
const inputOutputTokenAddress = getPaymentTokenAddress(
isMinting ? inputToken.address : outputToken.address,
isMinting ? inputToken.symbol : outputToken.symbol,
isMinting,
chainId
isMinting ? inputToken.symbol : outputToken.symbol
)
const { swapDataPaymentToken, paymentTokenAmount } =
await getSwapDataAndPaymentTokenAmount(
Expand Down Expand Up @@ -150,24 +142,11 @@ export class LeveragedExtendedQuoteProvider

function getPaymentTokenAddress(
paymentTokenAddress: string,
paymentTokenSymbol: string,
isMinting: boolean,
chainId: number
paymentTokenSymbol: string
): string {
if (paymentTokenSymbol === ETH.symbol) {
return 'ETH'
}

if (paymentTokenSymbol === InterestCompoundingETHIndex.symbol && !isMinting) {
/* eslint-disable @typescript-eslint/no-non-null-assertion */
return stETH.address!
}

if (chainId === ChainId.Polygon && paymentTokenSymbol === MATIC.symbol) {
const WMATIC_ADDRESS = '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270'
return WMATIC_ADDRESS
}

return paymentTokenAddress
}

Expand Down

0 comments on commit f6d09f1

Please sign in to comment.