(BSR)[PRO] fix: unit tests on master #5945
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bug intéressant :
Cause
Le test set une date au 25 du mois avec une heure UTC précise (22h59) et expect que le call backend est fait à la même date+heure toISOString
Hors en interne le upsert stocks serialize les stocks en mettant l'heure à la fin du jour dans le département en question (23h59 avec l'heure de Paris dans le cas du test) et reconvertit en UTC
Là on est dans un cas où le test case a été construit pour correspondre au code, mais du coup ça ne marche que quand il n'y a qu'une heure de décalage entre UTC et la timezone de Paris.
Le changement d'heure a eu lieu au 26 mars, à partir duquel le temps UTC est décalé de 2h du temps de Paris
Jusqu'au 31 mars tout allait bien vu qu'on set la date au 25 du mois et que le changement d'heure est le 26
Au 1er avril, le 25 avril a 2h de décalage avec UTC et ça casse
Ce test case ayant été codé il y a 4 mois il n'a jamais été en heure d'été donc il n'échoue que maintenant
Résolution :
La façon correcte d'écrire le test serait de mocker la date avec Jest, par exemple avec
jest.useFakeTimers().setSystemTime(new Date('2020-02-03'))
Cependant, il y a une issue dans Jest 27 qui timeout le test quand on utilise cette fonction :
nock/nock#2200
jestjs/jest#10221
Il ne m'est pas possible de mettre à jour vers Jest 29 car le package Jest est inclus dans Create React App (dépendance react-scripts) et l'installer à la mano demande bcp de reconfiguration (notamment babel)
=> pour l'instant je fais l'assert avec la fonction utilisée dans l'implem