Skip to content

[B3] Testes de fundos FIAGRO-FIDC e FIA falham quando não há tickers listados #800

@felipeflfranca

Description

@felipeflfranca

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions