refactor(settings): Serializer Unit Test Suite re-written to Pytest for model AppSettings

ref: #942 #939
This commit is contained in:
2025-08-05 12:50:30 +09:30
parent 653e29ffe5
commit 8da10a147b
4 changed files with 132 additions and 0 deletions

View File

@ -17,3 +17,9 @@ def model_kwargs(request, kwargs_appsettings):
if hasattr(request.cls, 'kwargs_create_item'):
del request.cls.kwargs_create_item
@pytest.fixture( scope = 'class')
def model_serializer(serializer_appsettings):
yield serializer_appsettings

View File

@ -0,0 +1,110 @@
import pytest
from django.db import models
from rest_framework.exceptions import ValidationError
from api.tests.unit.test_unit_serializer import (
SerializerTestCases
)
from centurion.tests.abstract.mock_view import MockView
# from appsettings_management.serializers.app_settings import (
# appse,
# )
@pytest.mark.model_appsettings
class ProjectSerializerTestCases(
SerializerTestCases
):
@pytest.fixture( scope = 'function' )
def created_model(self, django_db_blocker, model, model_kwargs):
with django_db_blocker.unblock():
kwargs_many_to_many = {}
kwargs = {}
for key, value in model_kwargs.items():
field = model._meta.get_field(key)
if isinstance(field, models.ManyToManyField):
kwargs_many_to_many.update({
key: value
})
else:
kwargs.update({
key: value
})
item = model.objects.create( **kwargs )
for key, value in kwargs_many_to_many.items():
field = getattr(item, key)
for entry in value:
field.add(entry)
yield item
item.delete()
# def test_serializer_validation_no_name(self,
# kwargs_api_create, model, model_serializer, request_user
# ):
# """Serializer Validation Check
# Ensure that if creating and no name is provided a validation error occurs
# """
# mock_view = MockView(
# user = request_user,
# model = model,
# action = 'create',
# )
# kwargs = kwargs_api_create.copy()
# del kwargs['name']
# with pytest.raises(ValidationError) as err:
# serializer = model_serializer['model'](
# context = {
# 'request': mock_view.request,
# 'view': mock_view,
# },
# data = kwargs,
# )
# serializer.is_valid(raise_exception = True)
# assert err.value.get_codes()['name'][0] == 'required'
class ProjectSerializerInheritedCases(
ProjectSerializerTestCases
):
pass
@pytest.mark.module_settings
class ProjectSerializerPyTest(
ProjectSerializerTestCases
):
pass

View File

@ -16,6 +16,7 @@ from .mixin_centurion import (
from .model_appsettings import (
kwargs_appsettings,
model_appsettings,
serializer_appsettings,
)
from .model_assetbase import (

View File

@ -2,6 +2,11 @@ import datetime
import pytest
from settings.models.app_settings import AppSettings
from settings.serializers.app_settings import (
AppSettingsBaseSerializer,
AppSettingsModelSerializer,
AppSettingsViewSerializer
)
@pytest.fixture( scope = 'class')
def model_appsettings():
@ -31,3 +36,13 @@ def kwargs_appsettings( django_db_blocker, model_user ):
user.delete()
@pytest.fixture( scope = 'class')
def serializer_appsettings():
yield {
'base': AppSettingsBaseSerializer,
'model': AppSettingsModelSerializer,
'view': AppSettingsViewSerializer
}