Skip to content

feat: add statewide holidays#552

Open
Regijur wants to merge 11 commits intoBrasilAPI:mainfrom
Regijur:main
Open

feat: add statewide holidays#552
Regijur wants to merge 11 commits intoBrasilAPI:mainfrom
Regijur:main

Conversation

@Regijur
Copy link
Copy Markdown

@Regijur Regijur commented Nov 30, 2023

Este pull request introduz um novo recurso à BrasilAPI, expandindo a funcionalidade atual do endpoint api/feriados/v1/{ano}. Agora, é possível obter informações sobre os feriados estaduais adicionando o parâmetro uf. O endpoint api/feriados/v1/{ano} continua funcionando corretamente sem nenhuma alteração.

Alterações Realizadas:

Adição do parâmetro uf ao endpoint existente.
Atualização da lógica para retornar feriados estaduais com base no estado fornecido pelo parâmetro uf.
Inclusão de testes abrangentes:
Teste para cenário válido com uf e ano válidos.
Teste para cenário com uf inválido.
Teste para cenário com ano inválido.

Documentação:
A documentação do projeto foi aprimorada para refletir a nova funcionalidade adicionada. Isso inclui informações claras sobre como utilizar o novo endpoint, explicando os parâmetros necessários e exemplos de solicitações válidas.

@vercel
Copy link
Copy Markdown

vercel bot commented Nov 30, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
brasilapi ✅ Ready (Inspect) Visit Preview 💬 Add feedback Nov 30, 2023 9:55am

@sonarqubecloud
Copy link
Copy Markdown

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

@lucianopf
Copy link
Copy Markdown
Member

Olá @Regijur, boa contribuição! Feriados estaduais é uma feature muito pedida. Há alguns ajustes necessários:

Bloqueadores:

1. Bug em services/holidays/state/index.js: crash para UF desconhecida

const { holidays } = getStatewideHolidays(year).find(
  (holiday) => holiday.uf === uf.toUpperCase()
);
if (!holidays) { ... }

Se .find() não encontrar a UF, retorna undefined. Desestruturar { holidays } de undefined lança TypeError, causando erro 500 em vez do 400 esperado. Corrija:

const stateData = getStatewideHolidays(year).find(
  (holiday) => holiday.uf === uf.toUpperCase()
);
if (!stateData) {
  throw new BadRequestError({ message: 'UF inexistente', type: 'state_does_not_exist_error' });
}
const { holidays } = stateData;

2. Testes com CommonJS e sem imports do Vitest

// ❌
const axios = require('axios');
const crypto = require('crypto');

// ✅
import axios from 'axios';
import crypto from 'crypto';
import { describe, test, expect } from 'vitest';

3. expect.assertions() dentro do bloco catch

// ❌ — se não lançar, o catch nunca executa e o teste passa silenciosamente
try {
  await axios.get(url);
} catch (error) {
  expect.assertions(1); // ← está no lugar errado!
  expect(error.response.status).toEqual(400);
}

// ✅ — deve ser a PRIMEIRA linha do teste
test('...', async () => {
  expect.assertions(1);
  try { ... }
});

4. RN (Rio Grande do Norte) está faltando

O array de estados cobre 26 UFs mas falta RN. Adicione ou deixe com holidays: [] se não há feriados estaduais específicos.

Sugestões:

5. Campo weekday ausente

O endpoint /api/feriados/v1/{ano} retorna um campo weekday (dia da semana). Para consistência, considere incluir o mesmo campo no retorno dos feriados estaduais.

6. Verificar trailing comma dupla em AL

{ date: '09-16', name: 'Emancipação Política de Alagoas' },
,  // ← vírgula dupla

Isso pode causar um elemento undefined no array. Remova a vírgula extra.

7. year do query é string, não number

Em getStateHolidays(uf, ano), ano é string. A comparação year < 1900 funciona por coerção de tipo, mas é frágil. Use parseInt(year, 10) explicitamente.

Com as correções dos pontos 1-3, o PR estará próximo do merge.

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.

4 participants