tests for marketSellOrders
This commit is contained in:
parent
e45a0ffdbf
commit
a2df428afb
@ -271,7 +271,7 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
await blockchainLifecycle.revertAsync();
|
await blockchainLifecycle.revertAsync();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('General Sanity Checks', () => {
|
describe('General Sanity Checks', () => {
|
||||||
it('should revert if the signed transaction is not intended for supported', async () => {
|
it('should revert if the signed transaction is not intended for supported', async () => {
|
||||||
// Create signed order without the fillOrder function selector
|
// Create signed order without the fillOrder function selector
|
||||||
const txDataBuf = ethUtil.toBuffer(compliantSignedFillOrderTx.data);
|
const txDataBuf = ethUtil.toBuffer(compliantSignedFillOrderTx.data);
|
||||||
@ -317,7 +317,7 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
// @TODO - greater than 1 balance
|
// @TODO - greater than 1 balance
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('batchFillOrders', () => {
|
describe('batchFillOrders', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
@ -411,7 +411,7 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('batchFillOrdersNoThrow', () => {
|
describe('batchFillOrdersNoThrow', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
@ -505,7 +505,7 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('batchFillOrKillOrders', () => {
|
describe('batchFillOrKillOrders', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
@ -612,7 +612,7 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('fillOrder', () => {
|
describe('fillOrder', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
@ -684,7 +684,7 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('fillOrderNoThrow', () => {
|
describe('fillOrderNoThrow', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
@ -756,7 +756,7 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.only('fillOrKillOrder', () => {
|
describe('fillOrKillOrder', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
@ -840,12 +840,102 @@ describe.only(ContractName.BalanceThresholdFilter, () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('marketBuyOrders', () => {
|
describe.only('marketSellOrders', () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
erc20Balances = await erc20Wrapper.getBalancesAsync();
|
||||||
|
compliantSignedOrder = await orderFactory.newSignedOrderAsync();
|
||||||
|
compliantSignedOrder2 = await orderFactory2.newSignedOrderAsync();
|
||||||
|
});
|
||||||
|
it('should transfer the correct amounts and validate both makers/taker when both makers and taker meet the balance threshold', async () => {
|
||||||
|
// Execute a valid fill
|
||||||
|
const orders = [compliantSignedOrder, compliantSignedOrder2];
|
||||||
|
const cumulativeTakerAssetFillAmount = compliantSignedOrder.takerAssetAmount.plus(takerAssetFillAmount);
|
||||||
|
const txReceipt = await balanceThresholdWrapper.marketSellOrdersAsync(orders, compliantTakerAddress, {takerAssetFillAmount: cumulativeTakerAssetFillAmount});
|
||||||
|
// Assert validated addresses
|
||||||
|
const expectedValidatedAddresseses = [compliantSignedOrder.makerAddress, compliantSignedOrder2.makerAddress, compliantSignedFillOrderTx.signerAddress];
|
||||||
|
assertValidatedAddressesLog(txReceipt, expectedValidatedAddresseses);
|
||||||
|
// Check balances
|
||||||
|
const newBalances = await erc20Wrapper.getBalancesAsync();
|
||||||
|
const makerAssetFillAmount2 = takerAssetFillAmount
|
||||||
|
.times(compliantSignedOrder.makerAssetAmount)
|
||||||
|
.dividedToIntegerBy(compliantSignedOrder.takerAssetAmount);
|
||||||
|
const makerFeePaid2 = compliantSignedOrder2.makerFee
|
||||||
|
.times(makerAssetFillAmount2)
|
||||||
|
.dividedToIntegerBy(compliantSignedOrder2.makerAssetAmount);
|
||||||
|
const takerFeePaid2 = compliantSignedOrder2.takerFee
|
||||||
|
.times(makerAssetFillAmount2)
|
||||||
|
.dividedToIntegerBy(compliantSignedOrder2.makerAssetAmount);
|
||||||
|
const takerFeePaid = compliantSignedOrder.takerFee.plus(takerFeePaid2);
|
||||||
|
const cumulativeMakerAssetFillAmount = compliantSignedOrder.makerAssetAmount.plus(makerAssetFillAmount2);
|
||||||
|
// Maker #1
|
||||||
|
expect(newBalances[compliantMakerAddress][defaultMakerAssetAddress]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantMakerAddress][defaultMakerAssetAddress].minus(compliantSignedOrder.makerAssetAmount),
|
||||||
|
);
|
||||||
|
expect(newBalances[compliantMakerAddress][defaultTakerAssetAddress]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantMakerAddress][defaultTakerAssetAddress].add(compliantSignedOrder.takerAssetAmount),
|
||||||
|
);
|
||||||
|
expect(newBalances[compliantMakerAddress][zrxToken.address]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantMakerAddress][zrxToken.address].minus(compliantSignedOrder.makerFee),
|
||||||
|
);
|
||||||
|
// Maker #2
|
||||||
|
expect(newBalances[compliantMakerAddress2][defaultMakerAssetAddress]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantMakerAddress2][defaultMakerAssetAddress].minus(makerAssetFillAmount2),
|
||||||
|
);
|
||||||
|
expect(newBalances[compliantMakerAddress2][defaultTakerAssetAddress]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantMakerAddress2][defaultTakerAssetAddress].add(takerAssetFillAmount),
|
||||||
|
);
|
||||||
|
expect(newBalances[compliantMakerAddress2][zrxToken.address]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantMakerAddress2][zrxToken.address].minus(makerFeePaid2),
|
||||||
|
);
|
||||||
|
// Taker
|
||||||
|
expect(newBalances[compliantTakerAddress][defaultTakerAssetAddress]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantTakerAddress][defaultTakerAssetAddress].minus(cumulativeTakerAssetFillAmount),
|
||||||
|
);
|
||||||
|
expect(newBalances[compliantTakerAddress][defaultMakerAssetAddress]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantTakerAddress][defaultMakerAssetAddress].add(cumulativeMakerAssetFillAmount),
|
||||||
|
);
|
||||||
|
expect(newBalances[compliantTakerAddress][zrxToken.address]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[compliantTakerAddress][zrxToken.address].minus(takerFeePaid),
|
||||||
|
);
|
||||||
|
// Fee recipient
|
||||||
|
expect(newBalances[feeRecipientAddress][zrxToken.address]).to.be.bignumber.equal(
|
||||||
|
erc20Balances[feeRecipientAddress][zrxToken.address].add(compliantSignedOrder.makerFee).add(makerFeePaid2).add(takerFeePaid),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('should revert if one maker does not meet the balance threshold', async () => {
|
||||||
|
// Create order set with one non-compliant maker address
|
||||||
|
const signedOrderWithBadMakerAddress = await orderFactory.newSignedOrderAsync({
|
||||||
|
makerAddress: nonCompliantAddress
|
||||||
|
});
|
||||||
|
const orders = [compliantSignedOrder, signedOrderWithBadMakerAddress];
|
||||||
|
// Execute transaction
|
||||||
|
return expectTransactionFailedAsync(
|
||||||
|
balanceThresholdWrapper.marketSellOrdersAsync(
|
||||||
|
orders,
|
||||||
|
compliantTakerAddress,
|
||||||
|
{takerAssetFillAmount}
|
||||||
|
),
|
||||||
|
RevertReason.AtLeastOneAddressDoesNotMeetBalanceThreshold
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('should revert if taker does not meet the balance threshold', async () => {
|
||||||
|
const orders = [compliantSignedOrder, compliantSignedOrder2];
|
||||||
|
return expectTransactionFailedAsync(
|
||||||
|
nonCompliantBalanceThresholdWrapper.marketSellOrdersAsync(
|
||||||
|
orders,
|
||||||
|
nonCompliantAddress,
|
||||||
|
{takerAssetFillAmount}
|
||||||
|
),
|
||||||
|
RevertReason.AtLeastOneAddressDoesNotMeetBalanceThreshold
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('marketBuyOrdersNoThrow', () => {
|
describe.only('marketBuyOrdersNoThrow', () => {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe('marketSellOrders', () => {
|
describe('marketSellOrders', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user