usxi/test/alpaca.test.ts

64 lines
2.3 KiB
TypeScript

import { describe, expect, test } from '@jest/globals';
import 'dotenv/config';
import { ActionDateOptions, ActionDateType, ActionFetchOptions, 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 fetchOptions = new ActionFetchOptions(undefined, new ActionDateOptions(new Date("2023-10-23T13:30:28.163Z"), ActionDateType.On));
const response = await exchange.actionProvider.fetchActions(fetchOptions);
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(2023);
expect(action.timestamp.getMonth()).toBe(9);
expect(action.timestamp.getDate()).toBe(23);
}
}, timeout);
});