Skip to content

Valida os schemas da API no modo estrito do Pydantic - #28

Merged
ThomasTDS merged 1 commit into
masterfrom
feat/schema-estrito
Oct 2, 2026
Merged

ThomasTDS merged 1 commit into
masterfrom
feat/schema-estrito

Conversation

@ThomasTDS

Copy link
Copy Markdown
Owner

Resumo

  • Os modelos em models/booking.py herdam de StrictModel (ConfigDict(strict=True)). O Pydantic deixa de converter tipos sozinho: antes, um totalprice "150" virava 150.0 e um depositpaid "true" virava True, e uma mudança de tipo na resposta da API passava sem ser notada
  • checkin e checkout passam de str para date. Uma data corrompida, como o "0NaN-aN-aN" documentado no TC-018, deixa de valer como texto qualquer
  • As respostas são validadas direto do JSON (model_validate_json), que confere os tipos exatamente como a API os entrega. A lista de GET /booking usa o novo BookingIdList (TypeAdapter)
  • Os payloads enviados usam model_dump(mode="json"), para que as datas sejam serializadas como AAAA-MM-DD
  • Campos extras na resposta continuam sendo ignorados: a API é de terceiros, e um campo a mais não é defeito
  • README atualizado no item de validação de schema

Test plan

  • mypy .
  • ruff check .
  • ruff format --check .
  • pytest: 52/52 testes passando, sem reruns (26 cenários BDD contra a API pública e 26 testes unitários), cobertura de api/ e models/ em 100%
  • 5 testes unitários novos em test_booking_models.py: rejeição de totalprice como texto, de depositpaid como texto e de data corrompida; campos extras ignorados; validação da lista de ids

Os modelos deixam de converter tipos por conta própria (um totalprice "150" ou um depositpaid "true" agora reprovam a validação), e checkin/checkout passam a ser date em vez de str. As respostas são validadas direto do JSON com model_validate_json. Campos extras continuam sendo ignorados.
@codecov

codecov Bot commented Oct 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@ThomasTDS
ThomasTDS merged commit a005ad3 into master Oct 2, 2026
5 checks passed
@ThomasTDS
ThomasTDS deleted the feat/schema-estrito branch October 2, 2026 19:20
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.

1 participant