Skip to content

Commit

Permalink
Fix ADS decree generation on feb 29th
Browse files Browse the repository at this point in the history
  • Loading branch information
brmzkw committed Feb 29, 2024
1 parent 45d47c9 commit 0da3d65
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 6 deletions.
20 changes: 17 additions & 3 deletions mesads/app/test_views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from datetime import datetime, timedelta
import re

from django.contrib import messages
from django.contrib.contenttypes.models import ContentType
Expand All @@ -8,6 +9,8 @@
from django.test import RequestFactory
from django.utils import timezone

from freezegun import freeze_time

from mesads.fradm.models import Commune, EPCI, Prefecture

from .models import (
Expand Down Expand Up @@ -1527,6 +1530,15 @@ def test_generate_old_ads(self):
self._step_2()
self._step_3()

@freeze_time("2024-02-29")
def test_generate_on_feb_29th(self):
"""Make sure we don't have an issue on date calculation when the current
date is on February 29th on a leap year."""
self._step_0(is_old_ads=True)
self._step_1()
self._step_2()
self._step_3()

def test_generate_new_ads(self):
self._step_0(is_old_ads=False)
self._step_1()
Expand All @@ -1540,9 +1552,11 @@ def test_third_step_decree_number_error(self):
resp = self._step_2(
overrides={"2-decree_number": "abcdef"}, check_going_to_next_step=False
)
self.assertEqual(
resp.context["form"].errors["decree_number"],
["Le champ doit être sous la forme XXXX/2024"],
self.assertIsNotNone(
re.match(
r"Le champ doit être sous la forme XXXX/[0-9]{4}",
resp.context["form"].errors["decree_number"][0],
)
)

def test_back_navigation(self):
Expand Down
10 changes: 8 additions & 2 deletions mesads/app/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1116,8 +1116,14 @@ def get_form_initial(self, step):
}
)
elif step == "2":
now = datetime.now()
ads_user = ads.adsuser_set.first()

now = datetime.now()
try:
today_in_5_years = now.replace(year=now.year + 5)
except ValueError: # 29th February
today_in_5_years = now + timedelta(days=365 * 5)

ret.update(
{
"decree_creation_date": now.strftime("%Y-%m-%d"),
Expand All @@ -1127,7 +1133,7 @@ def get_form_initial(self, step):
# are more, user can edit the .docx generated manually.
"tenant_ads_user": ads_user.name if ads_user else "",
# New ADS have a validity of 5 years
"ads_end_date": now.replace(year=now.year + 5).strftime("%Y-%m-%d"),
"ads_end_date": today_in_5_years.strftime("%Y-%m-%d"),
"ads_number": ads.number,
"immatriculation_plate": ads.immatriculation_plate,
}
Expand Down
17 changes: 16 additions & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ pytest-django = "^4.5.2"
pytest-cov = "^4.0.0"
black = "^23.3.0"
pytest-testmon = "^2.1.0"
freezegun = "^1.4.0"


[tool.coverage.run]
Expand Down

0 comments on commit 0da3d65

Please sign in to comment.