# Plano de testes — `CC-7` Lista de participantes

**Story:** `docs/stories/CC-7-lista-de-participantes.md`

A lista é a ferramenta de cobrança do admin ("falta você entrar"). Dois riscos:
mostrar a alguém dado que não é dele (quem só abriu o convite é dado de quem
**não** entrou), e a lista mentir sobre quem está no bolão — por paginação ou por
quem saiu.

| ID | Título | Tipo | Prioridade |
| -- | ------ | ---- | ---------- |
| CC-7-01 | Lista mostra quem entrou, marcando o criador | caminho feliz | alta |
| CC-7-02 | Quem saiu aparece marcado, não desaparece | regra de negócio | alta |
| CC-7-03 | Quem não participa não vê a lista | autorização | alta |
| CC-7-04 | Participante comum vê a lista reduzida | autorização | alta |
| CC-7-05 | Bolão só com o criador diz o que fazer | UI | média |
| CC-7-06 | Carregando e erro com retry | UI | média |
| CC-7-07 | Lista paginada devolve o total | caminho feliz | alta |
| CC-7-08 | Paginação recusa faixa inválida | borda | média |
| CC-7-09 | Papel aparece na lista (admin × comum) | caminho feliz | alta |
| CC-7-10 | ~~"Só abriu o convite" separado de quem entrou~~ | cancelado | — |

---

### CC-7-01 — Lista mostra quem entrou, marcando o criador
**Tipo:** caminho feliz · **Prioridade:** alta
**Resultado esperado:** todos os participantes ativos, com o criador
identificado — é ele que não pode ser rebaixado nem removido, e a UI precisa
saber disso para não oferecer a ação.

### CC-7-02 — Quem saiu aparece marcado, não desaparece
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** linha presente com `active: false`. O histórico de jogos
apurados dele continua existindo; sumir da lista faria o admin achar que a pessoa
nunca esteve lá.

### CC-7-03 — Quem não participa não vê a lista
**Tipo:** autorização · **Prioridade:** alta
**Resultado esperado:** 403. A lista revela quem está num bolão privado.

### CC-7-04 — Participante comum vê a lista reduzida
**Tipo:** autorização · **Prioridade:** alta
**Resultado esperado:** vê quem entrou; **não** vê dado de quem só abriu o
convite, nem as ações de admin.

### CC-7-05 — Bolão só com o criador diz o que fazer
**Tipo:** UI · **Prioridade:** média
**Resultado esperado:** mensagem útil ("convide pelo link") em vez de lista de
uma linha. É o estado exato do bolão recém-criado — o momento em que o admin
precisa de instrução.

### CC-7-06 — Carregando e erro com retry
**Tipo:** UI · **Prioridade:** média
**Resultado esperado:** indicador durante a carga; motivo + "tentar de novo" na
falha. Lista vazia por erro de rede seria lida como "todo mundo saiu".

### CC-7-07 — Lista paginada devolve o total
**Tipo:** caminho feliz · **Prioridade:** alta
**Resultado esperado:** `total` sempre com a contagem completa, independente de
`limit`/`offset` — sem ele o app não sabe se acabou.

### CC-7-08 — Paginação recusa faixa inválida
**Tipo:** borda · **Prioridade:** média
**Passos:** `limit=0`, `limit=-1`, `offset=-1`, `limit=100000`.
**Resultado esperado:** pedido inválido é **recusado** (400) e `limit` grande é
limitado a um teto. Devolver lista vazia para `limit=0` é pior que recusar: a
tela mostra "ninguém no bolão" e o admin acredita.

### CC-7-09 — Papel aparece na lista
**Tipo:** caminho feliz · **Prioridade:** alta
**Resultado esperado:** `role` por linha, para a UI marcar admin e decidir quais
ações oferecer.

### CC-7-10 — ~~"Só abriu o convite" separado de quem entrou~~
**Tipo:** cancelado em 07/08
O dono decidiu **não rastrear** quem abre o convite sem entrar: guardaria dado de
quem não está no bolão, em troca de uma informação de cobrança que o admin já
resolve pelo grupo. `BE-1` e `FE-1` foram canceladas, então não há caso a
executar — nem bloqueado, nem reprovado: **cancelado**.
