fix: fallbacks duplicate check on source-index (#307)

This commit is contained in:
Jacob Evans
2021-08-16 11:25:22 +10:00
committed by GitHub
parent b84107d142
commit 4f32f3174f
5 changed files with 82 additions and 73 deletions

View File

@@ -7,6 +7,7 @@ import { ERC20BridgeSource, Fill } from '../src/utils/market_operation_utils/typ
const createFill = (
source: ERC20BridgeSource,
index: number = 0,
input: BigNumber = new BigNumber(100),
output: BigNumber = new BigNumber(100),
): Fill =>
@@ -18,6 +19,7 @@ const createFill = (
adjustedOutput: output,
flags: BigInt(0),
sourcePathId: source,
index,
} as Fill);
describe('Path', () => {
@@ -83,4 +85,26 @@ describe('Path', () => {
const sources = path.fills.map(f => f.source);
expect(sources).to.deep.eq([ERC20BridgeSource.Uniswap, ERC20BridgeSource.LiquidityProvider]);
});
it('Removes partial Native orders and replaces with unused fills', () => {
const targetInput = new BigNumber(100);
const path = Path.create(
MarketOperation.Sell,
[
createFill(ERC20BridgeSource.Uniswap, 0, new BigNumber(50)),
createFill(ERC20BridgeSource.Native, 0, new BigNumber(50)),
],
targetInput,
);
const fallback = Path.create(
MarketOperation.Sell,
[
createFill(ERC20BridgeSource.Uniswap, 0, new BigNumber(50)),
createFill(ERC20BridgeSource.Uniswap, 1, new BigNumber(50)),
],
targetInput,
);
path.addFallback(fallback);
const sources = path.fills.map(f => f.source);
expect(sources).to.deep.eq([ERC20BridgeSource.Uniswap, ERC20BridgeSource.Uniswap]);
});
});