Skip to content

Feature/implementing search by region#575

Open
Nathan-P2 wants to merge 10 commits intoBrasilAPI:mainfrom
Nathan-P2:feature/implementing-search-by-region
Open

Feature/implementing search by region#575
Nathan-P2 wants to merge 10 commits intoBrasilAPI:mainfrom
Nathan-P2:feature/implementing-search-by-region

Conversation

@Nathan-P2
Copy link
Copy Markdown

  • Implementando 2 rotas novas:
  • Uma para trazer todas as regiões do Brasil utilizando API do IBGE
  • Outra para trazer todos os estados de uma região específica do Brasil utilizando também a API do IBGE
  • Isso é um complemento para as rotas que trazem informações dos estados brasileiros. A proposta agora é trazer essa busca por regiões, podendo ser utilizado por sistemas que fazem essa busca de forma específica.

@vercel
Copy link
Copy Markdown

vercel bot commented Jan 27, 2024

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 Jan 28, 2024 0:34am

@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Passed Quality Gate passed

Kudos, no new issues were introduced!

0 New issues
0 Security Hotspots
No data about Coverage
7.5% Duplication on New Code

See analysis details on SonarCloud

@lucianopf
Copy link
Copy Markdown
Member

Olá @Nathan-P2, boa proposta! A estrutura geral está no caminho certo (usa app(), aliases @/, NotFoundError, dados do IBGE oficial), mas há alguns ajustes antes do merge:

Bloqueadores:

1. Testes usam sintaxe CommonJS em um projeto ESM

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

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

O projeto usa "type": "module"require() não funciona aqui. Os testes falharão ao rodar. Veja tests/ibge-uf-v1.test.js como referência para a sintaxe correta.

2. Testes de erro sem expect.assertions()

Os blocos try/catch dos testes de erro não garantem que as assertions rodem:

// ❌ se a requisição não lançar, o catch nunca executa e o teste passa silenciosamente
try {
  await axios.get(requestUrl);
} catch (error) {
  expect(response.status).toBe(404);
}

// ✅
test('...', async () => {
  expect.assertions(1);
  try {
    await axios.get(requestUrl);
  } catch (error) {
    expect(error.response.status).toBe(404);
  }
});

Sugestões (não bloqueiam):

3. response.status(status) é frágil

Passar o status do IBGE diretamente é arriscado — se o IBGE retornar 4xx ou 5xx, o handler repassa o código sem tratar. Prefira:

return response.status(200).json(data);

4. Path parameters não documentados no OpenAPI

As rotas com {regionCode} (ex: /ibge/regioes/v1/{regionCode}) não têm o parâmetro descrito no array parameters. Adicione conforme o padrão dos outros endpoints em ibge.json.

5. Faltam testes de CORS

Adicione ao final do arquivo de testes:

import { testCorsForRoute } from './helpers/cors';
testCorsForRoute('/api/ibge/regioes/v1');
testCorsForRoute('/api/ibge/regioes/v1/1');
testCorsForRoute('/api/ibge/uf/v1/regiao/S');

Com as correções 1 e 2, o PR está quase pronto para 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.

2 participants