diff --git a/counter/models.py b/counter/models.py index 72058ef6..23ceaaa5 100644 --- a/counter/models.py +++ b/counter/models.py @@ -1402,5 +1402,9 @@ class InvoiceCall(models.Model): verbose_name = _("Invoice call") verbose_name_plural = _("Invoice calls") + def save(self, *args, **kwargs): + self.month = self._meta.get_field("month").to_python(self.month) + super().save(*args, **kwargs) + def __str__(self): return f"invoice call of {self.month} made by {self.club}" diff --git a/counter/tests/test_invoices.py b/counter/tests/test_invoices.py new file mode 100644 index 00000000..1aebca5f --- /dev/null +++ b/counter/tests/test_invoices.py @@ -0,0 +1,33 @@ +from datetime import date + +import pytest +from model_bakery import baker + +from club.models import Club +from counter.models import InvoiceCall + + +@pytest.mark.django_db +def test_invoice_date_with_date(): + club = baker.make(Club) + invoice = InvoiceCall.objects.create(club=club, month=date(2025, 10, 20)) + + assert not invoice.is_validated + assert str(invoice) == f"invoice call of {invoice.month} made by {club}" + assert invoice.month == date(2025, 10, 1) + + +@pytest.mark.django_db +def test_invoice_date_with_string(): + club = baker.make(Club) + invoice = InvoiceCall.objects.create(club=club, month="2025-10") + + assert invoice.month == date(2025, 10, 1) + + +@pytest.mark.django_db +def test_invoice_call_invalid_month_string(): + club = baker.make(Club) + + with pytest.raises(ValueError): + InvoiceCall.objects.create(club=club, month="2025-13")