- 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
274 lines
7.0 KiB
Markdown
274 lines
7.0 KiB
Markdown
# 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
|
|
|