Projet

Général

Profil

Development #66330

Garde partagée, avoir des bornes temporelles

Ajouté par Valentin Deniaud il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
16 juin 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Au moment du changement de règle il faut pouvoir :
  • Poser une date de fin sur l'agenda en cours
  • Créer un deuxième agenda avec une date de début qui serait la même que la date précédente

Fichiers

Révisions associées

Révision bf9463e6 (diff)
Ajouté par Valentin Deniaud il y a presque 2 ans

agendas: add date start field to shared custody agenda (#66330)

Révision ebe1884e (diff)
Ajouté par Valentin Deniaud il y a presque 2 ans

api: use custody agendas date start (#66330)

Historique

#1

Mis à jour par Valentin Deniaud il y a presque 2 ans

Bon ça ne s'est pas passé tout à fait comme je l'imaginais, notamment en prenant en compte le cas :
  • Agenda de garde pour les enfants A et B
  • Nouveau mode de garde pour A
  • Il faut prendre en compte l'ancien agenda pour B et en créer un nouveau pour A

Il y aurait pu y avoir de grands plans pour rétropédaler et revenir à un agenda de garde par enfant, mais en fait ça donne un patch assez simple de ne se baser que sur la date de début et ne pas avoir de date de fin.

Ça nécessite d'avoir confiance dans la partie wcs pour bien présenter les agendas de garde en cours de transition (car une fois dans chrono rien ne dit que l'agenda ne s'applique plus à partir de telle date (et ce serait compliqué à dire parce que ça ne pourrait concerner que certains enfants, cf l'exemple plus haut)). Comme cette partie wcs n'existe pas encore beaucoup, difficile d'imaginer les problèmes concrets.

Techniquement, pas fan de mes tests, le code est bien écrit pour utiliser partout filter_for_guardian et ça ne sert pas à grand chose de tester les quatre API qui en font usage (ça reviendrait à écrire 20 tests à chaque modif de Agenda.get_open_events). Je serais pour ne garder que test_datetimes_multiple_agendas_shared_custody_date_start et dégager les autres.

Et je devance la relecture, tickets à ouvrir :
  • utiliser les date_min/date_max de l'API pour ne pas récupérer tous les agendas de garde
  • avoir une api pour changer la date de début (en l'état, une erreur de saisie est irrécupérable)
#2

Mis à jour par Lauréline Guérin il y a presque 2 ans

Techniquement, pas fan de mes tests, le code est bien écrit pour utiliser partout filter_for_guardian et ça ne sert pas à grand chose de tester les quatre API qui en font usage (ça reviendrait à écrire 20 tests à chaque modif de Agenda.get_open_events). Je serais pour ne garder que test_datetimes_multiple_agendas_shared_custody_date_start et dégager les autres.

Perso je préfère pouvoir m'appuyer sur la lecture des tests pour vérifier que le code se comporte comme on l'attend :)
Est-ce qu'il serait envisageable de unit-tester filter_for_guardian, et ensuite dans chaque endpoint qui l'utilise, écrire un test qui mocke la méthode en lui faisant renvoyer un truc improbable, et vérifier que le retour du endpoint est bien raccord avec ce truc improbable ?

#3

Mis à jour par Valentin Deniaud il y a presque 2 ans

Lauréline Guerin a écrit :

Est-ce qu'il serait envisageable de unit-tester filter_for_guardian, et ensuite dans chaque endpoint qui l'utilise, écrire un test qui mocke la méthode en lui faisant renvoyer un truc improbable, et vérifier que le retour du endpoint est bien raccord avec ce truc improbable ?

Pourquoi pas mais dans le cas présent je ne suis pas sûr de bien saisir l'idée :
  • Quatre API utilisent filter_for_guardian, il existe déjà 4 tests
  • On ajoute une fonctionnalité à filter_for_guardian
  • On veut avoir confiance que les 4 API bénéficient de la fonctionnalité et on se retrouve à écrire 4 nouveaux tests

Comment utiliser un mock pourrait donner cette confiance ?

#4

Mis à jour par Lauréline Guérin il y a presque 2 ans

Tu disais:

Je serais pour ne garder que test_datetimes_multiple_agendas_shared_custody_date_start et dégager les autres.

Je te propose une alternative :) Dégager tous les tests qui en fait vérifient ce qui se passe dans filter_for_guardian pour les 4 endpoints, les remplacer par un test unitaire (ou plus) de cette méthode + des mocks dans les endpoints pour vérifier que c'est bien appelé.

Mais ce n'est qu'une suggestion :)

#5

Mis à jour par Valentin Deniaud il y a presque 2 ans

Je ne suis pas convaincu, on verra pour la prochaine fois où je râle mais si ça te va restons sur les tests classiques écrits ici ?

#6

Mis à jour par Lauréline Guérin il y a presque 2 ans

  • Statut changé de Solution proposée à Solution validée

Oui c'est ok, je pensais que tu râlais que tu n'aimais pas les tests que tu avais écrits et que tu voulais les supprimer.

#7

Mis à jour par Valentin Deniaud il y a presque 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 479efa769115b16ce4566107bda87cf35a23c6fd
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Wed Jun 29 17:15:03 2022 +0200

    api: use custody agendas date start (#66330)

commit 742c1b15a5e4d212d18aaf1bcbebc3e08db0216e
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Wed Jun 29 17:13:46 2022 +0200

    agendas: add date start field to shared custody agenda (#66330)
#8

Mis à jour par Transition automatique il y a presque 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#9

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF