Skip to content

fix(entries): limitar --to a 2031-12-31 e erros em JSON com --json - #68

Merged
fm1randa merged 1 commit into
mainfrom
fix/entries-list-date-limit-json-errors
Oct 16, 2026
Merged

fm1randa merged 1 commit into
mainfrom
fix/entries-list-date-limit-json-errors

Conversation

@fm1randa

Copy link
Copy Markdown
Owner

Refs #65

O que muda

  • Limite de datas: entries list e entries summary validam --from/--to antes de qualquer requisição. A data precisa ser YYYY-MM-DD real, e --to não pode passar de 2031-12-31, o limite da API ("A data limite de carregamento dos lançamentos é 31/12/2031"). O erro é claro: --to 2035-12-31 is past 2031-12-31, the last date Meu Dinheiro loads entries for. Use --to 2031-12-31 or earlier.
  • Erros com --json: a correção é geral, em src/utils/action.ts. O wrapper action() vê no Command que o Commander passa como último argumento se --json está ligado, e aí exitWithError escreve {"error": "<mensagem>"} no stderr. O stdout fica vazio e o exit code é 1. Sem --json, a saída continua como antes (✗ mensagem no stderr). Isso vale para validações (exitWithError direto) e para exceções (erro da API com status e corpo, por exemplo 400 Bad Request - {"type":2,"error":"..."}) em todos os comandos embrulhados por action().
  • Observação: os erros já iam pro stderr (logger.error usa console.error). O JSON "quebrado" relatado na issue era o texto do erro misturado à saída (por exemplo, com 2>&1). Com --json, agora o stderr também é JSON válido.
  • README: nota sobre o limite de 2031 e o formato do erro em --json.

Testes

  • test/entries-list-errors.test.ts (6 testes) cobre: --to > 2031 sem chamar a API (JSON exato no stderr, stdout vazio), o mesmo em texto no summary, 2031-12-31 aceito (com fim conferido na query), data inválida, erro 400 da API virando JSON e a generalidade em outro comando (accounts list --json com 500, e sem --json o stderr não é JSON).
  • Mock do verify ganha GET /v2/lancamentos, que devolve os seeds por conta e data. O verify.sh ganha o helper expect_json_error (falha, stdout vazio, stderr = {"error": ...}) e 4 passos E2E: list --json ok, --to > 2031 em texto e em JSON, e erro 404 da API em --json.

Verificação

scripts/verify.sh local → VERIFICAÇÃO OK (133 testes, exit 0). Só mock, nada contra a API real.

…--json

The API rejects end dates after 2031-12-31, so entries list/summary now
check --from/--to before any request. Every command wrapped by action()
reports errors on stderr as {"error": "..."} when --json is set,
leaving stdout empty and exiting 1.

Refs #65
@fm1randa
fm1randa merged commit 6cf265b into main Oct 16, 2026
1 check passed
@fm1randa
fm1randa deleted the fix/entries-list-date-limit-json-errors branch October 16, 2026 12:36
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