From dd8ee06ca4f423d166e4ae6dfb479a61896d91a8 Mon Sep 17 00:00:00 2001
From: Victor Seva <vseva@sipwise.com>
Date: Tue, 19 Dec 2023 14:06:25 +0100
Subject: [PATCH] MT#56231 gerrit: fix default today format

task expects YYYY-MM-DD format

> (venv_prod) root@repoapi2:/usr/share/repoapi# ./manage.py gerrit cleanup --weeks=4
> [...]
>   File "/usr/share/repoapi/gerrit/tasks.py", line 35, in cleanup
>     today = date.fromisoformat(today)
> ValueError: Invalid isoformat string: '2023-12-19T12:39:58.364626'

Change-Id: If635b36d6fb579a7823522aef6e41f2d53eb1823
---
 gerrit/management/commands/gerrit.py |  3 +--
 gerrit/test_commands.py              | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/gerrit/management/commands/gerrit.py b/gerrit/management/commands/gerrit.py
index b751844..a47204d 100644
--- a/gerrit/management/commands/gerrit.py
+++ b/gerrit/management/commands/gerrit.py
@@ -13,7 +13,6 @@
 # You should have received a copy of the GNU General Public License along
 # with this program.  If not, see <http://www.gnu.org/licenses/>.
 from datetime import date
-from datetime import datetime
 
 from django.core.management.base import BaseCommand
 
@@ -35,7 +34,7 @@ class Command(BaseCommand):
         parser.add_argument(
             "--today",
             type=date.fromisoformat,
-            default=datetime.today(),
+            default=date.today(),
             help="set today value in isoformat 'YYYY-MM-DD'",
         )
 
diff --git a/gerrit/test_commands.py b/gerrit/test_commands.py
index 1271823..9aab2c6 100644
--- a/gerrit/test_commands.py
+++ b/gerrit/test_commands.py
@@ -18,6 +18,7 @@ from unittest.mock import call
 from unittest.mock import patch
 
 from django.core.management import call_command
+from django.core.management.base import CommandError
 from django.test import TestCase
 
 from repoapi.models.gri import GerritRepoInfo
@@ -86,3 +87,19 @@ class refreshTest(TestCase):
         ]
         self.assertListEqual(jrp.mock_calls, calls)
         self.assertEqual(qs.count(), 1)
+
+    @patch("gerrit.management.commands.gerrit.tasks")
+    def test_today_format(self, tasks):
+        from datetime import datetime
+
+        val = datetime.today().strftime("%Y-%m-%d")
+        call_command("gerrit", "cleanup")
+        tasks.cleanup.assert_called_with(6, False, val)
+
+    @patch("gerrit.management.commands.gerrit.tasks")
+    def test_today_format_ko(self, tasks):
+        with self.assertRaisesRegexp(
+            CommandError, "invalid fromisoformat value"
+        ):
+            call_command("gerrit", "cleanup", "--today=2023-12-19T12:39:58")
+        tasks.cleanup.assert_not_called()