asset-swapper: test RFQT indicative quote handling
This commit is contained in:
@@ -5,7 +5,7 @@ import { BigNumber } from '@0x/utils';
|
||||
import * as chai from 'chai';
|
||||
import 'mocha';
|
||||
|
||||
import { MarketOperation, MockedRfqtFirmQuoteResponse } from '../src/types';
|
||||
import { MarketOperation, MockedRfqtFirmQuoteResponse, MockedRfqtIndicativeQuoteResponse } from '../src/types';
|
||||
import { QuoteRequestor } from '../src/utils/quote_requestor';
|
||||
import { rfqtMocker } from '../src/utils/rfqt_mocker';
|
||||
|
||||
@@ -138,4 +138,99 @@ describe('QuoteRequestor', async () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('requestRfqtIndicativeQuotesAsync for Indicative quotes', async () => {
|
||||
it('should return successful RFQT requests', async () => {
|
||||
const takerAddress = '0xd209925defc99488e3afff1174e48b4fa628302a';
|
||||
const apiKey = 'my-ko0l-api-key';
|
||||
|
||||
// Set up RFQT responses
|
||||
// tslint:disable-next-line:array-type
|
||||
const mockedRequests: MockedRfqtIndicativeQuoteResponse[] = [];
|
||||
const expectedParams = {
|
||||
sellToken: takerToken,
|
||||
buyToken: makerToken,
|
||||
sellAmount: '10000',
|
||||
buyAmount: undefined,
|
||||
takerAddress,
|
||||
};
|
||||
// Successful response
|
||||
const successfulQuote1 = {
|
||||
makerAssetData,
|
||||
takerAssetData,
|
||||
makerAssetAmount: new BigNumber(expectedParams.sellAmount),
|
||||
takerAssetAmount: new BigNumber(expectedParams.sellAmount),
|
||||
};
|
||||
mockedRequests.push({
|
||||
endpoint: 'https://1337.0.0.1',
|
||||
requestApiKey: apiKey,
|
||||
requestParams: expectedParams,
|
||||
responseData: successfulQuote1,
|
||||
responseCode: StatusCodes.Success,
|
||||
});
|
||||
// Test out a bad response code, ensure it doesnt cause throw
|
||||
mockedRequests.push({
|
||||
endpoint: 'https://420.0.0.1',
|
||||
requestApiKey: apiKey,
|
||||
requestParams: expectedParams,
|
||||
responseData: { error: 'bad request' },
|
||||
responseCode: StatusCodes.InternalError,
|
||||
});
|
||||
// Test out a successful response code but an invalid order
|
||||
mockedRequests.push({
|
||||
endpoint: 'https://421.0.0.1',
|
||||
requestApiKey: apiKey,
|
||||
requestParams: expectedParams,
|
||||
responseData: { makerAssetData: '123' },
|
||||
responseCode: StatusCodes.Success,
|
||||
});
|
||||
// A successful response code and valid response data, but for wrong maker asset data
|
||||
mockedRequests.push({
|
||||
endpoint: 'https://422.0.0.1',
|
||||
requestApiKey: apiKey,
|
||||
requestParams: expectedParams,
|
||||
responseData: { ...successfulQuote1, makerAssetData: assetDataUtils.encodeERC20AssetData(otherToken1) },
|
||||
responseCode: StatusCodes.Success,
|
||||
});
|
||||
// A successful response code and valid response data, but for wrong taker asset data
|
||||
mockedRequests.push({
|
||||
endpoint: 'https://423.0.0.1',
|
||||
requestApiKey: apiKey,
|
||||
requestParams: expectedParams,
|
||||
responseData: { ...successfulQuote1, takerAssetData: assetDataUtils.encodeERC20AssetData(otherToken1) },
|
||||
responseCode: StatusCodes.Success,
|
||||
});
|
||||
// Another Successful response
|
||||
mockedRequests.push({
|
||||
endpoint: 'https://37.0.0.1',
|
||||
requestApiKey: apiKey,
|
||||
requestParams: expectedParams,
|
||||
responseData: successfulQuote1,
|
||||
responseCode: StatusCodes.Success,
|
||||
});
|
||||
|
||||
return rfqtMocker.withMockedRfqtIndicativeQuotes(mockedRequests, async () => {
|
||||
const qr = new QuoteRequestor([
|
||||
'https://1337.0.0.1',
|
||||
'https://420.0.0.1',
|
||||
'https://421.0.0.1',
|
||||
'https://422.0.0.1',
|
||||
'https://423.0.0.1',
|
||||
'https://424.0.0.1',
|
||||
'https://37.0.0.1',
|
||||
]);
|
||||
const resp = await qr.requestRfqtIndicativeQuotesAsync(
|
||||
makerAssetData,
|
||||
takerAssetData,
|
||||
new BigNumber(10000),
|
||||
MarketOperation.Sell,
|
||||
{
|
||||
apiKey,
|
||||
takerAddress,
|
||||
intentOnFilling: true,
|
||||
},
|
||||
);
|
||||
expect(resp.sort()).to.eql([successfulQuote1, successfulQuote1].sort());
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user