Skip to content

Commit

Permalink
feat(models): increase the base table
Browse files Browse the repository at this point in the history
  • Loading branch information
zlq4863947 committed Mar 8, 2019
1 parent f0d2484 commit ea8ab44
Show file tree
Hide file tree
Showing 38 changed files with 1,144 additions and 685 deletions.
2 changes: 1 addition & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.exports = {
testMatch: ['<rootDir>/modules/**/*.spec.ts', '<rootDir>/projects/**/*.spec.ts'],
testURL: 'http://localhost/',
collectCoverageFrom: ['modules/**/*.{js,ts}', 'projects/**/*.{js,ts}', '!projects/**/main.{js,ts}', '!modules/**/index.{js,ts}', '!**/node_modules/**', '!**/vendor/**'],
coveragePathIgnorePatterns: ['/node_modules/', '/test-helpers/', '/main.{js,ts}', '/dist/', 'entity-test-bed'],
coveragePathIgnorePatterns: ['/node_modules/', '/test-helpers/', '/main.{js,ts}', '/dist/', 'entity-test-bed', '/types/'],
coverageReporters: ['json', 'lcov'],
verbose: true,
preset: 'ts-jest',
Expand Down
172 changes: 172 additions & 0 deletions modules/common/big-number-util/format.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
import { fixByDigits, floorByDigit } from './format';

describe('floorByDigit', () => {
describe('btc_jpy pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 0;
});

it('should return floored value #1', () => {
const value = 808138;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(808138);
});

it('should return floored value #2', () => {
const value = 808138.5;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(808138);
});
});

describe('xrp_jpy pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 3;
});

it('should return floored value #1', () => {
const value = 64.655;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(64.655);
});

it('should return floored value #2', () => {
const value = 64.6;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(64.6);
});

it('should return floored value #3', () => {
const value = 64.6558;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(64.655);
});
});

describe('ltc_btc pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 8;
});

it('should return floored value #1', () => {
const value = 0.01598311;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(0.01598311);
});
});

describe('eth_btc pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 8;
});

it('should return floored value #1', () => {
const value = 0.07678989;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(0.07678989);
});
});

describe('mona_jpy pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 3;
});

it('should return floored value #1', () => {
const value = 366.897;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(366.897);
});
});

describe('mona_btc pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 8;
});

it('should return floored value #1', () => {
const value = 0.000454;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(0.000454);
});
});

describe('bcc_jpy pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 0;
});

it('should return floored value #7', () => {
const value = 107999;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(107999);
});
});

describe('bcc_btc pair:', () => {
let priceDigit: number;

beforeEach(() => {
priceDigit = 8;
});

it('should return floored value #8', () => {
const value = 0.13387562;

const result = floorByDigit(value, priceDigit);
expect(result).toBeTruthy();
expect(result).toBe(0.13387562);
});
});
});

describe('fixByDigits', () => {
describe('When proper values are provided', () => {
it('should calculate values properly', () => {
const base = '0.001';
expect(fixByDigits(base, 1)).toBe('0.0');
expect(fixByDigits(base, 2)).toBe('0.00');
expect(fixByDigits(base, 3)).toBe('0.001');
expect(fixByDigits(base, 4)).toBe('0.0010');
});

it('should round values', () => {
const base = '0.009';
expect(fixByDigits(base, 2)).toBe('0.01');
});
});
});
38 changes: 38 additions & 0 deletions modules/common/big-number-util/format.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { BigNumber } from 'bignumber.js';

import { getBigNumber } from './get-big-number';

/**
* get floored number by specific decimal places.
*
* @param {number} value - number to floor.
* @param {number} decimalPlace - where to floor.
* @returns {number}
*/
export function floorByDigit(value: BigNumber.Value, decimalPlace: number = 0): number {
const bigNumber = getBigNumber(value);

// fix number with priceDigit (0.123456 -> 0.1234)
const characteristic = getBigNumber(10).pow(decimalPlace);
// If input is specified as a number greater than 15 digits,
// it will result in an error so cast once to string.
// @see https://github.com/MikeMcl/bignumber.js/issues/148
const multiplied = bigNumber.multipliedBy(characteristic);

return multiplied
.integerValue(BigNumber.ROUND_FLOOR)
.dividedBy(characteristic)
.toNumber();
}

/**
* Fix value with provided digits.
*
* @param value
* @param digits
*/
export function fixByDigits(value: BigNumber.Value, digits: number): string {
const bn = getBigNumber(value);

return bn.toFixed(digits);
}
1 change: 1 addition & 0 deletions modules/common/big-number-util/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from './condition';
export * from './format';
export * from './get-big-number';
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ export function update(
originSource: WebsocketData<OrderbookResponse>,
updateSource: WebsocketData<OrderbookResponse>,
): WebsocketData<OrderbookResponse> {
const originData = originSource.data || [];
const updateData = updateSource.data || [];
const originData = originSource.data;
const updateData = updateSource.data;

originSource.data = originData;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ export function transform(source: QuoteSource): QuoteResponse {
};
}

export function getTradeChannel(pair: string, endPoint?: PublicEndPoints | PrivateEndPoints): string {
return `${endPoint ? endPoint : PublicEndPoints.Quote}:${pair}`;
export function getTradeChannel(pair: string): string {
return `${PublicEndPoints.Quote}:${pair}`;
}
29 changes: 26 additions & 3 deletions modules/models/common/testing/entity-test-bed/constants.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,30 @@
import { ObjectType } from 'typeorm';

import { MasterPairEntity, MasterPairRepository } from '../../../entity';
import {
CandlestickEntity,
CandlestickRepository,
MasterExchangeEntity,
MasterExchangeRepository,
MasterPairEntity,
MasterPairRepository,
OrderbookEntity,
OrderbookRepository,
TransactionEntity,
TransactionRepository,
} from '../../../entity';

export const allEntityTypes: ObjectType<any>[] = [MasterPairEntity];
export const allEntityTypes: ObjectType<any>[] = [
MasterPairEntity,
MasterExchangeEntity,
OrderbookEntity,
TransactionEntity,
CandlestickEntity,
];

export const allRepositoryTypes: ObjectType<any>[] = [MasterPairRepository];
export const allRepositoryTypes: ObjectType<any>[] = [
MasterPairRepository,
MasterExchangeRepository,
OrderbookRepository,
TransactionRepository,
CandlestickRepository,
];
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const expectedBase = {
...createBase,
minOrderAmount: '0.000000000',
minOrderPrice: '0.000000000',
isEnabled: false,
isEnabled: true,
createdAt: 'overridden',
updatedAt: 'overridden',
};
Expand Down
Loading

0 comments on commit ea8ab44

Please sign in to comment.