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
This commit is contained in:
joelson brito
2025-11-10 16:24:02 -03:00
parent e3acf34510
commit c07df023dd
9 changed files with 1315 additions and 41 deletions

273
docs/COBERTURA_TESTES.md Normal file
View File

@@ -0,0 +1,273 @@
# 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