Skip to content

feat: Adicionar campo weekday no endpoint de feriados#755

Merged
lucianopf merged 2 commits intoBrasilAPI:mainfrom
BrzGab:feature/add-weekday-to-holidays
Apr 11, 2026
Merged

feat: Adicionar campo weekday no endpoint de feriados#755
lucianopf merged 2 commits intoBrasilAPI:mainfrom
BrzGab:feature/add-weekday-to-holidays

Conversation

@BrzGab
Copy link
Copy Markdown
Contributor

@BrzGab BrzGab commented Nov 20, 2025

feat: Adicionar campo weekday no endpoint de feriados

Descrição

Esta PR implementa a funcionalidade solicitada na issue #738, adicionando o campo weekday (dia da semana em português) a todos os feriados retornados pelo endpoint /api/feriados/v1/{ano}.

Closes #738

Motivação

Atualmente, o endpoint de feriados retorna apenas a data, nome e tipo do feriado. Para facilitar a visualização e uso dos dados, esta implementação adiciona o nome do dia da semana em que cada feriado ocorre, eliminando a necessidade de processamento adicional por parte dos consumidores da API.

Mudanças Implementadas

1. Nova Função Auxiliar getWeekdayName

Criada função para converter datas no formato YYYY-MM-DD para o nome do dia da semana em português:

export function getWeekdayName(dateString) {
  const weekdays = [
    'domingo',
    'segunda-feira',
    'terça-feira',
    'quarta-feira',
    'quinta-feira',
    'sexta-feira',
    'sábado',
  ];
  const date = new Date(dateString + 'T12:00:00');
  return weekdays[date.getDay()];
}

2. Atualização de getNationalHolidays

Adicionado o campo weekday a todos os feriados nacionais fixos (Ano Novo, Tiradentes, Dia do Trabalho, etc.).

3. Atualização de getEasterHolidays

Adicionado o campo weekday a todos os feriados móveis calculados com base na Páscoa (Carnaval, Sexta-feira Santa, Páscoa, Corpus Christi).

4. Configuração do Vite

Adicionado alias @ no vite.config.js para suportar imports nos testes.

5. Novos Testes E2E

Adicionados 3 novos testes para validar a funcionalidade:

  • Teste específico para feriados fixos (Ano Novo)
  • Teste específico para feriados móveis (Páscoa)
  • Teste abrangente validando que todos os feriados têm o campo weekday com valores válidos

Metodologia TDD

Esta implementação foi desenvolvida usando Test-Driven Development (TDD) em 3 ciclos incrementais:

Ciclo 1: Feriados Fixos

  • ✅ RED: Teste criado verificando weekday do Ano Novo
  • ✅ GREEN: Implementação do campo weekday em feriados fixos
  • ✅ Todos os testes passaram

Ciclo 2: Feriados Móveis

  • ✅ RED: Teste criado verificando weekday da Páscoa
  • ✅ GREEN: Implementação do campo weekday em feriados móveis
  • ✅ Todos os testes passaram

Ciclo 3: Validação Abrangente

  • ✅ Teste validando que 100% dos feriados têm weekday
  • ✅ Teste validando que todos os valores são válidos
  • ✅ Todos os testes passaram

Exemplo de Resposta

Antes

{
  "date": "2025-01-01",
  "name": "Confraternização mundial",
  "type": "national"
}

Depois

{
  "date": "2025-01-01",
  "weekday": "quarta-feira",
  "name": "Confraternização mundial",
  "type": "national"
}

Testes

Testes Novos

  • [CICLO 1] Ano Novo (01-01-2025) deve ter o campo weekday com valor "quarta-feira"
  • [CICLO 2] Páscoa (20-04-2025) deve ter o campo weekday com valor "domingo"
  • [CICLO 3] Todos os feriados devem ter o campo weekday com valor válido

Testes Existentes

  • ✅ Todos os 12 testes existentes continuam passando
  • ✅ Helpers de teste atualizados para incluir o campo weekday

Resultado Final

Test Files  1 passed (1)
Tests  15 passed (15)
Duration  13.32s

Checklist

Breaking Changes

Não há breaking changes. Esta PR apenas adiciona um novo campo aos objetos existentes, mantendo total compatibilidade com código que consome a API atual.

Documentação

A implementação adiciona o campo weekday de forma transparente a todos os feriados retornados. O campo contém sempre um dos seguintes valores:

  • "domingo"
  • "segunda-feira"
  • "terça-feira"
  • "quarta-feira"
  • "quinta-feira"
  • "sexta-feira"
  • "sábado"

Contribuição

Implementação desenvolvida seguindo rigorosamente a metodologia TDD, com:

  • Testes escritos antes do código de produção
  • Desenvolvimento incremental em ciclos
  • Validação completa da funcionalidade
  • Manutenção de todos os testes existentes

@vercel
Copy link
Copy Markdown

vercel bot commented Nov 20, 2025

@BrzGab is attempting to deploy a commit to the BrasilAPI Team on Vercel.

A member of the Team first needs to authorize it.

@sonarqubecloud
Copy link
Copy Markdown

@lucianopf
Copy link
Copy Markdown
Member

Muito obrigado pela contribuição, @BrzGab! 🙏

Seu esforço e dedicação fazem o BrasilAPI melhor para toda a comunidade de desenvolvedores brasileiros. Fico feliz de ter você contribuindo com o projeto!

@lucianopf lucianopf merged commit 9ba39e3 into BrasilAPI:main Apr 11, 2026
0 of 2 checks passed
@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adicionar campo weekday com o nome do dia da semana no endpoint de feriados

2 participants