Skip to content
Commit ec68ccd5 authored by Igor Matheus's avatar Igor Matheus
Browse files

MG-7: o app sobre o Firebase, verificado em device



244 testes de widget passando sem mudança de asserção, mais 4 casos em device
contra os emuladores e a fonte oficial de verdade. Falta só FE-6 (remover o
ApiClient), que espera MG-8.

A troca não vazou para a apresentação, e dá para provar

O que mudou nos 235 testes de widget foi uma palavra por arquivo: o falso passou
a estender XRepositoryHttp em vez de XRepository, porque o nome de sempre virou
contrato com duas implementações. Nenhuma tela, nenhum estado, nenhuma mensagem.
O que sustentou isso foi manter os modelos intactos — eles são o formato que a
tela conhece, e é por isso que MG-2 gravou os campos em inglês.

Um dono só para o offline

A story avisava que o cache muda de dono. O Firestore tem persistência local, mas
responde dado antigo sem dizer que é antigo; o CacheLocal grava a idade e a
mostra. Persistência do Firestore desligada: ter os dois seria ter duas respostas
para a mesma pergunta, uma sem rótulo.

O relógio virou desvio, não instante: a hora do servidor vem de uma callable uma
vez por sessão, descontando meia viagem de rede. Falhar não derruba nada — sem
medida a contagem cai no aparelho, e quem recusa continua sendo a rule.

Quatro coisas que só o device mostrou

Os 188 casos do servidor e os 244 de widget passavam com tudo isto quebrado:
cleartext HTTP bloqueado pelo Android desde a API 28 (liberado só na variante de
debug, e só para o emulador — abrir isso em release trocaria um problema de
desenvolvimento por um furo de verdade); o SDK Android validando o formato da
chave de API antes de qualquer chamada, com 40 caracteres em vez de 39; quem se
cadastrava como "Bruno" virando "bruno1786151672" no bolão, porque o gatilho de
perfil dispara antes de o displayName existir; e a tela do extrato quebrando em
vez de mostrar erro quando a falha não era ApiError.

E dois defeitos do meu próprio teste em device: ele herdava a sessão da execução
anterior (o Firebase persiste o login), e o caso do apito se auto-pulava quando
não sobrava jogo começado — caso que pula sozinho não protege nada.

A cota da fonte aparece ao rodar em série: repetir o arquivo no mesmo minuto faz
a criação de bolão falhar, e isso é o adaptador recusando antes de gastar as 10
requisições por minuto, que é o comportamento de PP-10.

Registrado para MG-8: o Firestore não tem offset, então a paginação do ranking lê
do começo e descarta — aceitável com dezenas de participantes, e trocar o
contrato da tela por cursor é outra story.

Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
parent fa413194
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment