# 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 5. ✅ `ProductsService.getRotinaA4` - Método específico de rotina 6. ✅ `DataConsultService.getCarriersByDate` - Método com cache 7. ✅ `DataConsultService.getOrderCarriers` - Método auxiliar ### Baixa Prioridade 8. ✅ `ProductsService.exposedProduct` - Método de transação 9. ✅ 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