Skip to content

refactos de methodes sur les usagers partageant un numéro de téléphone

Vincent Agnano requested to merge refactor/warnings-phone into master

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

Merge request reports