From 0432212a346aa761c54b5a9159a7e61e0c2f9b9a Mon Sep 17 00:00:00 2001 From: Greg Hysen Date: Fri, 21 Dec 2018 16:40:07 -0800 Subject: dutch wrapper tests working --- .../src/contract_wrappers/dutch_auction_wrapper.ts | 24 +++++------- packages/contract-wrappers/src/types.ts | 12 ++++++ .../test/dutch_auction_wrapper_test.ts | 43 +++------------------- 3 files changed, 27 insertions(+), 52 deletions(-) (limited to 'packages/contract-wrappers') diff --git a/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts index 5896617fc..dea759962 100644 --- a/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts @@ -19,9 +19,9 @@ import { orderTxOptsSchema } from '../schemas/order_tx_opts_schema'; import { txOptsSchema } from '../schemas/tx_opts_schema'; import { OrderTransactionOpts } from '../types'; import { ContractWrapper } from './contract_wrapper'; -import { ExchangeWrapperError } from '../types'; +import { DutchAuctionWrapperError, DutchAuctionData } from '../types'; -import { assetDataUtils, AssetData } from '@0x/order-utils'; +import { assetDataUtils } from '@0x/order-utils'; export class DutchAuctionWrapper extends ContractWrapper { public abi: ContractAbi = DutchAuction.compilerOutput.abi; @@ -72,11 +72,7 @@ export class DutchAuctionWrapper extends ContractWrapper { sellOrder.makerAssetData !== buyOrder.takerAssetData || sellOrder.takerAssetData !== buyOrder.makerAssetData ) { - throw new Error(ExchangeWrapperError.AssetDataMismatch); - } else { - // Smart contracts assigns the asset data from the left order to the right one so we can save gas on reducing the size of call data - //rightSignedOrder.makerAssetData = '0x'; - // rightSignedOrder.takerAssetData = '0x'; + throw new Error(DutchAuctionWrapperError.AssetDataMismatch); } // get contract const dutchAuctionInstance = await this._getDutchAuctionContractAsync(); @@ -119,8 +115,6 @@ export class DutchAuctionWrapper extends ContractWrapper { // type assertions assert.doesConformToSchema('sellOrder', sellOrder, schemas.signedOrderSchema); // get contract - console.log(sellOrder); - console.log(await this._getDutchAuctionContractAsync()); const dutchAuctionInstance = await this._getDutchAuctionContractAsync(); // call contract const afterAuctionDetails = await dutchAuctionInstance.getAuctionDetails.callAsync(sellOrder); @@ -156,7 +150,6 @@ export class DutchAuctionWrapper extends ContractWrapper { ); const abiEncodedAuctionDataBuffer = ethUtil.toBuffer(abiEncodedAuctionData); const dutchAuctionDataBuffer = Buffer.concat([assetDataBuffer, abiEncodedAuctionDataBuffer]); - // console.log(`GREFG --- `, abiEncodedAuctionData); const dutchAuctionData = ethUtil.bufferToHex(dutchAuctionDataBuffer); return dutchAuctionData; }; @@ -165,9 +158,9 @@ export class DutchAuctionWrapper extends ContractWrapper { * encoded assetData string, containing information both about the asset being traded and the * dutch auction; which is usable in the makerAssetData or takerAssetData fields in a 0x order. * @param dutchAuctionData Hex encoded assetData string for the asset being auctioned. - * @return + * @return An object containing the auction asset, auction begin time and auction begin amount. */ - public static decodeDutchAuctionData(dutchAuctionData: string): [AssetData, BigNumber, BigNumber] { + public static decodeDutchAuctionData(dutchAuctionData: string): DutchAuctionData { const dutchAuctionDataBuffer = ethUtil.toBuffer(dutchAuctionData); // Decode asset data const assetDataBuffer = dutchAuctionDataBuffer.slice(0, dutchAuctionDataBuffer.byteLength - 64); @@ -181,7 +174,10 @@ export class DutchAuctionWrapper extends ContractWrapper { ); const beginTimeSeconds = new BigNumber(`0x${beginTimeSecondsAsBN.toString()}`); const beginAmount = new BigNumber(`0x${beginAmountAsBN.toString()}`); - console.log(beginAmount); - return [assetData, beginTimeSeconds, beginAmount]; + return { + assetData, + beginTimeSeconds, + beginAmount + }; }; } diff --git a/packages/contract-wrappers/src/types.ts b/packages/contract-wrappers/src/types.ts index 14d4649ae..f23587c20 100644 --- a/packages/contract-wrappers/src/types.ts +++ b/packages/contract-wrappers/src/types.ts @@ -14,6 +14,8 @@ import { BigNumber } from '@0x/utils'; import { BlockParam, ContractEventArg, DecodedLogArgs, LogEntryEvent, LogWithDecodedArgs } from 'ethereum-types'; +import { AssetData } from '@0x/order-utils'; + export enum ExchangeWrapperError { AssetDataMismatch = 'ASSET_DATA_MISMATCH', } @@ -206,3 +208,13 @@ export interface BalanceAndAllowance { balance: BigNumber; allowance: BigNumber; } + +export enum DutchAuctionWrapperError { + AssetDataMismatch = 'ASSET_DATA_MISMATCH', +} + +export interface DutchAuctionData { + assetData: AssetData; + beginTimeSeconds: BigNumber; + beginAmount: BigNumber; +} diff --git a/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts b/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts index f548e3ff8..697554dd1 100644 --- a/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts +++ b/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts @@ -1,12 +1,11 @@ import { BlockchainLifecycle } from '@0x/dev-utils'; -import { FillScenarios } from '@0x/fill-scenarios'; import { assetDataUtils } from '@0x/order-utils'; import { RevertReason, SignedOrder } from '@0x/types'; import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; import 'mocha'; -import { ContractWrappers, OrderStatus } from '../src'; +import { ContractWrappers } from '../src'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; @@ -14,10 +13,6 @@ import { migrateOnceAsync } from './utils/migrate'; import { tokenUtils } from './utils/token_utils'; import { provider, web3Wrapper } from './utils/web3_wrapper'; import { getLatestBlockTimestampAsync } from '@0x/contracts-test-utils'; -import { DutchAuction } from '@0x/contract-artifacts'; -import { DutchAuctionWrapper } from '../src/contract_wrappers/dutch_auction_wrapper'; -import { Web3Wrapper } from '@0x/web3-wrapper'; - import { DutchAuctionUtils } from './utils/dutch_auction_utils'; import { @@ -33,9 +28,7 @@ describe.only('DutchAuctionWrapper', () => { const fillableAmount = new BigNumber(2);//Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 18); const tenMinutesInSeconds = 10 * 60; let contractWrappers: ContractWrappers; - let fillScenarios: FillScenarios; let exchangeContractAddress: string; - let zrxTokenAddress: string; let userAddresses: string[]; let makerAddress: string; let takerAddress: string; @@ -50,7 +43,7 @@ describe.only('DutchAuctionWrapper', () => { let auctionEndTimeSeconds: BigNumber; let auctionEndAmount: BigNumber; before(async () => { - console.log(`BEOGIN DEPLOYINH`); + // setup contract wrappers & addresses const contractAddresses = await migrateOnceAsync(); await blockchainLifecycle.startAsync(); const config = { @@ -58,47 +51,23 @@ describe.only('DutchAuctionWrapper', () => { contractAddresses, blockPollingIntervalMs: 10, }; - contractWrappers = new ContractWrappers(provider, config); - console.log(`DEPLOYINH`); exchangeContractAddress = contractWrappers.exchange.address; userAddresses = await web3Wrapper.getAvailableAddressesAsync(); - zrxTokenAddress = contractWrappers.exchange.zrxTokenAddress; - fillScenarios = new FillScenarios( - provider, - userAddresses, - zrxTokenAddress, - exchangeContractAddress, - contractWrappers.erc20Proxy.address, - contractWrappers.erc721Proxy.address, - ); [, makerAddress, takerAddress] = userAddresses; [makerTokenAddress, takerTokenAddress] = tokenUtils.getDummyERC20TokenAddresses(); - console.log(`B`); // construct asset data for tokens being swapped [makerTokenAssetData, takerTokenAssetData] = [ assetDataUtils.encodeERC20AssetData(makerTokenAddress), assetDataUtils.encodeERC20AssetData(takerTokenAddress), ]; - console.log(`C`); - // encode auction details in maker asset data + // setup auction details in maker asset data auctionEndAmount = fillableAmount; auctionBeginAmount = auctionEndAmount.times(2); const currentBlockTimestamp = await getLatestBlockTimestampAsync(); auctionBeginTimeSeconds = new BigNumber(currentBlockTimestamp - tenMinutesInSeconds); auctionEndTimeSeconds = new BigNumber(currentBlockTimestamp + tenMinutesInSeconds); - /* makerAssetData = DutchAuctionWrapper.encodeDutchAuctionAssetData( - makerTokenAssetData, - auctionBeginTimeSeconds, - auctionBeginAmount - );*/ - console.log(`C2`); - // Create template orders from - - - // create sell / buy orders for auction - // note that the maker/taker asset datas are swapped in the `buyOrder` - + // create auction orders const coinbase = userAddresses[0]; const dutchAuctionUtils = new DutchAuctionUtils(web3Wrapper, coinbase, exchangeContractAddress, contractWrappers.erc20Proxy.address); sellOrder = await dutchAuctionUtils.createSignedSellOrderAsync( @@ -112,12 +81,10 @@ describe.only('DutchAuctionWrapper', () => { constants.NULL_ADDRESS, auctionEndAmount, ); - console.log(`ASDS`); buyOrder = await dutchAuctionUtils.createSignedBuyOrderAsync( sellOrder, takerAddress, ); - console.log(`CD`); }); after(async () => { await blockchainLifecycle.revertAsync(); @@ -152,7 +119,7 @@ describe.only('DutchAuctionWrapper', () => { }); describe('#getAuctionDetailsAsync', () => { - it('should be worth the begin price at the begining of the auction', async () => { + it('should get auction details', async () => { // get auction details const auctionDetails = await contractWrappers.dutchAuction.getAuctionDetailsAsync(sellOrder); // run some basic sanity checks on the return value -- cgit v1.2.3