# Plano de testes — `CC-8` Promover e remover segundo administrador

**Story:** `docs/stories/CC-8-segundo-administrador.md`

Por que esta story concentra risco: administração é o poder de mexer na
pontuação de todos (`PR-10`) e de encerrar o bolão. Aqui as duas falhas são
simétricas e ambas caras — dar poder a quem não deveria, e deixar o bolão sem
ninguém que possa administrá-lo.

| ID | Título | Tipo | Prioridade |
| -- | ------ | ---- | ---------- |
| CC-8-01 | Admin promove participante | caminho feliz | alta |
| CC-8-02 | Admin rebaixa o outro admin | caminho feliz | alta |
| CC-8-03 | Participante comum não promove nem rebaixa | autorização | alta |
| CC-8-04 | O criador não pode ser rebaixado | autorização | alta |
| CC-8-05 | Bolão não fica sem administrador | borda | alta |
| CC-8-06 | Promover quem já é admin é no-op | borda | média |
| CC-8-07 | Promover quem saiu do bolão | borda | alta |
| CC-8-08 | Promover alguém de outro bolão | autorização | alta |
| CC-8-09 | Admin novo não vê palpite oculto | segurança | alta |
| CC-8-10 | Admin rebaixado perde os poderes na hora | segurança | alta |
| CC-8-11 | Rebaixar pede confirmação dizendo que ele fica no bolão | UI | alta |
| CC-8-12 | Recusa do servidor aparece com o motivo | UI | alta |

---

### CC-8-01 — Admin promove participante
**Tipo:** caminho feliz · **Prioridade:** alta
**Resultado esperado:** o papel vira `ADMIN` e as ações de admin passam a
funcionar para ele. Mais de um admin é permitido **e desejado**: bolão com um
único admin que viaja fica travado.

### CC-8-02 — Admin rebaixa o outro admin
**Tipo:** caminho feliz · **Prioridade:** alta
**Resultado esperado:** volta a `MEMBER`, **continua participando e palpitando**.
Rebaixar não é remover.

### CC-8-03 — Participante comum não promove nem rebaixa
**Tipo:** autorização · **Prioridade:** alta
**Resultado esperado:** 403 nas duas ações. Se isso falhar, qualquer um se
promove e ganha o poder de corrigir placar.

### CC-8-04 — O criador não pode ser rebaixado
**Tipo:** autorização · **Prioridade:** alta
**Resultado esperado:** 409 com motivo próprio. É a decisão de 03/08: admin
permanente. Sem isso, dois admins poderiam se rebaixar mutuamente até o bolão
ficar órfão.

### CC-8-05 — Bolão não fica sem administrador
**Tipo:** borda · **Prioridade:** alta
**Pré-condições:** um único admin **que não é o criador** (cenário possível se o
criador for rebaixado... que não pode; então: o criador saiu? também não pode).
**Resultado esperado:** a regra tem que ser verdadeira por construção — como o
criador é admin permanente e não sai nem é removido, **sempre** existe pelo menos
um admin. O caso verifica que a tentativa de deixar o bolão sem admin é recusada
pelo caminho que resta: rebaixar o último admin não-criador quando ele é o único.

### CC-8-06 — Promover quem já é admin é no-op
**Tipo:** borda · **Prioridade:** média
**Resultado esperado:** responde sem erro e sem alterar nada (`changed: false`).
Toque duplo no menu não pode virar erro nem registro duplicado.

### CC-8-07 — Promover quem saiu do bolão
**Tipo:** borda · **Prioridade:** alta
**Pré-condições:** participante com `leftAt` preenchido.
**Resultado esperado:** recusado. Promover quem saiu daria poder de admin a
alguém que não está mais no bolão — e a saída é definitiva.

### CC-8-08 — Promover alguém de outro bolão
**Tipo:** autorização · **Prioridade:** alta
**Pré-condições:** `userId` que existe mas não participa **deste** bolão.
**Resultado esperado:** recusado, sem criar vínculo. Aceitar aqui seria uma via
de entrada que ignora o convite.

### CC-8-09 — Admin novo não vê palpite oculto
**Tipo:** segurança · **Prioridade:** alta
**Resultado esperado:** o sigilo de `PP-7` não tem exceção de papel — promover
alguém no meio da rodada não pode revelar o palpite de ninguém.

### CC-8-10 — Admin rebaixado perde os poderes na hora
**Tipo:** segurança · **Prioridade:** alta
**Passos:**
1. Promover Bruno, ele corrige um placar com sucesso.
2. Rebaixar Bruno.
3. Bruno tenta corrigir de novo.
**Resultado esperado:** 403 na segunda tentativa. Permissão em cache — ou lida do
token — deixaria o rebaixamento sem efeito até o próximo login.

### CC-8-11 — Rebaixar pede confirmação dizendo que ele fica no bolão
**Tipo:** UI · **Prioridade:** alta
**Resultado esperado:** o diálogo diz que a pessoa **continua participando e
palpitando**. Sem isso o admin evita a ação achando que vai expulsar alguém — e
a confirmação existe justamente porque a ação mexe no poder de outra pessoa.

### CC-8-12 — Recusa do servidor aparece com o motivo
**Tipo:** UI · **Prioridade:** alta
**Resultado esperado:** "quem criou o bolão é administrador permanente" / "o
bolão ficaria sem administrador" na tela, com a lista intacta. "Erro" genérico
faria o admin tentar de novo para sempre.
