# Plano de testes — `PP-8` Lembrete de prazo apenas para quem não palpitou

**Story:** `docs/stories/PP-8-lembrete-de-prazo.md`

É a necessidade que o casual classificou como a mais valiosa do app inteiro — *"se
o app fizer só isso, já ganhou"*. E é a story mais restringida por custo: **não há
push nesta versão** (FCM depende de credencial, APNs de US$ 99/ano), então o que
existe hoje é o lembrete **gravado como aviso** e a contagem na tela.

O risco central não é falhar em avisar: é **avisar demais**. Quem recebe lembrete
de jogo em que já palpitou desliga a notificação — e aí perde as que importam.

| ID | Título | Tipo | Prioridade |
| -- | ------ | ---- | ---------- |
| PP-8-01 | Lembra só quem não palpitou | regra de negócio | alta |
| PP-8-02 | Quem palpitou não recebe nada | regra de negócio | alta |
| PP-8-03 | Palpite entre agendar e disparar cancela o lembrete | regra de negócio | alta |
| PP-8-04 | Não lembra duas vezes o mesmo jogo | borda | alta |
| PP-8-05 | Jogo fora da janela não gera lembrete | borda | alta |
| PP-8-06 | Bolão encerrado não gera lembrete | borda | alta |
| PP-8-07 | Quem saiu ou foi removido não recebe | regra de negócio | alta |
| PP-8-08 | Sem push, o aviso fica legível no app | regra de negócio | alta |
| PP-8-09 | A contagem na tela é o fallback | UI | alta |
| PP-8-10 | Permissão de notificação negada | bloqueado | alta |
| PP-8-11 | Toque no lembrete abre o bolão certo, app fechado | bloqueado | alta |
| PP-8-12 | iOS sem lembrete | limitação conhecida | — |

---

### PP-8-01 — Lembra só quem não palpitou
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** um lembrete por participante-jogo pendente, dentro da
janela.

### PP-8-02 — Quem palpitou não recebe nada
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** zero lembretes. É a regra que impede o casual de desligar
as notificações — e desligar significa voltar a perder rodada.

### PP-8-03 — Palpite entre agendar e disparar cancela o lembrete
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** quem palpita depois do agendamento deixa de ser candidato.
Lembrete que chega **depois** de a pessoa palpitar é pior que nenhum: ela conclui
que o palpite não foi salvo.

### PP-8-04 — Não lembra duas vezes o mesmo jogo
**Tipo:** borda · **Prioridade:** alta
**Resultado esperado:** o job rodando várias vezes na janela não repete o aviso.
O job roda a cada 10 minutos e a janela é de ~2 h.

### PP-8-05 — Jogo fora da janela não gera lembrete
**Tipo:** borda · **Prioridade:** alta
**Resultado esperado:** jogo distante não gera nada — avisar dois dias antes
ensina a ignorar o aviso.

### PP-8-06 — Bolão encerrado não gera lembrete
**Tipo:** borda · **Prioridade:** alta
**Resultado esperado:** nada. Cobrar palpite em bolão encerrado é cobrar ação
impossível.

### PP-8-07 — Quem saiu ou foi removido não recebe
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** zero lembretes pelos **dois** caminhos de encerramento de
vínculo (saída voluntária e remoção pelo admin).

### PP-8-08 — Sem push, o aviso fica legível no app
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** entrega de push zero, aviso gravado e visível na tela de
avisos. É o que mantém a story funcionando sem FCM.

### PP-8-09 — A contagem na tela é o fallback
**Tipo:** UI · **Prioridade:** alta
**Resultado esperado:** a tela de palpite mostra quanto falta por jogo, pelo
relógio do servidor (`PP-3`). É o único aviso que existe no iOS.

### PP-8-10 — Permissão de notificação negada
**Tipo:** bloqueado · **Prioridade:** alta
**Resultado esperado:** **não executável.** `FE-1` está aberta porque não há push
para pedir permissão. Quando o FCM existir: negar a permissão não pode travar o
app nem esconder a contagem na tela.

### PP-8-11 — Toque no lembrete abre o bolão certo, app fechado
**Tipo:** bloqueado · **Prioridade:** alta
**Resultado esperado:** **não executável.** Depende de `OPS-1` (FCM). O deep link
em si **já funciona e já foi verificado em device** (`CC-5 FE-1`): falta ligar o
payload do push à rota. Quando o FCM existir, este caso é a verificação de ponta a
ponta com o app fechado.

### PP-8-12 — iOS sem lembrete
**Tipo:** limitação conhecida · **Prioridade:** —
**Resultado esperado:** **nada a testar.** O APNs exige chave do Apple Developer
Program (US$ 99/ano) e a decisão de 03/08 foi não investir. No iOS vale só o
fallback de `PP-8-09`, que exige a pessoa abrir o app. Não é defeito: é a
restrição de custo, e está registrada como risco 🔴 na story.
