refactos de methodes sur les usagers partageant un numéro de téléphone
Created by: adipasquale
refactos préliminaires extraits de https://github.com/betagouv/rdv-solidarites.fr/pull/1284
phone_number_formatted
Aujourd'hui User.new(phone_number: "0101010101").phone_number_formatted == nil
ce qui est perturbant et prone a erreurs.
J'override le getter phone_number_formatted
des records avec le HasPhoneNumberConcern pour s'assurer que la valeur qu'on renvoie est la version formattée de phone_number
Par conséquent je retire l'instanciation initiale de phone_number_formatted
dans la factory des User, qui etait une rustine pour ce sujet coté specs
J'ai aussi du modifier quelques specs comme spec/service_models/transactional_sms/base_concern_spec.rb
et spec/models/concerns/user/notificable_concern_spec.rb
pour setter phone_number plutot que phone_number_formatted
suppression de User#other_users_with_same_phone_number
Cette méthode était utilisée à un seul endroit :dans le admin/users#show pour afficher un avertissement : "d'autres usagers avec le meme num existent dans l'orga".
Je la remplace par un appel à DuplicateUserFinderService
User est notre classe AR la plus longue, tout ce qu'on arrive à en extraire est à prendre :)
en passant je répare le lien "voir la liste" qui utilisait un ancien nom de champ
DuplicateUserFinderService modifs
pour supporter le cas d'usage qui était couvert par other_users_with_same_phone_number
:
- ajout d'une option
only
qui permet de filtrer les checks à effectuer - ajout d'une option
organisation
qui permet de filtrer les users appartenant a une orga - gestion du cas ou on appelle ce service avec un User persisted (exclusion de lui meme)
autres refactos :
- suppression de l'option
skip_warnings
qui n'était pas utilisée - mise en commun du tri sur le nb de rdvs (pour toujours renvoyer le user doublon avec le plus d'"usage")
- utilisation d'attr_readers plutôt que les instance attributes directement dans les méthodes privées
- harmonisation du check pour l'email si pas présent sur le user target