Resolve "Alpaca API Implementation" #28

Merged
clbertolini merged 9 commits from 12-alpaca-api-implementation into main 2023-10-24 20:54:40 +00:00
4 changed files with 52 additions and 4 deletions
Showing only changes of commit 7ceb69e9d5 - Show all commits

View File

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

20
package-lock.json generated
View File

@ -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": {

View File

@ -29,6 +29,7 @@
},
"dependencies": {
"@alpacahq/alpaca-trade-api": "^3.0.1",
"dotenv": "^16.3.1",
"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;
});
});