Skip to content

PHPAY-109: cobrir o StaticPixCode no smoke test do 8.1 - #127

Merged
mariolucasdev merged 1 commit into
developfrom
test/phpay-109
Oct 22, 2026
Merged

mariolucasdev merged 1 commit into
developfrom
test/phpay-109

Conversation

@mariolucasdev

Copy link
Copy Markdown
Collaborator

Fecha o buraco que notei depois de mergear o #126.

O que muda

O smoke test da versão mínima exercitava Money e Customer na seção de value objects, mas não o StaticPixCode. A compatibilidade dele com o PHP 8.1 estava apoiada só no phpVersion do PHPStan — análise estática, não execução.

A suíte do Pest não resolve isso: ela roda em 8.2+ porque o toolchain de dev exige, e é justamente por isso que o smoke test existe.

Três checagens novas:

  1. O vetor de teste do manual do BACEN, byte a byte. É a que importa: um CRC que para antes do literal 6304 devolve 4AAD em vez de 1D3D e gera um QR Code que não lê. Com isso, esse erro passa a reprovar o job do 8.1 em vez de chegar na frente de um pagador.
  2. Valor em reais com ponto no campo 54 e txid no 62 — conferindo também que o *** do padrão sai quando há txid.
  3. As duas recusas: chave vazia e txid com hífen.
ok    StaticPixCode: reproduz o vetor de teste do manual do BACEN
ok    StaticPixCode: valor em reais com ponto e txid no campo 62
ok    StaticPixCode: chave vazia e txid fora do padrão são recusados

73 verificações, 0 falha(s)

Como testar

php .github/scripts/smoke.php localmente, que é o que roda acima — no PHP 8.4, porque não tenho 8.1 nesta máquina. A prova no 8.1 de verdade é o job PHP 8.1 (mínimo suportado) deste PR, e é por ele que vale esperar antes de mergear.

As checagens usam só PHPay\Support\* e ValidationException, nada de dependência de dev — o job instala com --no-dev.

composer test segue verde: 506 testes, PHPStan nível 9, links conferidos.

Checklist

  • composer test passa (Pint, Pest e PHPStan nível 9)
  • Cobri a mudança com testes, usando HTTP mockado (nenhum teste acessa a rede) — é teste, e não acessa rede
  • Atualizei README, CLAUDE.md ou UPGRADE.md, se a mudança afeta quem usa a biblioteca — não se aplica
  • Nenhuma credencial, token ou dado pessoal real foi commitado
  • Li e aceito o Contributor License Agreement

Não fecha issue: a #109 já está fechada pelo #126, e isto é a cobertura que faltou.

The smoke test of the minimum supported version exercised Money and Customer but not the value object added in PHPAY-109, so its behaviour on PHP 8.1 rested on the phpVersion of PHPStan rather than on running. The Pest suite cannot fill that gap: the dev toolchain needs 8.2+, which is the whole reason the smoke test exists.

Three checks: the test vector of the BACEN manual byte for byte, the amount and txid fields, and the two refusals. The vector is the one that matters — a CRC that stops before the 6304 literal gives 4AAD instead of 1D3D and produces a QR Code that does not read, and that would now fail the 8.1 job rather than reach a payer.
@mariolucasdev
mariolucasdev merged commit c942bd4 into develop Oct 22, 2026
7 checks passed
@mariolucasdev
mariolucasdev deleted the test/phpay-109 branch October 22, 2026 20:06
@mariolucasdev mariolucasdev self-assigned this Oct 22, 2026
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