62 lines
1.4 KiB
TypeScript
62 lines
1.4 KiB
TypeScript
|
|
const mockQuery = jest.fn();
|
||
|
|
const mockLoggerInfo = jest.fn();
|
||
|
|
|
||
|
|
jest.mock('../database/client', () => ({
|
||
|
|
getDatabasePool: () => ({ query: mockQuery }),
|
||
|
|
}));
|
||
|
|
|
||
|
|
jest.mock('../utils/logger', () => ({
|
||
|
|
logger: {
|
||
|
|
info: mockLoggerInfo,
|
||
|
|
warn: jest.fn(),
|
||
|
|
error: jest.fn(),
|
||
|
|
},
|
||
|
|
}));
|
||
|
|
|
||
|
|
import { OHLCVGenerator } from './ohlcv-generator';
|
||
|
|
|
||
|
|
describe('OHLCVGenerator', () => {
|
||
|
|
beforeEach(() => {
|
||
|
|
mockQuery.mockReset();
|
||
|
|
mockLoggerInfo.mockReset();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('returns empty data and logs once when swap tables are not provisioned yet', async () => {
|
||
|
|
mockQuery.mockRejectedValue({
|
||
|
|
code: '42P01',
|
||
|
|
message: 'relation "swap_events" does not exist',
|
||
|
|
});
|
||
|
|
|
||
|
|
const generator = new OHLCVGenerator();
|
||
|
|
|
||
|
|
await expect(
|
||
|
|
generator.generateOHLCV(
|
||
|
|
138,
|
||
|
|
'0xToken',
|
||
|
|
'1h',
|
||
|
|
new Date('2026-03-01T00:00:00.000Z'),
|
||
|
|
new Date('2026-03-02T00:00:00.000Z')
|
||
|
|
)
|
||
|
|
).resolves.toEqual([]);
|
||
|
|
|
||
|
|
await expect(
|
||
|
|
generator.generateOHLCV(
|
||
|
|
138,
|
||
|
|
'0xToken',
|
||
|
|
'1h',
|
||
|
|
new Date('2026-03-01T00:00:00.000Z'),
|
||
|
|
new Date('2026-03-02T00:00:00.000Z')
|
||
|
|
)
|
||
|
|
).resolves.toEqual([]);
|
||
|
|
|
||
|
|
expect(mockLoggerInfo).toHaveBeenCalledTimes(1);
|
||
|
|
expect(mockLoggerInfo).toHaveBeenCalledWith(
|
||
|
|
'Skipping OHLCV generation; relation "swap_events" is not available yet',
|
||
|
|
expect.objectContaining({
|
||
|
|
operation: 'OHLCV generation',
|
||
|
|
relation: 'swap_events',
|
||
|
|
})
|
||
|
|
);
|
||
|
|
});
|
||
|
|
});
|