# language: pt
Funcionalidade: Atribuição de capitão
Cenário: Definir o capitão
Dado um squad sem capitão
Quando o super-admin atribui um membro como capitão
Então o membro fica com role captain
E um evento captain_assigned é gravado
Cenário: Apenas um capitão ativo
Dado um squad que já tem capitão
Quando outro membro é atribuído como capitão
Então o capitão anterior é rebaixado
E continua existindo no máximo um capitão ativo
Parent
#342
O que construir
Atribuição de capitão com a invariante de capitão único garantida no banco.
UNIQUE (squad_id) WHERE role = 'captain'.AssignCaptain(super-admin): define/troca o capitão; ao trocar, rebaixa o anterior; grava eventocaptain_assigned(edemotedno anterior).Squad::captain()derivado do pivot (role = captain).Critérios de aceite
AssignCaptaindefine o capitão e gravacaptain_assignedSquad::captain()deriva do pivotBDD
Bloqueada por