Este projeto inclui uma suíte completa de testes unitários usando Jest para garantir a qualidade e confiabilidade do código.
# Instalar dependências de desenvolvimento
npm installnpm testnpm run test:watchnpm run test:coverageOs testes cobrem:
- ✅ Cálculo de diferenças entre datas (
daysBetween,daysSince) - ✅ Cálculo de idade (
calculateAge) - ✅ Formatação de datas (múltiplos formatos)
- ✅ Validações (anos bissextos, fins de semana)
- ✅ Geração de calendários (
generateCalendar) - ✅ Manipulação de datas (
addDays,addMonths) - ✅ Utilitários de tempo (semana do ano, trimestres)
- ✅ Fases da lua (algoritmos astronômicos completos)
- ✅ Duração formatada (
formatDuration)
- ✅ Cálculo de diferenças (
calculateDifference) - ✅ Dias desde data (
daysSince) - ✅ Geração de calendário (
generateCalendar) - ✅ Cálculo de idade (
calculateAge) - ✅ Formatação de datas (
formatDate) - ✅ Fases da lua (
generateMoonPhases) - ✅ Validações de entrada (campos vazios)
- ✅ Tratamento de erros (mensagens de erro)
- ✅ Event handlers (DOM ready)
jest.setup.js: Mock de elementos DOM e APIs do navegadorpackage.json: Configuração do Jest com jsdom- Ambiente: jsdom para simular o navegador
- DOM Elements:
document.getElementById,document.querySelector - Date Objects: Para testes determinísticos
- Functions: Spy em funções do DateUtils para testes isolados
describe('NomeDaClasse/Função', () => {
describe('métodoEspecífico', () => {
test('deve fazer algo específico', () => {
// Arrange - Setup
// Act - Execução
// Assert - Verificação
});
});
});
- Dados válidos e formatação correta
- Cálculos matemáticos precisos
- Geração de interfaces corretas
- Campos vazios ou não preenchidos
- Datas inválidas ou futuras
- Estados de erro da aplicação
- Anos bissextos vs não bissextos
- Mudanças de mês/ano
- Fases lunares em diferentes períodos
- Cálculos de calendários complexos
- Linhas: >95%
- Funções: 100%
- Branches: >90%
- Statements: >95%
- 🛡️ Confiabilidade: Código testado é código confiável
- 🔄 Refatoração segura: Mudanças sem quebrar funcionalidades
- 📖 Documentação: Testes servem como documentação viva
- 🚀 Deploy confiante: CI/CD com validação automatizada
- 🐛 Detecção precoce: Bugs encontrados antes da produção
- Criar arquivos
.test.jspara novas funcionalidades - Seguir padrão AAA (Arrange, Act, Assert)
- Incluir casos de sucesso, erro e extremos
- Usar mocks para isolar dependências
# Executar teste específico
npm test -- --testNamePattern="calculateDifference"
# Executar arquivo específico
npm test date-utils.test.js
# Modo verbose (mais detalhes)
npm test -- --verbose💡 Dica: Execute npm run test:coverage regularmente para manter alta qualidade de código!