From ade35d0e2de94bb6d9b3c0dc60d695eeb04d74ac Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 28 May 2025 13:18:16 +0930 Subject: [PATCH] test(core): Unit Test Centurion Model method `get_url_kwargs` ref: #775 #759 #767 --- app/core/models/audit.py | 4 +- app/core/models/centurion.py | 14 ++++++ .../test_unit_centurion_abstract_model.py | 44 ++++++------------- .../test_unit_centurion_audit_meta_model.py | 14 +----- .../test_unit_centurion_sub_abstract_model.py | 36 ++++++++++++++- 5 files changed, 64 insertions(+), 48 deletions(-) diff --git a/app/core/models/audit.py b/app/core/models/audit.py index 3a81a92a..bf2df7e8 100644 --- a/app/core/models/audit.py +++ b/app/core/models/audit.py @@ -267,10 +267,8 @@ class AuditMetaModel( kwargs = {} kwargs.update({ - 'app_label': self._meta.app_label, - 'model_name': str(self._meta.model_name).replace('audithistory', ''), - 'model_id': self.model.id, **super().get_url_kwargs(), + 'model_name': str(self._meta.model_name).replace('audithistory', ''), }) return kwargs diff --git a/app/core/models/centurion.py b/app/core/models/centurion.py index 64fed089..1cdcbf43 100644 --- a/app/core/models/centurion.py +++ b/app/core/models/centurion.py @@ -303,3 +303,17 @@ class CenturionSubModel( class Meta: abstract = True + + + def get_url_kwargs(self): + + kwargs = {} + + kwargs.update({ + **super().get_url_kwargs(), + 'app_label': self._meta.app_label, + 'model_name': str(self._meta.model_name), + 'model_id': self.model.id, + }) + + return kwargs diff --git a/app/core/tests/unit/centurion_abstract/test_unit_centurion_abstract_model.py b/app/core/tests/unit/centurion_abstract/test_unit_centurion_abstract_model.py index 7f924f24..e4e2a29f 100644 --- a/app/core/tests/unit/centurion_abstract/test_unit_centurion_abstract_model.py +++ b/app/core/tests/unit/centurion_abstract/test_unit_centurion_abstract_model.py @@ -191,6 +191,20 @@ class CenturionAbstractModelTestCases( + def test_method_get_url_kwargs(self, mocker, model_instance, settings): + """Test Class Method + + Ensure method `get_url_kwargs` returns the correct value. + """ + + model_instance.id = 1 + + url = model_instance.get_url_kwargs() + + assert model_instance.get_url_kwargs() == { 'pk': model_instance.id } + + + def test_method_validate_field_not_none_raises_exception(self, model): """ Test Class Method @@ -828,36 +842,6 @@ class CenturionAbstractModelPyTest( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def test_method_save_audit_enabled_sets__after_create_model(self, mocker, model_instance): """Test Class Method diff --git a/app/core/tests/unit/centurion_audit_meta/test_unit_centurion_audit_meta_model.py b/app/core/tests/unit/centurion_audit_meta/test_unit_centurion_audit_meta_model.py index 00a9b3b9..4348443f 100644 --- a/app/core/tests/unit/centurion_audit_meta/test_unit_centurion_audit_meta_model.py +++ b/app/core/tests/unit/centurion_audit_meta/test_unit_centurion_audit_meta_model.py @@ -139,18 +139,13 @@ class MetaAbstractModelPyTest( mocker.patch('core.models.audit.CenturionAudit.get_model_history', return_value = False) - # super_clean_fields = mocker.patch('core.models.audit.CenturionAudit.clean_fields', return_value = None) - - with pytest.raises( ValidationError ) as e: model_instance.clean_fields() assert e.value.code == 'did_not_process_history' - # super_clean_fields.assert_called_with( - # exclude = None - # ) + def test_method_clean_fields_exception_no_model(self, mocker, model_instance): @@ -162,10 +157,6 @@ class MetaAbstractModelPyTest( model_instance.model = None - # mocker.patch('core.models.audit.CenturionAudit.get_model_history', return_value = False) - - # super_clean_fields = mocker.patch('core.models.audit.CenturionAudit.clean_fields', return_value = None) - with pytest.raises( ValidationError ) as e: @@ -173,6 +164,3 @@ class MetaAbstractModelPyTest( assert e.value.code == 'no_model_supplied' - # super_clean_fields.assert_called_with( - # exclude = None - # ) diff --git a/app/core/tests/unit/centurion_sub_abstract/test_unit_centurion_sub_abstract_model.py b/app/core/tests/unit/centurion_sub_abstract/test_unit_centurion_sub_abstract_model.py index 2a49982d..9ec43736 100644 --- a/app/core/tests/unit/centurion_sub_abstract/test_unit_centurion_sub_abstract_model.py +++ b/app/core/tests/unit/centurion_sub_abstract/test_unit_centurion_sub_abstract_model.py @@ -39,9 +39,41 @@ class CenturionSubAbstractModelTestCases( url = model_instance.get_url( relative = True) - del model_instance.model + reverse.assert_called_with( + url_basename, + None, + { + 'app_label': model_instance._meta.app_label, + 'model_name': model_instance._meta.model_name, + 'model_id': model_instance.model.id, + 'pk': model_instance.id, + }, + None, + None + ) + + + + def test_method_get_url_kwargs(self, mocker, model_instance, settings): + """Test Class Method + + Ensure method `get_url_kwargs` returns the correct value. + """ + + model_instance.id = 1 + model_instance.model = model_instance + + url = model_instance.get_url_kwargs() + + assert model_instance.get_url_kwargs() == { + 'app_label': model_instance._meta.app_label, + 'model_name': model_instance._meta.model_name, + 'model_id': model_instance.model.id, + 'pk': model_instance.id, + } + + - reverse.assert_called_with( url_basename, None, { 'pk': model_instance.id }, None, None )