test(accounting): Unit Model checks for AssetBase Model

ref: #741 #737
This commit is contained in:
2025-05-05 02:43:09 +09:30
parent efde919689
commit 370b8cd40f
2 changed files with 178 additions and 0 deletions

View File

@ -0,0 +1,14 @@
import pytest
from accounting.models.asset_base import AssetBase
@pytest.fixture( scope = 'class')
def model(request):
request.cls.model = AssetBase
yield request.cls.model
del request.cls.model

View File

@ -0,0 +1,164 @@
import pytest
from django.db import models
from accounting.models.asset_base import AssetBase
from app.tests.unit.test_unit_models import (
PyTestTenancyObjectInheritedCases,
)
class AssetBaseModelTestCases(
PyTestTenancyObjectInheritedCases,
):
base_model = AssetBase
kwargs_create_item: dict = {
'asset_number': 'a12s432',
'serial_number': 'abbcccdddd',
}
sub_model_type = 'asset'
"""Sub Model Type
sub-models must have this attribute defined in `ModelName.Meta.sub_model_type`
"""
parameterized_fields: dict = {
"is_global": {
'field_type': None,
'field_parameter_default_exists': None,
'field_parameter_default_value': None,
'field_parameter_verbose_name_type': None
},
"asset_number": {
'field_type': models.fields.CharField,
'field_parameter_default_exists': False,
'field_parameter_verbose_name_type': str,
},
"serial_number": {
'field_type': models.fields.CharField,
'field_parameter_default_exists': False,
'field_parameter_verbose_name_type': str,
}
}
@pytest.fixture( scope = 'class')
def setup_model(self,
request,
model,
django_db_blocker,
organization_one,
organization_two
):
with django_db_blocker.unblock():
request.cls.organization = organization_one
request.cls.different_organization = organization_two
kwargs_create_item = {}
for base in reversed(request.cls.__mro__):
if hasattr(base, 'kwargs_create_item'):
if base.kwargs_create_item is None:
continue
kwargs_create_item.update(**base.kwargs_create_item)
if len(kwargs_create_item) > 0:
request.cls.kwargs_create_item = kwargs_create_item
if 'organization' not in request.cls.kwargs_create_item:
request.cls.kwargs_create_item.update({
'organization': request.cls.organization
})
yield
with django_db_blocker.unblock():
del request.cls.kwargs_create_item
@pytest.fixture( scope = 'class', autouse = True)
def class_setup(self,
setup_model,
create_model,
):
pass
def test_class_inherits_assetbase(self):
""" Class inheritence
TenancyObject must inherit SaveHistory
"""
assert issubclass(self.model, AssetBase)
def test_attribute_type_app_namespace(self):
"""Attribute Type
app_namespace is of type str
"""
assert type(self.model.app_namespace) is str
def test_attribute_value_app_namespace(self):
"""Attribute Type
app_namespace has been set, override this test case with the value
of attribute `app_namespace`
"""
assert self.model.app_namespace == 'accounting'
class AssetBaseModelInheritedCases(
AssetBaseModelTestCases,
):
"""Sub-Ticket Test Cases
Test Cases for Ticket models that inherit from model AssetBase
"""
kwargs_create_item: dict = {}
model = None
sub_model_type = None
"""Ticket Sub Model Type
Ticket sub-models must have this attribute defined in `ModelNam.Meta.sub_model_type`
"""
class AssetBaseModelPyTest(
AssetBaseModelTestCases,
):
pass