From dc56ced765ba7f933f0090de939ed37ebc331a02 Mon Sep 17 00:00:00 2001 From: Jon Date: Sat, 7 Jun 2025 15:43:19 +0930 Subject: [PATCH] test(config_management): Completed ConfigGroupSoftware Model Tests ref: #804 #794 --- .../unit/config_groups_software/conftest.py | 19 ++++ .../test_unit_config_groups_software_model.py | 88 ++++++++++++------- app/tests/fixtures/__init__.py | 5 ++ .../fixtures/model_configgroupsoftware.py | 59 +++++++++++++ 4 files changed, 139 insertions(+), 32 deletions(-) create mode 100644 app/config_management/tests/unit/config_groups_software/conftest.py create mode 100644 app/tests/fixtures/model_configgroupsoftware.py diff --git a/app/config_management/tests/unit/config_groups_software/conftest.py b/app/config_management/tests/unit/config_groups_software/conftest.py new file mode 100644 index 00000000..bf7ccd6e --- /dev/null +++ b/app/config_management/tests/unit/config_groups_software/conftest.py @@ -0,0 +1,19 @@ +import pytest + + + +@pytest.fixture( scope = 'class') +def model(model_configgroupsoftware): + + yield model_configgroupsoftware + + +@pytest.fixture( scope = 'class', autouse = True) +def model_kwargs(request, kwargs_configgroupsoftware): + + request.cls.kwargs_create_item = kwargs_configgroupsoftware.copy() + + yield kwargs_configgroupsoftware.copy() + + if hasattr(request.cls, 'kwargs_create_item'): + del request.cls.kwargs_create_item diff --git a/app/config_management/tests/unit/config_groups_software/test_unit_config_groups_software_model.py b/app/config_management/tests/unit/config_groups_software/test_unit_config_groups_software_model.py index c345067f..dea6fc0f 100644 --- a/app/config_management/tests/unit/config_groups_software/test_unit_config_groups_software_model.py +++ b/app/config_management/tests/unit/config_groups_software/test_unit_config_groups_software_model.py @@ -9,56 +9,56 @@ from core.tests.unit.centurion_abstract.test_unit_centurion_abstract_model impor -class Old: +# class Old: - model = ConfigGroupSoftware +# model = ConfigGroupSoftware - @classmethod - def setUpTestData(self): - """ Setup Test +# @classmethod +# def setUpTestData(self): +# """ Setup Test - """ +# """ - self.organization = Organization.objects.create(name='test_org') +# self.organization = Organization.objects.create(name='test_org') - self.parent_item = ConfigGroups.objects.create( - organization = self.organization, - name = 'group_one' - ) +# self.parent_item = ConfigGroups.objects.create( +# organization = self.organization, +# name = 'group_one' +# ) - self.software_item = Software.objects.create( - organization = self.organization, - name = 'softwareone', - ) +# self.software_item = Software.objects.create( +# organization = self.organization, +# name = 'softwareone', +# ) - self.kwargs_item_create = { - 'software': self.software_item, - 'config_group': self.parent_item, - 'action': DeviceSoftware.Actions.INSTALL - } +# self.kwargs_item_create = { +# 'software': self.software_item, +# 'config_group': self.parent_item, +# 'action': DeviceSoftware.Actions.INSTALL +# } - super().setUpTestData() +# super().setUpTestData() - def test_model_has_property_parent_object(self): - """ Check if model contains 'parent_object' +# def test_model_has_property_parent_object(self): +# """ Check if model contains 'parent_object' - This is a required property for all models that have a parent - """ +# This is a required property for all models that have a parent +# """ - assert hasattr(self.model, 'parent_object') +# assert hasattr(self.model, 'parent_object') - def test_model_property_parent_object_returns_object(self): - """ Check if model contains 'parent_object' +# def test_model_property_parent_object_returns_object(self): +# """ Check if model contains 'parent_object' - This is a required property for all models that have a parent - """ +# This is a required property for all models that have a parent +# """ - assert self.item.parent_object == self.parent_item +# assert self.item.parent_object == self.parent_item @@ -71,7 +71,12 @@ class ConfigGroupSoftwareModelTestCases( @property def parameterized_class_attributes(self): - return {} + return { + 'model_tag': { + 'type': models.NOT_PROVIDED, + 'value': models.NOT_PROVIDED, + }, + } parameterized_model_fields = { @@ -113,6 +118,25 @@ class ConfigGroupSoftwareModelTestCases( } + @pytest.mark.xfail( reason = 'not required for this model' ) + def test_method_value_not_default___str__(self): + pass + + @pytest.mark.xfail( reason = 'not required for this model' ) + def test_model_tag_defined(self): + pass + + def test_method_get_url_kwargs(self, mocker, model_instance, model_kwargs, settings): + """Test Class Method + + Ensure method `get_url_kwargs` returns the correct value. + """ + + url = model_instance.get_url_kwargs() + + assert model_instance.get_url_kwargs() == { 'config_group_id': model_kwargs['config_group'].id, 'pk': model_instance.id } + + class ConfigGroupSoftwareModelInheritedCases( ConfigGroupSoftwareModelTestCases, diff --git a/app/tests/fixtures/__init__.py b/app/tests/fixtures/__init__.py index 9c679f8e..b96e19ce 100644 --- a/app/tests/fixtures/__init__.py +++ b/app/tests/fixtures/__init__.py @@ -49,6 +49,11 @@ from .model_configgrouphost import ( model_configgrouphost, ) +from .model_configgroupsoftware import ( + kwargs_configgroupsoftware, + model_configgroupsoftware, +) + from .model_contenttype import ( model_contenttype, ) diff --git a/app/tests/fixtures/model_configgroupsoftware.py b/app/tests/fixtures/model_configgroupsoftware.py new file mode 100644 index 00000000..682d1d49 --- /dev/null +++ b/app/tests/fixtures/model_configgroupsoftware.py @@ -0,0 +1,59 @@ +import datetime +import pytest + +from config_management.models.groups import ConfigGroupSoftware + +from itam.models.device import DeviceSoftware + + +@pytest.fixture( scope = 'class') +def model_configgroupsoftware(): + + yield ConfigGroupSoftware + + +@pytest.fixture( scope = 'class') +def kwargs_configgroupsoftware(django_db_blocker, + kwargs_software, model_software, + kwargs_centurionmodel, model_configgroup, kwargs_configgroup, +): + + + with django_db_blocker.unblock(): + + centurion_kwargs = kwargs_centurionmodel.copy() + + random_str = str(datetime.datetime.now(tz=datetime.timezone.utc)) + + software_kwargs = kwargs_software.copy() + software_kwargs.update({ + 'name': 'cgs' + str(random_str), + 'organization': centurion_kwargs['organization'] + }) + + software = model_software.objects.create( **software_kwargs ) + + + group_kwargs = kwargs_configgroup.copy() + group_kwargs.update({ + 'name': 'cgg' + random_str, + 'organization': centurion_kwargs['organization'] + }) + + group = model_configgroup.objects.create( **group_kwargs ) + + kwargs = { + **centurion_kwargs, + 'software': software, + 'config_group': group, + 'action': DeviceSoftware.Actions.INSTALL, + 'modified': '2024-06-07T23:00:01Z', + } + + yield kwargs.copy() + + with django_db_blocker.unblock(): + + software.delete() + + group.delete()