Descrição
Os testes de fundos B3 para os tipos FIAGRO-FIDC e FIA falham porque assumem
que sempre existem tickers listados, mas a B3 pode legitimamente retornar array
vazio para esses tipos.
Como reproduzir
# Prod retorna array vazio para esses tipos (válido)
curl https://brasilapi.com.br/api/tickers/b3/fundos/v1/FIAGRO-FIDC
# → []
curl https://brasilapi.com.br/api/tickers/b3/fundos/v1/FIA
# → []
npm test
# → FAIL tests/b3-v1.test.js
# Lista tickers de fundos tipo FIAGRO-FIDC
# Lista tickers de fundos tipo FIA
Causa raiz
O teste usa expect.arrayContaining([validFundOutputSchema]) que exige pelo
menos 1 item no array. Quando a B3 não tem tickers de um tipo, retorna [] e
a assertion falha.
// Linha 78-80 de tests/b3-v1.test.js
expect(response.data).toEqual(
expect.arrayContaining([validFundOutputSchema]) // ← falha com []
);
Solução proposta
Validar que a resposta é um array válido. Se houver itens, validar o schema:
expect(response.status).toBe(200);
expect(Array.isArray(response.data)).toBe(true);
if (response.data.length > 0) {
expect(response.data).toEqual(
expect.arrayContaining([validFundOutputSchema])
);
}
Impacto
- Não é bug de código — o endpoint funciona corretamente
- Testes produzem falso-positivo no CI, bloqueando PRs de contributors
- Validado em produção em 2026-04-15
Arquivos relevantes
- tests/b3-v1.test.js (linhas 73-111)
Descrição
Os testes de fundos B3 para os tipos
FIAGRO-FIDCeFIAfalham porque assumemque sempre existem tickers listados, mas a B3 pode legitimamente retornar array
vazio para esses tipos.
Como reproduzir
curl https://brasilapi.com.br/api/tickers/b3/fundos/v1/FIA # → []Causa raiz
O teste usa expect.arrayContaining([validFundOutputSchema]) que exige pelo
menos 1 item no array. Quando a B3 não tem tickers de um tipo, retorna [] e
a assertion falha.
// Linha 78-80 de tests/b3-v1.test.js expect(response.data).toEqual( expect.arrayContaining([validFundOutputSchema]) // ← falha com [] );Solução proposta
Validar que a resposta é um array válido. Se houver itens, validar o schema:
Impacto
Arquivos relevantes