From d9cf9669f0833bf29e62648c4301249fd6bc96df Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Thu, 17 Aug 2023 10:12:05 +0200 Subject: [PATCH] Unit test analysis * adds unit test for creating report * fixes bug where new (>2018) eco accounts have not been fetched correctly from the db * adds enhancements in the frontend * improves test data setup --- analysis/settings.py | 6 +- .../templates/analysis/reports/detail.html | 2 +- .../compensation/card_compensation.html | 1 + .../eco_account/card_eco_account.html | 1 + .../intervention/card_intervention.html | 1 + ..._interventions.html => card_old_data.html} | 0 analysis/tests.py | 3 - analysis/tests/__init__.py | 7 ++ analysis/tests/unit/__init__.py | 7 ++ analysis/tests/unit/test_forms.py | 47 +++++++++ analysis/tests/unit/test_report.py | 94 ++++++++++++++++++ analysis/utils/report.py | 5 +- konova/tests/test_views.py | 42 +++++--- locale/de/LC_MESSAGES/django.mo | Bin 47373 -> 47450 bytes locale/de/LC_MESSAGES/django.po | 27 +++-- 15 files changed, 211 insertions(+), 32 deletions(-) rename analysis/templates/analysis/reports/includes/old_data/{card_old_interventions.html => card_old_data.html} (100%) delete mode 100644 analysis/tests.py create mode 100644 analysis/tests/__init__.py create mode 100644 analysis/tests/unit/__init__.py create mode 100644 analysis/tests/unit/test_forms.py create mode 100644 analysis/tests/unit/test_report.py diff --git a/analysis/settings.py b/analysis/settings.py index 7eb022d..de5ef14 100644 --- a/analysis/settings.py +++ b/analysis/settings.py @@ -9,4 +9,8 @@ Created on: 19.10.21 # Defines the date of the legal publishing of the LKompVzVo from django.utils import timezone -LKOMPVZVO_PUBLISH_DATE = timezone.make_aware(timezone.datetime.fromisoformat("2018-06-16")).date() +LKOMPVZVO_PUBLISH_DATE = timezone.make_aware( + timezone.datetime.fromisoformat( + "2018-06-16" + ) +).date() diff --git a/analysis/templates/analysis/reports/detail.html b/analysis/templates/analysis/reports/detail.html index 31ca65c..f553e57 100644 --- a/analysis/templates/analysis/reports/detail.html +++ b/analysis/templates/analysis/reports/detail.html @@ -31,6 +31,6 @@ {% include 'analysis/reports/includes/intervention/card_intervention.html' %} {% include 'analysis/reports/includes/compensation/card_compensation.html' %} {% include 'analysis/reports/includes/eco_account/card_eco_account.html' %} - {% include 'analysis/reports/includes/old_data/card_old_interventions.html' %} + {% include 'analysis/reports/includes/old_data/card_old_data.html' %} {% endblock %} \ No newline at end of file diff --git a/analysis/templates/analysis/reports/includes/compensation/card_compensation.html b/analysis/templates/analysis/reports/includes/compensation/card_compensation.html index 8fe2eec..9a77c88 100644 --- a/analysis/templates/analysis/reports/includes/compensation/card_compensation.html +++ b/analysis/templates/analysis/reports/includes/compensation/card_compensation.html @@ -10,6 +10,7 @@ {% fa5_icon 'leaf' %} {% trans 'Compensations' %} + {% trans 'Binding date after' %} 16.06.2018 diff --git a/analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html b/analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html index 850ac60..f256224 100644 --- a/analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html +++ b/analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html @@ -10,6 +10,7 @@ {% fa5_icon 'tree' %} {% trans 'Eco-Accounts' %} + {% trans 'Binding date after' %} 16.06.2018 diff --git a/analysis/templates/analysis/reports/includes/intervention/card_intervention.html b/analysis/templates/analysis/reports/includes/intervention/card_intervention.html index 6a9993a..65897c6 100644 --- a/analysis/templates/analysis/reports/includes/intervention/card_intervention.html +++ b/analysis/templates/analysis/reports/includes/intervention/card_intervention.html @@ -9,6 +9,7 @@ {% fa5_icon 'pencil-ruler' %} {% trans 'Interventions' %} + {% trans 'Binding date after' %} 16.06.2018 diff --git a/analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html b/analysis/templates/analysis/reports/includes/old_data/card_old_data.html similarity index 100% rename from analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html rename to analysis/templates/analysis/reports/includes/old_data/card_old_data.html diff --git a/analysis/tests.py b/analysis/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/analysis/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/analysis/tests/__init__.py b/analysis/tests/__init__.py new file mode 100644 index 0000000..a34406f --- /dev/null +++ b/analysis/tests/__init__.py @@ -0,0 +1,7 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 15.08.23 + +""" diff --git a/analysis/tests/unit/__init__.py b/analysis/tests/unit/__init__.py new file mode 100644 index 0000000..a34406f --- /dev/null +++ b/analysis/tests/unit/__init__.py @@ -0,0 +1,7 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 15.08.23 + +""" diff --git a/analysis/tests/unit/test_forms.py b/analysis/tests/unit/test_forms.py new file mode 100644 index 0000000..0035631 --- /dev/null +++ b/analysis/tests/unit/test_forms.py @@ -0,0 +1,47 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 15.08.23 + +""" +from datetime import timedelta + +from django.urls import reverse +from django.utils.timezone import now +from django.utils.translation import gettext_lazy as _ + +from analysis.forms import TimespanReportForm +from konova.tests.test_views import BaseTestCase + + +class TimeSpanReportFormTestCase(BaseTestCase): + def setUp(self) -> None: + super().setUp() + eiv = self.create_dummy_intervention() + + def test_init(self): + form = TimespanReportForm() + self.assertEqual(form.form_title, str(_("Generate report"))) + self.assertEqual(form.form_caption, str(_("Select a timespan and the desired conservation office") )) + self.assertEqual(form.action_url, reverse("analysis:reports")) + self.assertFalse(form.show_cancel_btn) + self.assertEqual(form.action_btn_label, str(_("Continue"))) + + def test_save(self): + date_from = now().date() - timedelta(days=365) + date_to = now().date() + office = self.get_conservation_office_code() + data = { + "date_from": date_from, + "date_to": date_to, + "conservation_office": office, + } + form = TimespanReportForm(data) + self.assertTrue(form.is_valid(), msg=f"{form.errors}") + + detail_report_url = form.save() + self.assertEqual( + detail_report_url, + reverse("analysis:report-detail", args=(office.id,)) + f"?df={date_from}&dt={date_to}" + ) diff --git a/analysis/tests/unit/test_report.py b/analysis/tests/unit/test_report.py new file mode 100644 index 0000000..ee7518c --- /dev/null +++ b/analysis/tests/unit/test_report.py @@ -0,0 +1,94 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 17.08.23 + +""" +from datetime import timedelta + +from django.utils.timezone import now + +from analysis.settings import LKOMPVZVO_PUBLISH_DATE +from analysis.utils.report import TimespanReport +from konova.sub_settings.django_settings import DEFAULT_DATE_FORMAT +from konova.tests.test_views import BaseTestCase + + +class TimeSpanReportTestCase(BaseTestCase): + def setUp(self) -> None: + super().setUp() + + today = now().date() + old_date = LKOMPVZVO_PUBLISH_DATE - timedelta(days=1) + + self.conservation_office = self.get_conservation_office_code() + self.eiv_old = self.create_dummy_intervention() + self.kom_old = self.create_dummy_compensation(interv=self.eiv_old) + self.assertNotEqual(self.compensation.intervention, self.kom_old.intervention) + self.eiv = self.compensation.intervention + self.oek_old = self.create_dummy_eco_account() + + self.eiv_old.responsible.conservation_office = self.conservation_office + self.eiv_old.legal.binding_date = old_date + self.eiv_old.legal.registration_date = old_date + + self.eiv.responsible.conservation_office = self.conservation_office + self.eiv.legal.binding_date = today + self.eiv.legal.registration_date = today + + self.eco_account.responsible.conservation_office = self.conservation_office + self.eco_account.legal.registration_date = today + self.eco_account.legal.binding_date = today + + self.oek_old.responsible.conservation_office = self.conservation_office + self.oek_old.legal.registration_date = old_date + self.oek_old.legal.binding_date = old_date + + self.eiv.legal.save() + self.eiv.responsible.save() + + self.eiv_old.legal.save() + self.eiv_old.responsible.save() + + self.eco_account.legal.save() + self.eco_account.responsible.save() + + self.oek_old.legal.save() + self.oek_old.responsible.save() + + def test_init(self): + date_from = now().date() - timedelta(days=365) + date_to = now().date() + report = TimespanReport(self.conservation_office.id, date_from, date_to) + + self.assertEqual(report.office_id, self.conservation_office.id) + self.assertEqual(report.date_from, date_from) + self.assertEqual(report.date_to, date_to) + + self.assertIsNotNone(report.intervention_report) + self.assertIsNotNone(report.compensation_report) + self.assertIsNotNone(report.eco_account_report) + self.assertIsNotNone(report.old_data_report) + + self.assertEqual(report.excel_map["date_from"], date_from.strftime(DEFAULT_DATE_FORMAT)) + self.assertEqual(report.excel_map["date_to"], date_to.strftime(DEFAULT_DATE_FORMAT)) + + self.assertEqual(report.old_data_report.queryset_intervention_count, 1) + self.assertEqual(report.old_data_report.queryset_intervention_recorded_count, 0) + self.assertEqual(report.old_data_report.queryset_comps_count, 1) + self.assertEqual(report.old_data_report.queryset_acc_count, 1) + self.assertEqual(report.old_data_report.queryset_acc_recorded_count, 0) + + self.assertEqual(report.intervention_report.queryset_count, 1) + self.assertEqual(report.intervention_report.queryset_checked_count, 0) + self.assertEqual(report.intervention_report.queryset_recorded_count, 0) + + self.assertEqual(report.compensation_report.queryset_count, 1) + self.assertEqual(report.compensation_report.queryset_checked_count, 0) + self.assertEqual(report.compensation_report.queryset_recorded_count, 0) + + self.assertEqual(report.eco_account_report.queryset_count, 1) + self.assertEqual(report.eco_account_report.queryset_recorded_count, 0) + self.assertEqual(report.eco_account_report.queryset_deductions_count, 1) + self.assertEqual(report.eco_account_report.queryset_deductions_recorded_count, 0) diff --git a/analysis/utils/report.py b/analysis/utils/report.py index 9bbd7d3..4e118fa 100644 --- a/analysis/utils/report.py +++ b/analysis/utils/report.py @@ -413,6 +413,7 @@ class TimespanReport: def __init__(self, id: str, date_from: str, date_to: str): # First fetch all eco account for this office self.queryset = EcoAccount.objects.filter( + legal__registration_date__gt=LKOMPVZVO_PUBLISH_DATE, responsible__conservation_office__id=id, deleted=None, created__timestamp__date__gte=date_from, @@ -516,8 +517,8 @@ class TimespanReport: legal__registration_date__lte=LKOMPVZVO_PUBLISH_DATE, responsible__conservation_office__id=id, deleted=None, - created__timestamp__gte=date_from, - created__timestamp__lte=date_to, + created__timestamp__date__gte=date_from, + created__timestamp__date__lte=date_to, ) self.queryset_acc_recorded = self.queryset_acc.filter( recorded__isnull=False, diff --git a/konova/tests/test_views.py b/konova/tests/test_views.py index 437f114..608336f 100644 --- a/konova/tests/test_views.py +++ b/konova/tests/test_views.py @@ -65,7 +65,7 @@ class BaseTestCase(TestCase): self.compensation = self.create_dummy_compensation() self.eco_account = self.create_dummy_eco_account() self.ema = self.create_dummy_ema() - self.deduction = self.create_dummy_deduction() + self.deduction = self.create_dummy_deduction(acc=self.eco_account, interv=self.intervention) self.create_dummy_states() self.create_dummy_action() self.codes = self.create_dummy_codes() @@ -157,14 +157,17 @@ class BaseTestCase(TestCase): intervention.generate_access_token(make_unique=True) return intervention - def create_dummy_compensation(self): + def create_dummy_compensation(self, interv: Intervention=None): """ Creates a compensation which can be used for tests Returns: """ - if self.intervention is None: - self.intervention = self.create_dummy_intervention() + if not interv: + if self.intervention is None: + interv = self.create_dummy_intervention() + else: + interv = self.intervention # Create dummy data # Create log entry action = UserActionLogEntry.get_created_action(self.superuser) @@ -173,7 +176,7 @@ class BaseTestCase(TestCase): compensation = Compensation.objects.create( identifier="TEST", title="Test_title", - intervention=self.intervention, + intervention=interv, created=action, geometry=geometry, comment="Test", @@ -196,9 +199,11 @@ class BaseTestCase(TestCase): handler = self.handler responsible_data.handler = handler responsible_data.save() + + identifier = EcoAccount().generate_new_identifier() # Finally create main object, holding the other objects eco_account = EcoAccount.objects.create( - identifier="TEST", + identifier=identifier, title="Test_title", deductable_surface=500, legal=lega_data, @@ -234,10 +239,15 @@ class BaseTestCase(TestCase): ) return ema - def create_dummy_deduction(self): + def create_dummy_deduction(self, acc: EcoAccount = None, interv: Intervention = None): + if not acc: + acc = self.create_dummy_eco_account() + if not interv: + interv = self.create_dummy_intervention() + return EcoAccountDeduction.objects.create( - account=self.create_dummy_eco_account(), - intervention=self.create_dummy_intervention(), + account=acc, + intervention=interv, surface=100, ) @@ -270,12 +280,14 @@ class BaseTestCase(TestCase): Returns: """ - codes = KonovaCode.objects.bulk_create([ - KonovaCode(id=1, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test1"), - KonovaCode(id=2, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test2"), - KonovaCode(id=3, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test3"), - KonovaCode(id=4, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test4"), - ]) + codes = KonovaCode.objects.all() + if codes.count() == 0: + codes = KonovaCode.objects.bulk_create([ + KonovaCode(id=1, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test1"), + KonovaCode(id=2, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test2"), + KonovaCode(id=3, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test3"), + KonovaCode(id=4, is_selectable=True, is_archived=False, is_leaf=True, long_name="Test4"), + ]) return codes def create_dummy_team(self): diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 93455db5c5099dcbb30abfce3b358354e4bc2346..a2539a32229cf9b9b47dfb17e8d7f3256ced972e 100644 GIT binary patch delta 12689 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 P-t9Vc-QIe{mh%4xEJZ8) delta 12662 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index dc2c627..b917005 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -43,7 +43,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-10 10:16+0200\n" +"POT-Creation-Date: 2023-08-17 10:09+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -96,15 +96,16 @@ msgstr "Verantwortliche Stelle" msgid "Click for selection" msgstr "Auswählen..." -#: analysis/forms.py:70 +#: analysis/forms.py:70 analysis/tests/unit/test_forms.py:25 msgid "Generate report" msgstr "Bericht generieren" -#: analysis/forms.py:71 +#: analysis/forms.py:71 analysis/tests/unit/test_forms.py:26 msgid "Select a timespan and the desired conservation office" msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle" -#: analysis/forms.py:74 konova/forms/modals/base_form.py:30 +#: analysis/forms.py:74 analysis/tests/unit/test_forms.py:29 +#: konova/forms/modals/base_form.py:30 msgid "Continue" msgstr "Weiter" @@ -231,6 +232,12 @@ msgstr "Andere Zulassungsbehörden" msgid "Compensations" msgstr "Kompensationen" +#: analysis/templates/analysis/reports/includes/compensation/card_compensation.html:13 +#: analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html:13 +#: analysis/templates/analysis/reports/includes/intervention/card_intervention.html:12 +msgid "Binding date after" +msgstr "Bestandskraft- bzw. Rechtskraftdatum nach" + #: analysis/templates/analysis/reports/includes/eco_account/card_eco_account.html:11 msgid "Eco-Accounts" msgstr "Ökokonten" @@ -345,11 +352,11 @@ msgstr "Eingriff" msgid "Eco-account" msgstr "Ökokonto" -#: analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html:11 +#: analysis/templates/analysis/reports/includes/old_data/card_old_data.html:11 msgid "Old interventions" msgstr "Altfälle" -#: analysis/templates/analysis/reports/includes/old_data/card_old_interventions.html:13 +#: analysis/templates/analysis/reports/includes/old_data/card_old_data.html:13 msgid "Binding date before" msgstr "Bestandskraft- bzw. Rechtskraftdatum vor" @@ -2291,7 +2298,7 @@ msgstr "" "Dieses Datum ist unrealistisch. Geben Sie bitte das korrekte Datum ein " "(>1950)." -#: konova/views/home.py:74 templates/navbars/navbar.html:16 +#: konova/views/home.py:75 templates/navbars/navbar.html:16 msgid "Home" msgstr "Home" @@ -2299,13 +2306,13 @@ msgstr "Home" msgid "Log" msgstr "Log" -#: konova/views/map_proxy.py:71 +#: konova/views/map_proxy.py:70 msgid "" "The external service is currently unavailable.
Please try again in a few " "moments..." msgstr "" -"Der externe Dienst ist zur Zeit nicht erreichbar.
Versuchen Sie es in ein paar " -"Sekunden nochmal." +"Der externe Dienst ist zur Zeit nicht erreichbar.
Versuchen Sie es in ein " +"paar Sekunden nochmal." #: konova/views/record.py:30 msgid "{} unrecorded"