Este teste técnico consiste em uma API para verificar o desempenho de uma ação em cinco cenários:
- Preço atual;
- Preço histórico;
- Preço atual em comparação a outras ações;
- Projeção de ganhos com compra em data específica.
A API utilizada no teste (www.alphavantage.co) tem um limite de 5 requests dentro de 1 minuto, e 500 por dia. Devido a essa limitação, alguns testes rodam com um response fixo na api (src/infra/http/axios/helpers/api-helper.ts)
É preciso inserir uma api key no arquivo env do projeto (src/main/config/env.ts)
npm run start
npm run dev
npm run test
npm build
get /stock/:quoteName/quote
{
"name": "ibm",
"pricedAt": "2022-04-20",
"lastPrice": 138.3
}
get /stocks/:stockName/history?from=2022-04-20&to=2022-04-22 Query: from, to
{
"name": "IBM",
"prices": [
{
"opening": 138.23,
"low": 137.35,
"high": 141.88,
"closing": 139.85,
"pricedAt": "2022-04-21",
"volume": 9922349
},
{
"opening": 135,
"low": 133.38,
"high": 139.56,
"closing": 138.32,
"pricedAt": "2022-04-20",
"volume": 17770306
}
]
}
get /stocks/:quoteName/compare?stocksToCompare[]=CIR Query: stocksToCompare[]
{
"lastPrices": [
{
"name": "IBM",
"lastPrice": 139.3,
"pricedAt": "2022-04-21"
},
{
"name": "CIR",
"lastPrice": 24.26,
"pricedAt": "2022-04-21"
}
]
}
get /stocks/:stockName/gains?purchasedAt=2022-04-11&purchasedAmount=10 Query: purchasedAt, purchasedAmount
{
"name": "IBM",
"lastPrice": 139.85,
"priceAtDate": 126.37,
"purchasedAmount": "10",
"purchasedAt": "2022-04-11",
"capitalGains": 134.79999999999995
}