From 7ceb69e9d571b67679ccc1816a16e164852c23ca Mon Sep 17 00:00:00 2001 From: Carter Bertolini Date: Fri, 20 Oct 2023 16:50:55 -0400 Subject: [PATCH] Added support for env variables and added basic tests for Alpaca. --- jest.config.ts | 1 + package-lock.json | 20 ++++++++++++++++---- package.json | 1 + test/alpaca.test.ts | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 test/alpaca.test.ts diff --git a/jest.config.ts b/jest.config.ts index 6bd32a9..4557437 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -8,6 +8,7 @@ const config: Config.InitialOptions = }, collectCoverageFrom: ['src/*.ts'], + verbose: false, } export default config \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bf7e9dc..fbd190a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "GPL-3.0-or-later", "dependencies": { "@alpacahq/alpaca-trade-api": "^3.0.1", + "dotenv": "^16.3.1", "winston": "^3.10.0" }, "devDependencies": { @@ -56,6 +57,14 @@ "npm": ">=6" } }, + "node_modules/@alpacahq/alpaca-trade-api/node_modules/dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "engines": { + "node": ">=6" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -2429,11 +2438,14 @@ } }, "node_modules/dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, "node_modules/electron-to-chromium": { diff --git a/package.json b/package.json index cee3f18..b2da7b3 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ }, "dependencies": { "@alpacahq/alpaca-trade-api": "^3.0.1", + "dotenv": "^16.3.1", "winston": "^3.10.0" } } diff --git a/test/alpaca.test.ts b/test/alpaca.test.ts new file mode 100644 index 0000000..8446851 --- /dev/null +++ b/test/alpaca.test.ts @@ -0,0 +1,34 @@ +import { describe, expect, test } from '@jest/globals'; +import 'dotenv/config' +import { AlpacaExchange } from '../src/alpaca/exchange' +import { createLogger, transports, format } from "winston"; + +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', () => { + expect(process.env.ALPACA_API_KEY).toBeDefined(); + expect(process.env.ALPACA_SECRET_KEY).toBeDefined(); + let exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true); + expect(exchange.portfolioProvider.fetchPortfolio()).resolves; + }); + + test('quote fetch', async () => { + expect(process.env.ALPACA_API_KEY).toBeDefined(); + expect(process.env.ALPACA_SECRET_KEY).toBeDefined(); + let exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true); + expect(exchange.quoteProvider.fetchQuote("AAPL")).resolves; + }); +}); \ No newline at end of file