usxi/test/alpaca.test.ts

70 lines
2.4 KiB
TypeScript

import { describe, expect, test } from '@jest/globals';
import 'dotenv/config';
import { ActionDateType, AlpacaExchange } from '../src/index';
import { createLogger, transports, format } from "winston";
const timeout = 10000;
const logger = createLogger({
transports: [new transports.Console()],
format: format.combine(
format.colorize(),
format.timestamp(),
format.printf(({ timestamp, level, message, service }) => {
return `[${timestamp}] ${service} ${level}: ${message}`;
})
),
defaultMeta: {
service: "AlpacaTest",
},
});
describe('Alpaca Tests', () => {
test('portfolio fetch', async () => {
expect(process.env.ALPACA_API_KEY).toBeDefined();
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
await expect(exchange.portfolioProvider.fetchPortfolio()).resolves.toBeDefined();
}, timeout);
test('quote fetch', async () => {
expect(process.env.ALPACA_API_KEY).toBeDefined();
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
await expect(exchange.quoteProvider.fetchQuote("AAPL")).resolves.toBeDefined();
}, timeout);
test('action fetch', async () => {
expect(process.env.ALPACA_API_KEY).toBeDefined();
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
const date = new Date("2023-10-23T13:30:28.163Z");
const response = await exchange.actionProvider.fetchActions({
pageSize: undefined,
dateOptions: {
date: date,
dateType: ActionDateType.On
}
});
expect(response).toBeDefined();
logger.info(JSON.stringify(response));
for (const action of response.actions) {
expect(action).toBeDefined();
expect(action.symbol).toBeDefined();
expect(action.quantity).toBeDefined();
expect(action.side).toBeDefined();
expect(action.pricePerShare).toBeDefined();
expect(action.timestamp).toBeDefined();
expect(action.timestamp.getFullYear()).toBe(date.getFullYear());
expect(action.timestamp.getMonth()).toBe(date.getMonth());
expect(action.timestamp.getDate()).toBe(date.getDate());
}
}, timeout);
});