Skip to content
This repository has been archived by the owner on Jul 17, 2021. It is now read-only.

Commit

Permalink
Add Tests for Utils and clean-up
Browse files Browse the repository at this point in the history
  • Loading branch information
valamidev committed Apr 12, 2020
1 parent 8a23764 commit 60197fd
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 27 deletions.
11 changes: 11 additions & 0 deletions src/__test__/utils.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Utils } from '../utils';

describe('Utils', () => {
it('should candlestickName format as expected', () => {
const candlestickName1 = Utils.candlestickName('binance', 'btc-/_bnb', 60);
const candlestickName2 = Utils.candlestickName('binance', 'btc-/_bnb', '1m');

expect(candlestickName1).toBe('binance_btcbnb_1m');
expect(candlestickName2).toBe('binance_btcbnb_1m');
});
});
4 changes: 2 additions & 2 deletions src/emitter/events/candlestick_emitter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { logger } from '../../logger';
import { util } from '../../utils';
import { Utils } from '../../utils';
import { Emitter } from '../emitter';

import { DBQueries } from '../../database/queries';
Expand All @@ -24,7 +24,7 @@ class CandlestickEmitter {
try {
// Final candles are saved into separated tables
if (candle.isFinal === true) {
const tableName = util.candlestickName(exchange, candle.symbol, interval);
const tableName = Utils.candlestickName(exchange, candle.symbol, interval);

this.updateWS(tableName, candle);
}
Expand Down
6 changes: 3 additions & 3 deletions src/emitter/events/orderbook_emitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { OrderBookStore } from 'orderbook-synchronizer';
import { Order, OrderbookData } from 'orderbook-synchronizer/lib/types';
import { EMITTER_EVENTS } from '../../constants';
import { logger } from '../../logger';
import { util } from '../../utils';
import { Utils } from '../../utils';
import { Emitter } from '../emitter';

import { TradepairQueries } from '../../tradepairs/tradepairs';
Expand Down Expand Up @@ -57,7 +57,7 @@ class OrderbookEmitter {
} else {
// Load Orderbook from Redis
try {
const tableName = util.orderbookName(exchange, symbol);
const tableName = Utils.orderbookName(exchange, symbol);
const orderbookSnapshot = await Redis.get(tableName);

if (orderbookSnapshot !== null) {
Expand Down Expand Up @@ -94,7 +94,7 @@ class OrderbookEmitter {
const ccxtSymbol = await TradepairQueries.idToSymbol(exchange, symbol);

if (ccxtSymbol) {
const tableName = util.orderbookName(exchange, ccxtSymbol);
const tableName = Utils.orderbookName(exchange, ccxtSymbol);

if (!(await DBQueries.tableCheck(tableName))) {
await DBQueries.createNewTableFromTemplate(TableTemplates.Orderbook, tableName);
Expand Down
4 changes: 2 additions & 2 deletions src/emitter/events/trades_emitter.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { util } from '../../utils';
import { Utils } from '../../utils';
import { logger } from '../../logger';
import { Emitter } from '../emitter';

Expand All @@ -21,7 +21,7 @@ class TradesEmitter {
const ccxtSymbol = await TradepairQueries.idToSymbol(exchange, trade.symbol);

if (ccxtSymbol) {
const tableName = util.tradesName(exchange, ccxtSymbol);
const tableName = Utils.tradesName(exchange, ccxtSymbol);

// Use Set for Table name check cache
if (tableNameCache.has(tableName)) {
Expand Down
8 changes: 4 additions & 4 deletions src/tradepairs/candlestick_history.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { RowDataPacket } from 'mysql2';
import { CCXT_API } from '../exchange/ccxt_controller';
import { logger } from '../logger';

import { util } from '../utils';
import { Utils } from '../utils';
import { DBQueries } from '../database/queries';
import { TicksOHLCV } from '../types/types';
import { TableTemplates } from '../database/queries/enums';
Expand All @@ -31,8 +31,8 @@ class Candlestick {
this.symbol = symbol;
this.historyLimit = historyLimit;
this.interval = baseInterval;
this.intervalString = util.intervalToString(this.interval);
this.tableName = util.candlestickName(exchange, symbol, this.interval);
this.intervalString = Utils.intervalToString(this.interval);
this.tableName = Utils.candlestickName(exchange, symbol, this.interval);

this.historyData = [];
// Check Table and Data integrity
Expand All @@ -49,7 +49,7 @@ class Candlestick {

const candleData = await DBQueries.candlestickSelectAll(this.tableName);

const integrityCheck = util.candlestickDataIntegrityCheck(candleData as RowDataPacket[][], this.interval);
const integrityCheck = Utils.candlestickDataIntegrityCheck(candleData as RowDataPacket[][], this.interval);

if (Array.isArray(integrityCheck)) {
logger.verbose(
Expand Down
19 changes: 6 additions & 13 deletions src/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export const util = {
export const Utils = {
// Intervals: 1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M
intervalToNumber: (string: string): number => {
let number = 0;
Expand Down Expand Up @@ -90,8 +90,8 @@ export const util = {
},

// eslint-disable-next-line @typescript-eslint/no-explicit-any
candlestickDataIntegrityCheck: (data: any[], invertval: number): boolean | any[] => {
const intervalInMsec = invertval * 1000; // millisec
candlestickDataIntegrityCheck: (data: any[], interval: number): boolean | any[] => {
const intervalInMsec = interval * 1000; // millisec
if (data.length === 0) return false;

const outages = [];
Expand All @@ -110,29 +110,22 @@ export const util = {
tradesName: (exchange: string, symbol: string): string => {
const cleanSymbol = symbol.replace('/', '').replace('-', '').replace('_', '');

const name = `${exchange}_${cleanSymbol}_trades`;

// Lowercase only
return name.toLowerCase();
return `${exchange}_${cleanSymbol}_trades`.toLowerCase();
},

orderbookName: (exchange: string, symbol: string): string => {
const cleanSymbol = symbol.replace('/', '').replace('-', '').replace('_', '');

const name = `${exchange}_${cleanSymbol}_orderbook`;

// Lowercase only
return name.toLowerCase();
return `${exchange}_${cleanSymbol}_orderbook`.toLowerCase();
},

candlestickName: (exchange: string, symbol: string, interval: string | number): string => {
const cleanSymbol = symbol.replace('/', '').replace('-', '').replace('_', '');

if (typeof interval === 'number') {
return `${exchange}_${cleanSymbol}_${util.intervalToString(interval)}`.toLowerCase();
return `${exchange}_${cleanSymbol}_${Utils.intervalToString(interval)}`.toLowerCase();
}

// Lowercase only
return `${exchange}_${cleanSymbol}_${interval}`.toLowerCase();
},
};
6 changes: 3 additions & 3 deletions src/workers/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { logger } from '../logger';

import { DBQueries } from '../database/queries';
import { TradepairQueries } from '../tradepairs/tradepairs';
import { util } from '../utils';
import { Utils } from '../utils';
import { TicksOHLCV } from '../types/types';
import { TableTemplates } from '../database/queries/enums';

Expand All @@ -28,7 +28,7 @@ if (parentPort) {
const { exchange, symbol } = tradepair;

// Table check
const candlestickTableName = util.candlestickName(exchange, symbol, DEFAULT_CANDLE_INTERVAL);
const candlestickTableName = Utils.candlestickName(exchange, symbol, DEFAULT_CANDLE_INTERVAL);

if (!(await DBQueries.tableCheck(candlestickTableName))) {
await DBQueries.createNewTableFromTemplate(TableTemplates.Candlestick, candlestickTableName);
Expand All @@ -38,7 +38,7 @@ if (parentPort) {
const lastUpdateTime = await DBQueries.candlestickLastTime(candlestickTableName);

// Get Trades
const tradeTableName = util.tradesName(exchange, symbol);
const tradeTableName = Utils.tradesName(exchange, symbol);

const trades = await DBQueries.tradesSelect(tradeTableName, lastUpdateTime);

Expand Down

0 comments on commit 60197fd

Please sign in to comment.