Add additional order factory methods and refactor test to use them
This commit is contained in:
parent
250a9a4809
commit
059162a90a
@ -27,74 +27,37 @@ describe('buyQuoteCalculator', () => {
|
||||
// the second order has a rate of 2 makerAsset / WETH with a takerFee of 100 ZRX and has 200 / 200 makerAsset units left to fill (completely fillable)
|
||||
// generate one order for fees
|
||||
// the fee order has a rate of 1 ZRX / WETH with no taker fee and has 100 ZRX left to fill (completely fillable)
|
||||
const firstOrder = orderFactory.createOrder(
|
||||
NULL_ADDRESS,
|
||||
new BigNumber(400),
|
||||
NULL_BYTES,
|
||||
new BigNumber(100),
|
||||
NULL_BYTES,
|
||||
NULL_ADDRESS,
|
||||
{
|
||||
takerFee: new BigNumber(200),
|
||||
},
|
||||
);
|
||||
const firstRemainingFillAmount = new BigNumber(200);
|
||||
const secondOrder = orderFactory.createOrder(
|
||||
NULL_ADDRESS,
|
||||
new BigNumber(200),
|
||||
NULL_BYTES,
|
||||
new BigNumber(100),
|
||||
NULL_BYTES,
|
||||
NULL_ADDRESS,
|
||||
{
|
||||
takerFee: new BigNumber(100),
|
||||
},
|
||||
);
|
||||
const secondRemainingFillAmount = secondOrder.makerAssetAmount;
|
||||
const signedOrders = _.map([firstOrder, secondOrder], order => {
|
||||
return {
|
||||
...order,
|
||||
signature: NULL_BYTES,
|
||||
};
|
||||
const firstOrder = orderFactory.createSignedOrderFromPartial({
|
||||
makerAssetAmount: new BigNumber(400),
|
||||
takerAssetAmount: new BigNumber(100),
|
||||
takerFee: new BigNumber(200),
|
||||
});
|
||||
const firstRemainingFillAmount = new BigNumber(200);
|
||||
const secondOrder = orderFactory.createSignedOrderFromPartial({
|
||||
makerAssetAmount: new BigNumber(200),
|
||||
takerAssetAmount: new BigNumber(100),
|
||||
takerFee: new BigNumber(100),
|
||||
});
|
||||
const secondRemainingFillAmount = secondOrder.makerAssetAmount;
|
||||
ordersAndFillableAmounts = {
|
||||
orders: signedOrders,
|
||||
orders: [firstOrder, secondOrder],
|
||||
remainingFillableMakerAssetAmounts: [firstRemainingFillAmount, secondRemainingFillAmount],
|
||||
};
|
||||
const smallFeeOrder = orderFactory.createOrder(
|
||||
NULL_ADDRESS,
|
||||
new BigNumber(100),
|
||||
NULL_BYTES,
|
||||
new BigNumber(100),
|
||||
NULL_BYTES,
|
||||
NULL_ADDRESS,
|
||||
);
|
||||
const signedSmallFeeOrder = {
|
||||
...smallFeeOrder,
|
||||
signature: NULL_BYTES,
|
||||
};
|
||||
const smallFeeOrder = orderFactory.createSignedOrderFromPartial({
|
||||
makerAssetAmount: new BigNumber(100),
|
||||
takerAssetAmount: new BigNumber(100),
|
||||
});
|
||||
smallFeeOrderAndFillableAmount = {
|
||||
orders: [signedSmallFeeOrder],
|
||||
remainingFillableMakerAssetAmounts: [signedSmallFeeOrder.makerAssetAmount],
|
||||
};
|
||||
const largeFeeOrder = orderFactory.createOrder(
|
||||
NULL_ADDRESS,
|
||||
new BigNumber(100),
|
||||
NULL_BYTES,
|
||||
new BigNumber(200),
|
||||
NULL_BYTES,
|
||||
NULL_ADDRESS,
|
||||
);
|
||||
const signedLargeFeeOrder = {
|
||||
...largeFeeOrder,
|
||||
signature: NULL_BYTES,
|
||||
orders: [smallFeeOrder],
|
||||
remainingFillableMakerAssetAmounts: [smallFeeOrder.makerAssetAmount],
|
||||
};
|
||||
const largeFeeOrder = orderFactory.createSignedOrderFromPartial({
|
||||
makerAssetAmount: new BigNumber(100),
|
||||
takerAssetAmount: new BigNumber(200),
|
||||
});
|
||||
allFeeOrdersAndFillableAmounts = {
|
||||
orders: [signedSmallFeeOrder, signedLargeFeeOrder],
|
||||
remainingFillableMakerAssetAmounts: [
|
||||
signedSmallFeeOrder.makerAssetAmount,
|
||||
largeFeeOrder.makerAssetAmount,
|
||||
],
|
||||
orders: [smallFeeOrder, largeFeeOrder],
|
||||
remainingFillableMakerAssetAmounts: [smallFeeOrder.makerAssetAmount, largeFeeOrder.makerAssetAmount],
|
||||
};
|
||||
});
|
||||
it('should throw if not enough maker asset liquidity', () => {
|
||||
|
@ -8,8 +8,21 @@ import { orderHashUtils } from './order_hash';
|
||||
import { generatePseudoRandomSalt } from './salt';
|
||||
import { signatureUtils } from './signature_utils';
|
||||
import { CreateOrderOpts } from './types';
|
||||
|
||||
export const orderFactory = {
|
||||
createOrderFromPartial(partialOrder: Partial<Order>): Order {
|
||||
const defaultOrder = generateEmptyOrder();
|
||||
return {
|
||||
...defaultOrder,
|
||||
...partialOrder,
|
||||
};
|
||||
},
|
||||
createSignedOrderFromPartial(partialSignedOrder: Partial<SignedOrder>): SignedOrder {
|
||||
const defaultOrder = generateEmptySignedOrder();
|
||||
return {
|
||||
...defaultOrder,
|
||||
...partialSignedOrder,
|
||||
};
|
||||
},
|
||||
createOrder(
|
||||
makerAddress: string,
|
||||
makerAssetAmount: BigNumber,
|
||||
@ -69,6 +82,30 @@ export const orderFactory = {
|
||||
},
|
||||
};
|
||||
|
||||
function generateEmptySignedOrder(): SignedOrder {
|
||||
return {
|
||||
...generateEmptyOrder(),
|
||||
signature: constants.NULL_BYTES,
|
||||
};
|
||||
}
|
||||
function generateEmptyOrder(): Order {
|
||||
return {
|
||||
senderAddress: constants.NULL_ADDRESS,
|
||||
makerAddress: constants.NULL_ADDRESS,
|
||||
takerAddress: constants.NULL_ADDRESS,
|
||||
makerFee: constants.ZERO_AMOUNT,
|
||||
takerFee: constants.ZERO_AMOUNT,
|
||||
makerAssetAmount: constants.ZERO_AMOUNT,
|
||||
takerAssetAmount: constants.ZERO_AMOUNT,
|
||||
makerAssetData: constants.NULL_BYTES,
|
||||
takerAssetData: constants.NULL_BYTES,
|
||||
salt: generatePseudoRandomSalt(),
|
||||
exchangeAddress: constants.NULL_ADDRESS,
|
||||
feeRecipientAddress: constants.NULL_ADDRESS,
|
||||
expirationTimeSeconds: constants.INFINITE_TIMESTAMP_SEC,
|
||||
};
|
||||
}
|
||||
|
||||
function generateDefaultCreateOrderOpts(): {
|
||||
takerAddress: string;
|
||||
senderAddress: string;
|
||||
|
Loading…
x
Reference in New Issue
Block a user