Added support for env variables and added basic tests for Alpaca.

This commit is contained in:
Carter Bertolini 2023-10-20 16:50:55 -04:00
parent 6dc8ecaf26
commit 7ceb69e9d5
4 changed files with 52 additions and 4 deletions

View File

@ -8,6 +8,7 @@ const config: Config.InitialOptions =
}, },
collectCoverageFrom: ['src/*.ts'], collectCoverageFrom: ['src/*.ts'],
verbose: false,
} }
export default config export default config

20
package-lock.json generated
View File

@ -10,6 +10,7 @@
"license": "GPL-3.0-or-later", "license": "GPL-3.0-or-later",
"dependencies": { "dependencies": {
"@alpacahq/alpaca-trade-api": "^3.0.1", "@alpacahq/alpaca-trade-api": "^3.0.1",
"dotenv": "^16.3.1",
"winston": "^3.10.0" "winston": "^3.10.0"
}, },
"devDependencies": { "devDependencies": {
@ -56,6 +57,14 @@
"npm": ">=6" "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": { "node_modules/@ampproject/remapping": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
@ -2429,11 +2438,14 @@
} }
}, },
"node_modules/dotenv": { "node_modules/dotenv": {
"version": "6.2.0", "version": "16.3.1",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
"integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
"engines": { "engines": {
"node": ">=6" "node": ">=12"
},
"funding": {
"url": "https://github.com/motdotla/dotenv?sponsor=1"
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {

View File

@ -29,6 +29,7 @@
}, },
"dependencies": { "dependencies": {
"@alpacahq/alpaca-trade-api": "^3.0.1", "@alpacahq/alpaca-trade-api": "^3.0.1",
"dotenv": "^16.3.1",
"winston": "^3.10.0" "winston": "^3.10.0"
} }
} }

34
test/alpaca.test.ts Normal file
View File

@ -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;
});
});