From 5b66bcd2c06f5374e80380eb78b055e53cd4d299 Mon Sep 17 00:00:00 2001 From: Carter Bertolini Date: Fri, 3 Nov 2023 16:19:58 -0400 Subject: [PATCH] Add support for Alpaca action fetch options. --- src/alpaca/actions.ts | 10 +++++----- test/alpaca.test.ts | 15 +++++++++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/alpaca/actions.ts b/src/alpaca/actions.ts index 83fc753..43c3b13 100644 --- a/src/alpaca/actions.ts +++ b/src/alpaca/actions.ts @@ -1,5 +1,5 @@ import Alpaca from '@alpacahq/alpaca-trade-api'; -import { Action, ActionSide, ActionFetchOptions, ActionFetchResponse } from '../interface/actions'; +import { Action, ActionSide, ActionFetchOptions, ActionFetchResponse, ActionDateType } from '../interface/actions'; class AlpacaActivity { id!: string; @@ -22,11 +22,11 @@ export class AlpacaActionProvider { readonly fetchActions = (options: ActionFetchOptions): Promise => { return (this.alpaca.getAccountActivities({ activityTypes: "FILL", - until: undefined, - after: undefined, + until: options.dateOptions?.dateType === ActionDateType.Before ? options.dateOptions.date : undefined, + after: options.dateOptions?.dateType === ActionDateType.After ? options.dateOptions.date : undefined, direction: "desc", - date: undefined, - pageSize: undefined, + date: options.dateOptions?.dateType === ActionDateType.On ? options.dateOptions.date : undefined, + pageSize: options.pageSize, pageToken: undefined, }) as Promise).then((activities) => { return new ActionFetchResponse( diff --git a/test/alpaca.test.ts b/test/alpaca.test.ts index 1dbbb59..19304f8 100644 --- a/test/alpaca.test.ts +++ b/test/alpaca.test.ts @@ -3,6 +3,8 @@ import 'dotenv/config'; import { ActionFetchOptions, AlpacaExchange } from '../src/index'; import { createLogger, transports, format } from "winston"; +const timeout = 10000; + const logger = createLogger({ transports: [new transports.Console()], format: format.combine( @@ -23,19 +25,24 @@ describe('Alpaca Tests', () => { 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(); - }, 10000); + }, 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(); - }, 10000); + }, 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); - await expect(exchange.actionProvider.fetchActions(new ActionFetchOptions)).resolves.toBeDefined(); - }, 10000); + + const response = await exchange.actionProvider.fetchActions(new ActionFetchOptions()); + + logger.info(JSON.stringify(response)); + + await expect(exchange.actionProvider.fetchActions(new ActionFetchOptions())).resolves.toBeDefined(); + }, timeout); });