41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
|
import { RedisStore } from '../redis';
|
||
|
import { Tedis } from "tedis";
|
||
|
|
||
|
|
||
|
const DAYS = 86400000;
|
||
|
const YEARS = 365*DAYS;
|
||
|
const ts = [{id: '0', price: 1.2, size: 3.4, ts: 1234567890000},
|
||
|
{id: '1', price: 2.3, size: 4.5, ts: 1234567890000-0.8*DAYS},
|
||
|
{id: '2', price: 3.4, size: 5.6, ts: 1234567890000+1*DAYS},
|
||
|
{id: '3', price: 4.5, size: 6.7, ts: 1234567890000+3*DAYS}];
|
||
|
const s = new RedisStore({} as Tedis, 'ABC/DEF');
|
||
|
|
||
|
describe('RedisStore', () => {
|
||
|
it('stores trades in buckets per day', () => {
|
||
|
let keys = ts.map(t => s.keyForTrade(t));
|
||
|
|
||
|
expect(keys[0]).toBe('ABC/DEF-2009-1-13');
|
||
|
expect(keys[0]).toBe(keys[1]);
|
||
|
expect(keys[0]).not.toBe(keys[2]);
|
||
|
expect(keys[0]).not.toBe(keys[3]);
|
||
|
expect(keys[2]).not.toBe(keys[3]);
|
||
|
});
|
||
|
|
||
|
it('iterates buckets per day', () => {
|
||
|
let from = ts[0].ts;
|
||
|
let to = from + 1.2*DAYS;
|
||
|
let keys = s.keysForCandles(DAYS, from, to);
|
||
|
expect(keys).toEqual(['ABC/DEF-2009-1-13',
|
||
|
'ABC/DEF-2009-1-14',
|
||
|
'ABC/DEF-2009-1-15']);
|
||
|
});
|
||
|
|
||
|
it('iterates preserving order', () => {
|
||
|
let from = ts[0].ts;
|
||
|
let to = from + 1*YEARS;
|
||
|
let keys = s.keysForCandles(DAYS, from, to);
|
||
|
expect(keys[0]).toEqual('ABC/DEF-2009-1-13');
|
||
|
expect(keys[keys.length-1]).toEqual('ABC/DEF-2010-1-13');
|
||
|
});
|
||
|
});
|