Files
portalweb-api/docs/COBERTURA_TESTES.md
joelson brito c07df023dd Adiciona testes para RefreshTokenService e TokenBlacklistService
- Cria testes completos para RefreshTokenService (14 testes)
- Cria testes completos para TokenBlacklistService (11 testes)
- Remove JSDoc do DebService
- Adiciona testes para DebService (6 testes)
- Corrige query SQL no DebRepository para usar SQL raw em vez de QueryBuilder
- Adiciona documentação de cobertura de testes
2025-11-10 16:24:02 -03:00

7.0 KiB

Cobertura de Testes - O que ainda pode ser testado

📊 Resumo Atual

Testes existentes:

  • DataConsultService - stores, sellers, billings, customers, products, getAllProducts, getAllCarriers, getRegions
  • ProductsService - getProductDetails (busca por codauxiliar)
  • OrdersService - findOrders
  • DebService - findByCpfCgcent
  • AuthService - createToken, createTokenPair, refreshAccessToken, logout

Total: 10 suites de teste, 168 testes passando


🔴 Métodos sem testes

1. ProductsService

productsValidation

  • Status: Sem testes
  • O que testar:
    • Busca por codauxiliar
    • Busca por codprod
    • Busca por descricao
    • Busca por todos (tipoBusca = 'todos')
    • Produto não encontrado (lança HttpException)
    • Processamento de imagens (com e sem separador ;)
    • Imagens null/undefined (retorna array vazio)
    • Diferentes tipos de produto (AUTOSSERVICO, SHOWROOM, ELETROMOVEIS, OUTROS)

exposedProduct

  • Status: Sem testes
  • O que testar:
    • Criação de produto exposto com sucesso
    • Rollback em caso de erro
    • Validação de dados de entrada
    • Tratamento de erros de transação

getProductDetails (busca por codprod)

  • Status: ⚠️ Parcial (só tem busca por codauxiliar)
  • O que testar:
    • Busca por codprod
    • Busca por codprod e codauxiliar juntos
    • Validação de parâmetros

unifiedProductSearch

  • Status: Sem testes
  • O que testar:
    • Busca por código numérico (codprod e codauxiliar)
    • Busca por nome/descrição
    • Termo de busca vazio (lança exceção)
    • Formatação de preço
    • Remoção de caracteres não numéricos

getRotinaA4

  • Status: Sem testes
  • O que testar:
    • Busca por codprod
    • Busca por codauxiliar
    • Busca por codprod e codauxiliar juntos
    • Validação quando nenhum é informado
    • Formatação de valores (PRECO_NORMAL, VALOR_VENDA, DECIMAL_VENDA)

formatarMoedaBrasileira (método privado)

  • Status: Sem testes
  • O que testar:
    • Formatação de valores normais
    • Valores null/undefined (retorna '0,00')
    • Valores com decimais
    • Valores grandes (milhares)

2. DataConsultService

productsByCodauxiliar

  • Status: Sem testes
  • O que testar:
    • Busca por codauxiliar válido
    • Codauxiliar inválido (null, undefined, string vazia)
    • Erro do repositório (log e exceção)
    • Mapeamento correto para ProductDto

getCarriersByDate

  • Status: Sem testes
  • O que testar:
    • Busca com data inicial
    • Busca com data final
    • Busca com data inicial e final
    • Busca com codfilial
    • Busca sem filtros
    • Contagem de pedidos (ordersCount)
    • Cache Redis

getOrderCarriers

  • Status: Sem testes
  • O que testar:
    • Busca por orderId válido
    • OrderId inválido
    • Retorno vazio quando não há transportadoras
    • Formatação de dados

3. Outros Serviços sem testes

OrdersPaymentService

  • Status: Sem testes
  • O que testar:
    • Processamento de pagamentos
    • Validação de dados
    • Tratamento de erros

LogisticService

  • Status: Sem testes
  • O que testar:
    • getExpedicao
    • getDeliveries
    • Validação de parâmetros

