70 lines
2.4 KiB
TypeScript
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);
|
|
});
|