100 lines
3.6 KiB
TypeScript
100 lines
3.6 KiB
TypeScript
// tslint:disable:custom-no-magic-numbers
|
|
import { BigNumber } from '@0x/utils';
|
|
import * as chai from 'chai';
|
|
import 'mocha';
|
|
import * as R from 'ramda';
|
|
|
|
import { BLOXY_DEX_TRADES_URL, BloxyTrade } from '../../../src/data_sources/bloxy';
|
|
import { DexTrade } from '../../../src/entities';
|
|
import { _parseBloxyTrade } from '../../../src/parsers/bloxy';
|
|
import { _convertToExchangeFillEvent } from '../../../src/parsers/events';
|
|
import { chaiSetup } from '../../utils/chai_setup';
|
|
|
|
chaiSetup.configure();
|
|
const expect = chai.expect;
|
|
|
|
const baseInput: BloxyTrade = {
|
|
tx_hash: '0xb93a7faf92efbbb5405c9a73cd4efd99702fe27c03ff22baee1f1b1e37b3a0bf',
|
|
tx_time: '2018-11-21T09:06:28.000+00:00',
|
|
tx_date: '2018-11-21',
|
|
tx_sender: '0x00923b9a074762b93650716333b3e1473a15048e',
|
|
smart_contract_id: 7091917,
|
|
smart_contract_address: '0x818e6fecd516ecc3849daf6845e3ec868087b755',
|
|
contract_type: 'DEX/Kyber Network Proxy',
|
|
maker: '0x0000000000000000000000000000000000000001',
|
|
taker: '0x0000000000000000000000000000000000000002',
|
|
amountBuy: 1.011943163078103,
|
|
makerFee: 38.912083,
|
|
buyCurrencyId: 1,
|
|
buySymbol: 'ETH',
|
|
amountSell: 941.4997928436911,
|
|
takerFee: 100.39,
|
|
sellCurrencyId: 16610,
|
|
sellSymbol: 'ELF',
|
|
maker_annotation: 'random annotation',
|
|
taker_annotation: 'random other annotation',
|
|
protocol: 'Kyber Network Proxy',
|
|
buyAddress: '0xbf2179859fc6d5bee9bf9158632dc51678a4100d',
|
|
sellAddress: '0xbf2179859fc6d5bee9bf9158632dc51678a4100e',
|
|
};
|
|
|
|
const baseExpected: DexTrade = {
|
|
sourceUrl: BLOXY_DEX_TRADES_URL,
|
|
txHash: '0xb93a7faf92efbbb5405c9a73cd4efd99702fe27c03ff22baee1f1b1e37b3a0bf',
|
|
txTimestamp: 1542791188000,
|
|
txDate: '2018-11-21',
|
|
txSender: '0x00923b9a074762b93650716333b3e1473a15048e',
|
|
smartContractId: 7091917,
|
|
smartContractAddress: '0x818e6fecd516ecc3849daf6845e3ec868087b755',
|
|
contractType: 'DEX/Kyber Network Proxy',
|
|
maker: '0x0000000000000000000000000000000000000001',
|
|
taker: '0x0000000000000000000000000000000000000002',
|
|
amountBuy: new BigNumber('1.011943163078103'),
|
|
makerFeeAmount: new BigNumber('38.912083'),
|
|
buyCurrencyId: 1,
|
|
buySymbol: 'ETH',
|
|
amountSell: new BigNumber('941.4997928436911'),
|
|
takerFeeAmount: new BigNumber('100.39'),
|
|
sellCurrencyId: 16610,
|
|
sellSymbol: 'ELF',
|
|
makerAnnotation: 'random annotation',
|
|
takerAnnotation: 'random other annotation',
|
|
protocol: 'Kyber Network Proxy',
|
|
buyAddress: '0xbf2179859fc6d5bee9bf9158632dc51678a4100d',
|
|
sellAddress: '0xbf2179859fc6d5bee9bf9158632dc51678a4100e',
|
|
};
|
|
|
|
interface TestCase {
|
|
input: BloxyTrade;
|
|
expected: DexTrade;
|
|
}
|
|
|
|
const testCases: TestCase[] = [
|
|
{
|
|
input: baseInput,
|
|
expected: baseExpected,
|
|
},
|
|
{
|
|
input: R.merge(baseInput, { buyAddress: null, sellAddress: null }),
|
|
expected: R.merge(baseExpected, { buyAddress: null, sellAddress: null }),
|
|
},
|
|
{
|
|
input: R.merge(baseInput, {
|
|
buySymbol:
|
|
'RING\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000',
|
|
}),
|
|
expected: R.merge(baseExpected, { buySymbol: 'RING' }),
|
|
},
|
|
];
|
|
|
|
describe('bloxy', () => {
|
|
describe('_parseBloxyTrade', () => {
|
|
for (const [i, testCase] of testCases.entries()) {
|
|
it(`converts BloxyTrade to DexTrade entity (${i + 1}/${testCases.length})`, () => {
|
|
const actual = _parseBloxyTrade(testCase.input);
|
|
expect(actual).deep.equal(testCase.expected);
|
|
});
|
|
}
|
|
});
|
|
});
|