mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-11 17:27:54 +02:00
L'annuaire, les pages métier et la fiche adhérent montrent désormais la personne à joindre chez l'adhérent — nom, prénom, ligne directe — mais uniquement à un visiteur connecté. Trois colonnes sur `members` (`contact_first_name`, `contact_last_name`, `contact_phone`), saisies dans les deux formulaires de fiche via le composant partagé `MemberContactFields`. Le filtrage ne repose pas sur du CSS ni sur un rendu conditionnel tardif : aucune requête publique ne lit ces colonnes. Seules `getMemberContacts()` et `getMemberContact()` les rapatrient, et les pages ne les appellent qu'après un `getSession()` positif. Un visiteur anonyme ne reçoit donc rien — ni dans le HTML, ni dans le JSON-LD, ni dans les props du composant client de l'annuaire. `tests/security.test.ts` verrouille cette séparation. `src/lib/member-contact.ts` reste pur (composition du nom, lien `tel:`) et est couvert par `tests/member-contact.test.ts`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012TAK3c4jAUqxVMzy746wWQ
36 lines
1.5 KiB
TypeScript
36 lines
1.5 KiB
TypeScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import { contactName, memberContact, telHref } from "../src/lib/member-contact";
|
|
|
|
test("le référent joint prénom et nom", () => {
|
|
assert.equal(contactName({ contactFirstName: "Marie", contactLastName: "Durand" }), "Marie Durand");
|
|
assert.equal(contactName({ contactFirstName: " Marie ", contactLastName: " Durand " }), "Marie Durand");
|
|
assert.equal(contactName({ contactFirstName: "Marie" }), "Marie");
|
|
assert.equal(contactName({ contactLastName: "Durand" }), "Durand");
|
|
assert.equal(contactName({}), null);
|
|
assert.equal(contactName({ contactFirstName: " ", contactLastName: null }), null);
|
|
});
|
|
|
|
test("un référent sans nom ni téléphone n'existe pas", () => {
|
|
assert.equal(memberContact({}), null);
|
|
assert.equal(memberContact({ contactFirstName: " ", contactPhone: "" }), null);
|
|
assert.deepEqual(memberContact({ contactPhone: "03 83 24 10 10" }), {
|
|
name: null,
|
|
phone: "03 83 24 10 10",
|
|
});
|
|
assert.deepEqual(memberContact({ contactLastName: "Durand", contactPhone: null }), {
|
|
name: "Durand",
|
|
phone: null,
|
|
});
|
|
});
|
|
|
|
test("le lien tel: ne garde que les chiffres et l'indicatif", () => {
|
|
assert.equal(telHref("03 83 24 10 10"), "tel:0383241010");
|
|
assert.equal(telHref("+33 3 83 24 10 10"), "tel:+33383241010");
|
|
assert.equal(telHref("03.83.24.10.10"), "tel:0383241010");
|
|
assert.equal(telHref("sur rendez-vous"), null);
|
|
assert.equal(telHref(null), null);
|
|
assert.equal(telHref(" "), null);
|
|
});
|