Fix dev-utils tests

This commit is contained in:
Amir Bandeali 2019-06-07 16:50:46 -07:00
parent c22ed861d1
commit f2f81b0f7b
3 changed files with 39 additions and 30 deletions

View File

@ -22,7 +22,7 @@ import { chaiSetup, constants, LogDecoder, provider, txDefaults, web3Wrapper } f
import { BlockchainLifecycle } from '@0x/dev-utils'; import { BlockchainLifecycle } from '@0x/dev-utils';
import { assetDataUtils } from '@0x/order-utils'; import { assetDataUtils } from '@0x/order-utils';
import { AssetProxyId } from '@0x/types'; import { AssetProxyId } from '@0x/types';
import { BigNumber } from '@0x/utils'; import { BigNumber, providerUtils } from '@0x/utils';
import * as ethUtil from 'ethereumjs-util'; import * as ethUtil from 'ethereumjs-util';
import { artifacts, LibAssetDataContract } from '../src'; import { artifacts, LibAssetDataContract } from '../src';
@ -87,12 +87,12 @@ describe('LibAssetData', () => {
before(async () => { before(async () => {
await blockchainLifecycle.startAsync(); await blockchainLifecycle.startAsync();
const chainId = await providerUtils.getChainIdAsync(provider);
exchange = await ExchangeContract.deployFrom0xArtifactAsync( exchange = await ExchangeContract.deployFrom0xArtifactAsync(
exchangeArtifacts.Exchange, exchangeArtifacts.Exchange,
provider, provider,
txDefaults, txDefaults,
constants.NULL_BYTES, new BigNumber(chainId),
); );
erc20Proxy = await ERC20ProxyContract.deployFrom0xArtifactAsync( erc20Proxy = await ERC20ProxyContract.deployFrom0xArtifactAsync(

View File

@ -23,6 +23,8 @@ const order = {
salt: new BigNumber('66097384406870180066678463045003379626790660770396923976862707230261946348951'), salt: new BigNumber('66097384406870180066678463045003379626790660770396923976862707230261946348951'),
makerAssetData: '0xf47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064', makerAssetData: '0xf47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064',
takerAssetData: '0xf47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e3', takerAssetData: '0xf47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e3',
makerFeeAssetData: '0xf47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064',
takerFeeAssetData: '0xf47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e3',
}; };
const takerAssetFillAmount = new BigNumber('100000000000000000000'); const takerAssetFillAmount = new BigNumber('100000000000000000000');
const signature = const signature =
@ -122,6 +124,8 @@ describe('LibTransactionDecoder', () => {
takerAssetAmount: order.makerAssetAmount, takerAssetAmount: order.makerAssetAmount,
makerFee: order.takerFee, makerFee: order.takerFee,
takerFee: order.makerFee, takerFee: order.makerFee,
makerFeeAssetData: order.takerFeeAssetData,
takerFeeAssetData: order.makerFeeAssetData,
}; };
const input = exchangeInterface.matchOrders.getABIEncodedTransactionData( const input = exchangeInterface.matchOrders.getABIEncodedTransactionData(
order, order,

View File

@ -21,7 +21,7 @@ import {
import { BlockchainLifecycle } from '@0x/dev-utils'; import { BlockchainLifecycle } from '@0x/dev-utils';
import { assetDataUtils, orderHashUtils } from '@0x/order-utils'; import { assetDataUtils, orderHashUtils } from '@0x/order-utils';
import { SignedOrder } from '@0x/types'; import { SignedOrder } from '@0x/types';
import { BigNumber } from '@0x/utils'; import { BigNumber, providerUtils } from '@0x/utils';
import * as chai from 'chai'; import * as chai from 'chai';
import { artifacts, DevUtilsContract } from '../src'; import { artifacts, DevUtilsContract } from '../src';
@ -37,11 +37,11 @@ describe('OrderValidationUtils', () => {
let erc20AssetData: string; let erc20AssetData: string;
let erc20AssetData2: string; let erc20AssetData2: string;
let erc721AssetData: string; let erc721AssetData: string;
let zrxAssetData: string; let feeAssetData: string;
let erc20Token: DummyERC20TokenContract; let erc20Token: DummyERC20TokenContract;
let erc20Token2: DummyERC20TokenContract; let erc20Token2: DummyERC20TokenContract;
let zrxToken: DummyERC20TokenContract; let feeErc20Token: DummyERC20TokenContract;
let erc721Token: DummyERC721TokenContract; let erc721Token: DummyERC721TokenContract;
let exchange: ExchangeContract; let exchange: ExchangeContract;
let devUtils: DevUtilsContract; let devUtils: DevUtilsContract;
@ -64,12 +64,13 @@ describe('OrderValidationUtils', () => {
before(async () => { before(async () => {
const accounts = await web3Wrapper.getAvailableAddressesAsync(); const accounts = await web3Wrapper.getAvailableAddressesAsync();
const usedAddresses = ([owner, makerAddress, takerAddress] = accounts.slice(0, 3)); const usedAddresses = ([owner, makerAddress, takerAddress] = accounts.slice(0, 3));
const chainId = await providerUtils.getChainIdAsync(provider);
const erc20Wrapper = new ERC20Wrapper(provider, usedAddresses, owner); const erc20Wrapper = new ERC20Wrapper(provider, usedAddresses, owner);
const erc721Wrapper = new ERC721Wrapper(provider, usedAddresses, owner); const erc721Wrapper = new ERC721Wrapper(provider, usedAddresses, owner);
const numDummyErc20ToDeploy = 3; const numDummyErc20ToDeploy = 3;
[erc20Token, zrxToken, erc20Token2] = await erc20Wrapper.deployDummyTokensAsync( [erc20Token, erc20Token2, feeErc20Token] = await erc20Wrapper.deployDummyTokensAsync(
numDummyErc20ToDeploy, numDummyErc20ToDeploy,
constants.DUMMY_TOKEN_DECIMALS, constants.DUMMY_TOKEN_DECIMALS,
); );
@ -78,12 +79,12 @@ describe('OrderValidationUtils', () => {
[erc721Token] = await erc721Wrapper.deployDummyTokensAsync(); [erc721Token] = await erc721Wrapper.deployDummyTokensAsync();
erc721Proxy = await erc721Wrapper.deployProxyAsync(); erc721Proxy = await erc721Wrapper.deployProxyAsync();
zrxAssetData = assetDataUtils.encodeERC20AssetData(zrxToken.address); feeAssetData = assetDataUtils.encodeERC20AssetData(feeErc20Token.address);
exchange = await ExchangeContract.deployFrom0xArtifactAsync( exchange = await ExchangeContract.deployFrom0xArtifactAsync(
exchangeArtifacts.Exchange, exchangeArtifacts.Exchange,
provider, provider,
txDefaults, txDefaults,
zrxAssetData, new BigNumber(chainId),
); );
multiAssetProxy = await MultiAssetProxyContract.deployFrom0xArtifactAsync( multiAssetProxy = await MultiAssetProxyContract.deployFrom0xArtifactAsync(
@ -103,7 +104,6 @@ describe('OrderValidationUtils', () => {
provider, provider,
txDefaults, txDefaults,
exchange.address, exchange.address,
zrxAssetData,
); );
erc20AssetData = assetDataUtils.encodeERC20AssetData(erc20Token.address); erc20AssetData = assetDataUtils.encodeERC20AssetData(erc20Token.address);
@ -111,11 +111,16 @@ describe('OrderValidationUtils', () => {
erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721Token.address, tokenId); erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721Token.address, tokenId);
const defaultOrderParams = { const defaultOrderParams = {
...constants.STATIC_ORDER_PARAMS, ...constants.STATIC_ORDER_PARAMS,
exchangeAddress: exchange.address,
makerAddress, makerAddress,
feeRecipientAddress: constants.NULL_ADDRESS, feeRecipientAddress: constants.NULL_ADDRESS,
makerAssetData: erc20AssetData, makerAssetData: erc20AssetData,
takerAssetData: erc20AssetData2, takerAssetData: erc20AssetData2,
makerFeeAssetData: feeAssetData,
takerFeeAssetData: feeAssetData,
domain: {
verifyingContractAddress: exchange.address,
chainId,
},
}; };
const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)]; const privateKey = constants.TESTRPC_PRIVATE_KEYS[accounts.indexOf(makerAddress)];
orderFactory = new OrderFactory(privateKey, defaultOrderParams); orderFactory = new OrderFactory(privateKey, defaultOrderParams);
@ -242,11 +247,11 @@ describe('OrderValidationUtils', () => {
from: makerAddress, from: makerAddress,
}); });
const divisor = 4; const divisor = 4;
await zrxToken.setBalance.awaitTransactionSuccessAsync( await feeErc20Token.setBalance.awaitTransactionSuccessAsync(
makerAddress, makerAddress,
signedOrder.makerFee.dividedToIntegerBy(divisor), signedOrder.makerFee.dividedToIntegerBy(divisor),
); );
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, {
from: makerAddress, from: makerAddress,
}); });
const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync( const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync(
@ -266,8 +271,8 @@ describe('OrderValidationUtils', () => {
await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, { await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, {
from: makerAddress, from: makerAddress,
}); });
await zrxToken.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, {
from: makerAddress, from: makerAddress,
}); });
const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync( const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync(
@ -288,8 +293,8 @@ describe('OrderValidationUtils', () => {
await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, { await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, {
from: makerAddress, from: makerAddress,
}); });
await zrxToken.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, {
from: makerAddress, from: makerAddress,
}); });
const divisor = 4; const divisor = 4;
@ -313,8 +318,8 @@ describe('OrderValidationUtils', () => {
); );
}); });
it('should return a fillableTakerAssetAmount of 0 when non-fee balances/allowances are insufficient', async () => { it('should return a fillableTakerAssetAmount of 0 when non-fee balances/allowances are insufficient', async () => {
await zrxToken.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, {
from: makerAddress, from: makerAddress,
}); });
const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync( const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync(
@ -328,8 +333,8 @@ describe('OrderValidationUtils', () => {
await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, { await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, {
from: makerAddress, from: makerAddress,
}); });
await zrxToken.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, {
from: makerAddress, from: makerAddress,
}); });
const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync( const [, fillableTakerAssetAmount] = await devUtils.getOrderRelevantState.callAsync(
@ -340,14 +345,14 @@ describe('OrderValidationUtils', () => {
}); });
it('should return the correct fillableTakerAssetAmount when balances/allowances are partially sufficient and makerAsset=makerFeeAsset', async () => { it('should return the correct fillableTakerAssetAmount when balances/allowances are partially sufficient and makerAsset=makerFeeAsset', async () => {
signedOrder = await orderFactory.newSignedOrderAsync({ signedOrder = await orderFactory.newSignedOrderAsync({
makerAssetData: zrxAssetData, makerAssetData: feeAssetData,
makerAssetAmount: new BigNumber(10), makerAssetAmount: new BigNumber(10),
takerAssetAmount: new BigNumber(20), takerAssetAmount: new BigNumber(20),
makerFee: new BigNumber(40), makerFee: new BigNumber(40),
}); });
const transferableMakerAssetAmount = new BigNumber(10); const transferableMakerAssetAmount = new BigNumber(10);
await zrxToken.setBalance.awaitTransactionSuccessAsync(makerAddress, transferableMakerAssetAmount); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(makerAddress, transferableMakerAssetAmount);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, transferableMakerAssetAmount, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, transferableMakerAssetAmount, {
from: makerAddress, from: makerAddress,
}); });
const expectedFillableTakerAssetAmount = transferableMakerAssetAmount const expectedFillableTakerAssetAmount = transferableMakerAssetAmount
@ -376,17 +381,17 @@ describe('OrderValidationUtils', () => {
await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, { await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, {
from: makerAddress, from: makerAddress,
}); });
await zrxToken.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, {
from: makerAddress, from: makerAddress,
}); });
await erc20Token2.setBalance.awaitTransactionSuccessAsync(takerAddress, signedOrder.takerAssetAmount); await erc20Token2.setBalance.awaitTransactionSuccessAsync(takerAddress, signedOrder.takerAssetAmount);
await erc20Token2.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.takerAssetAmount, { await erc20Token2.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.takerAssetAmount, {
from: takerAddress, from: takerAddress,
}); });
await zrxToken.setBalance.awaitTransactionSuccessAsync(takerAddress, signedOrder.takerFee); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(takerAddress, signedOrder.takerFee);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.takerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.takerFee, {
from: takerAddress, from: takerAddress,
}); });
const takerAssetFillAmount = signedOrder.takerAssetAmount.dividedToIntegerBy(4); const takerAssetFillAmount = signedOrder.takerAssetAmount.dividedToIntegerBy(4);
@ -411,8 +416,8 @@ describe('OrderValidationUtils', () => {
await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, { await erc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerAssetAmount, {
from: makerAddress, from: makerAddress,
}); });
await zrxToken.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee); await feeErc20Token.setBalance.awaitTransactionSuccessAsync(makerAddress, signedOrder.makerFee);
await zrxToken.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, { await feeErc20Token.approve.awaitTransactionSuccessAsync(erc20Proxy.address, signedOrder.makerFee, {
from: makerAddress, from: makerAddress,
}); });
const signedOrder2 = await orderFactory.newSignedOrderAsync({ makerAssetData: erc721AssetData }); const signedOrder2 = await orderFactory.newSignedOrderAsync({ makerAssetData: erc721AssetData });