PartnersService

  • Status: Sem testes
  • O que testar:
    • Métodos de busca de parceiros
    • Validações

ClientesService

  • Status: Sem testes
  • O que testar:
    • Busca de clientes
    • Validações

UsersService

  • Status: Sem testes
  • O que testar:
    • Operações de usuários
    • Validações

ResetPasswordService

  • Status: Sem testes
  • O que testar:
    • Reset de senha
    • Validação de tokens
    • Expiração de tokens

ChangePasswordService

  • Status: Sem testes
  • O que testar:
    • Mudança de senha
    • Validação de senha atual
    • Validação de nova senha

EmailService

  • Status: Sem testes
  • O que testar:
    • Envio de emails
    • Templates de email
    • Tratamento de erros

RefreshTokenService

  • Status: Sem testes
  • O que testar:
    • Geração de refresh token
    • Validação de refresh token
    • Expiração de tokens

TokenBlacklistService

  • Status: Sem testes
  • O que testar:
    • Adicionar token à blacklist
    • Verificar se token está na blacklist
    • Expiração de tokens na blacklist

SessionManagementService

  • Status: Sem testes
  • O que testar:
    • Criação de sessão
    • Validação de sessão
    • Encerramento de sessão

LoginAuditService

  • Status: Sem testes
  • O que testar:
    • Registro de tentativas de login
    • Auditoria de acessos

RateLimitingService

  • Status: Sem testes
  • O que testar:
    • Limite de requisições
    • Reset de contadores
    • Bloqueio temporário

🟡 Casos de borda e cenários adicionais

ProductsService

  1. getProductDetails:

    • Busca por codprod (não só codauxiliar)
    • Busca com codprod e codauxiliar juntos
    • Validação de numregiao inválido
    • Validação de codfilial inválido
    • Preço null/undefined (formatação)
  2. productsValidation:

    • Filtro vazio
    • Filtro com caracteres especiais
    • Múltiplos produtos retornados (pega o primeiro)
    • Tipos de produto diferentes
  3. unifiedProductSearch:

    • Termo com caracteres especiais
    • Termo muito longo
    • Termo com apenas espaços
    • Busca que retorna múltiplos produtos

DataConsultService

  1. productsByCodauxiliar:

    • Codauxiliar com caracteres não numéricos
    • Codauxiliar muito longo
    • Codauxiliar vazio
  2. getCarriersByDate:

    • Data inicial maior que data final
    • Datas inválidas
    • Cache hit/miss
    • Erro do repositório
  3. getOrderCarriers:

    • OrderId negativo
    • OrderId zero
    • OrderId muito grande

DebService

  1. findByCpfCgcent:
    • CPF/CGCENT com caracteres não numéricos
    • CPF/CGCENT muito curto/longo
    • Matrícula negativa
    • Cobrança inválida

🎯 Prioridades de Teste

Alta Prioridade

  1. ProductsService.productsValidation - Método crítico usado em validação de produtos
  2. ProductsService.unifiedProductSearch - Novo método, precisa de testes
  3. ProductsService.getProductDetails (busca por codprod) - Completar cobertura
  4. DataConsultService.productsByCodauxiliar - Método usado no sistema

Média Prioridade

  1. ProductsService.getRotinaA4 - Método específico de rotina
  2. DataConsultService.getCarriersByDate - Método com cache
  3. DataConsultService.getOrderCarriers - Método auxiliar

Baixa Prioridade

  1. ProductsService.exposedProduct - Método de transação
  2. Outros serviços menores (Email, ResetPassword, etc.)

📝 Observações

  • Cobertura atual: ~40% dos métodos principais
  • Foco: Métodos de negócio críticos primeiro
  • Padrão: Seguir o padrão dos testes existentes (helper + spec)
  • Casos de borda: Sempre testar null, undefined, strings vazias, valores inválidos