diff --git a/packages/contract-wrappers/CHANGELOG.json b/packages/contract-wrappers/CHANGELOG.json index c6f26613f2..e4e997812b 100644 --- a/packages/contract-wrappers/CHANGELOG.json +++ b/packages/contract-wrappers/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "9.1.3", + "changes": [ + { + "note": "Fix decoding bug in `DutchAuctionWrapper.decodeDutchAuctionData`", + "pr": 1815 + } + ] + }, { "version": "9.1.2", "changes": [ 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 a3e1d0ca7d..4af7254bbc 100644 --- a/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/dutch_auction_wrapper.ts @@ -71,8 +71,8 @@ export class DutchAuctionWrapper extends ContractWrapper { ['uint256', 'uint256'], dutchAuctionDetailsBuffer, ); - const beginTimeSeconds = new BigNumber(`0x${beginTimeSecondsAsBN.toString()}`); - const beginAmount = new BigNumber(`0x${beginAmountAsBN.toString()}`); + const beginTimeSeconds = new BigNumber(beginTimeSecondsAsBN.toString()); + const beginAmount = new BigNumber(beginAmountAsBN.toString()); return { assetData, beginTimeSeconds, diff --git a/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts b/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts index d7a6ca015c..15936a2eed 100644 --- a/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts +++ b/packages/contract-wrappers/test/dutch_auction_wrapper_test.ts @@ -1,12 +1,12 @@ import { expectTransactionFailedAsync, getLatestBlockTimestampAsync } from '@0x/contracts-test-utils'; import { BlockchainLifecycle } from '@0x/dev-utils'; import { assetDataUtils } from '@0x/order-utils'; -import { RevertReason, SignedOrder } from '@0x/types'; +import { ERC20AssetData, RevertReason, SignedOrder } from '@0x/types'; import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; import 'mocha'; -import { ContractWrappers } from '../src'; +import { ContractWrappers, DutchAuctionWrapper } from '../src'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; @@ -91,6 +91,21 @@ describe('DutchAuctionWrapper', () => { afterEach(async () => { await blockchainLifecycle.revertAsync(); }); + describe('.decodeDutchAuctionAssetData', () => { + it('decodes to the encoded values', async () => { + const encodedAssetData = DutchAuctionWrapper.encodeDutchAuctionAssetData( + makerTokenAssetData, + auctionBeginTimeSeconds, + makerAssetAmount, + ); + const decodedAssetData = DutchAuctionWrapper.decodeDutchAuctionData(encodedAssetData); + // tslint:disable-next-line:no-unnecessary-type-assertion + const erc20AssetData = decodedAssetData.assetData as ERC20AssetData; + expect(erc20AssetData.tokenAddress).to.eq(makerTokenAddress); + expect(decodedAssetData.beginAmount).to.be.bignumber.eq(makerAssetAmount); + expect(decodedAssetData.beginTimeSeconds).to.be.bignumber.eq(auctionBeginTimeSeconds); + }); + }); describe('#matchOrdersAsync', () => { it('should match two orders', async () => { const txHash = await contractWrappers.dutchAuction.matchOrdersAsync(buyOrder, sellOrder, takerAddress);