R-012 — Busca pública devolve uma filiação por terapeuta
TLDR:
Membership.searchdevolve no máximo uma filiação por terapeuta — a ativa de maiorvalid_until.
Given / When / Then
Dado uma terapeuta com filiação vigente e renovação já aprovada, ambas ativas
Quando a busca pública (GET /api/v2/therapist/search/:term) é chamada
Então ela aparece em um único resultado, representada pela filiação de maior valid_until; a paginação conta terapeutas, não filiações
Restrições
- O critério é
valid_until DESC, nãocreated_at DESC: “o registro mais novo” deixa de representar a pessoa quando existe renovação antecipada. - O colapso (
DISTINCT ON (user_id)) vai numa subquery de ids dentro dewhere(id: ...)— é o que mantém ototal_countdo Kaminari contando terapeutas. - O scope
activenão mudou: quem aparece na busca continua sendo o mesmo conjunto de antes. - O card (
active_current) sai do mesmo scope, então passa a exibir a vigência da filiação escolhida.
Código
app/models/membership.rb — scope :search
Teste vinculado
test/controllers/api/v2/therapist_controller_test.rb — “should return one result per therapist…”, “should represent the therapist by the membership with the furthest validity”, “should keep one result for each distinct therapist…”