refactor(itam): Update Test Suite for OperatingSystemVersion model

ref: #823 #819
This commit is contained in:
2025-06-12 11:21:26 +09:30
parent e60081fea6
commit 0b1d658db9
8 changed files with 114 additions and 36 deletions

View File

@ -67,7 +67,7 @@ class OperatingSystemModelSerializer(
'item_id': item.pk
}
),
'version': reverse("v2:_api_v2_operating_system_version-list", request=self._context['view'].request, kwargs={'operating_system_id': item.pk}),
'version': reverse("v2:_api_operatingsystemversion-list", request=self._context['view'].request, kwargs={'operating_system_id': item.pk}),
})
return get_url

View File

@ -27,7 +27,7 @@ class ViewSetBase:
app_namespace = 'v2'
url_name = '_api_v2_operating_system_version'
url_name = '_api_operatingsystemversion'
change_data = {'name': '22'}

View File

@ -0,0 +1,19 @@
import pytest
@pytest.fixture( scope = 'class')
def model(model_operatingsystemversion):
yield model_operatingsystemversion
@pytest.fixture( scope = 'class', autouse = True)
def model_kwargs(request, kwargs_operatingsystemversion):
request.cls.kwargs_create_item = kwargs_operatingsystemversion.copy()
yield kwargs_operatingsystemversion.copy()
if hasattr(request.cls, 'kwargs_create_item'):
del request.cls.kwargs_create_item

View File

@ -1,6 +1,5 @@
import django
import pytest
import unittest
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
@ -77,7 +76,7 @@ class OperatingSystemVersionAPI(
)
client = Client()
url = reverse('v2:_api_v2_operating_system_version-detail', kwargs=self.url_view_kwargs)
url = reverse('v2:_api_operatingsystemversion-detail', kwargs=self.url_view_kwargs)
client.force_login(self.view_user)

View File

@ -1,41 +1,101 @@
from django.test import TestCase
import pytest
from access.models.tenant import Tenant as Organization
from django.db import models
from centurion.tests.unit.test_unit_models import (
TenancyObjectInheritedCases
from core.tests.unit.centurion_abstract.test_unit_centurion_abstract_model import (
CenturionAbstractModelInheritedCases
)
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
class OperatingSystemVersionModel(
TenancyObjectInheritedCases,
TestCase,
@pytest.mark.model_operatingsystemversion
class OperatingSystemVersionModelTestCases(
CenturionAbstractModelInheritedCases
):
model = OperatingSystemVersion
@property
def parameterized_class_attributes(self):
@classmethod
def setUpTestData(self):
""" Setup Test
"""
self.organization = Organization.objects.create(name='test_org')
self.parent_item = OperatingSystem.objects.create(
organization = self.organization,
name = 'os_name'
)
self.kwargs_item_create = {
'name': "12",
'operating_system': self.parent_item,
return {
'model_tag': {
'value': 'operating_system_version'
},
}
super().setUpTestData()
@property
def parameterized_model_fields(self):
return {
'operating_system': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.ForeignKey,
'null': False,
'unique': False,
},
'name': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.CharField,
'length': 50,
'null': False,
'unique': False,
},
'modified': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.DateTimeField,
'null': False,
'unique': False,
}
}
class OperatingSystemVersionModelInheritedCases(
OperatingSystemVersionModelTestCases,
):
pass
@pytest.mark.module_itam
class OperatingSystemVersionModelPyTest(
OperatingSystemVersionModelTestCases,
):
pass
def test_method_get_url_kwargs(self, mocker, model_instance, model_kwargs):
"""Test Class Method
Ensure method `get_url_kwargs` returns the correct value.
"""
url = model_instance.get_url_kwargs()
assert model_instance.get_url_kwargs() == {
'operating_system_id': model_kwargs['operating_system'].id,
'pk': model_instance.id
}
# def test_model_tag_defined(self, model):
# """ Model Tag
# Ensure that the model has a tag defined.
# """
# pytest.xfail( reason = 'model does not require' )
# def test_method_value_not_default___str__(self, model, model_instance ):
# """Test Method
# Ensure method `__str__` does not return the default value.
# """
# pytest.xfail( reason = 'model does not require' )

View File

@ -16,7 +16,7 @@ class DeviceSoftwareViewsetList(
viewset = ViewSet
route_name = 'v2:_api_v2_operating_system_version'
route_name = 'v2:_api_operatingsystemversion'
@classmethod

View File

@ -69,7 +69,7 @@ router.register(
router.register(
prefix = 'operating_system/(?P<operating_system_id>[0-9]+)/version',
viewset = operating_system_version_v2.ViewSet,
basename = '_api_v2_operating_system_version'
basename = '_api_operatingsystemversion'
)
router.register(
prefix = 'software', viewset = software_v2.ViewSet,

View File

@ -91,7 +91,7 @@ A Model link is a reference to an item within the database. Supported model link
| manufacturer| `$manufacturer-<id>` |
| modelnotes| `$-<id>` |
| operatingsystem| `$operating_system-<id>` |
| operatingsystemversion| `$-<id>` |
| operatingsystemversion| `$operating_system_version-<id>` |
| organization| `$organization-<id>` |
| port| `$-<id>` |
| project| `$-<id>` |