refactor(settings): Serializer Unit Test Suite re-written to Pytest for model UserSettings
ref: #942 #941
This commit is contained in:
@ -17,3 +17,9 @@ def model_kwargs(request, kwargs_usersettings):
|
||||
|
||||
if hasattr(request.cls, 'kwargs_create_item'):
|
||||
del request.cls.kwargs_create_item
|
||||
|
||||
|
||||
@pytest.fixture( scope = 'class')
|
||||
def model_serializer(serializer_usersettings):
|
||||
|
||||
yield serializer_usersettings
|
||||
|
@ -0,0 +1,108 @@
|
||||
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
|
||||
|
||||
|
||||
|
||||
@pytest.mark.model_usersettings
|
||||
class UserSettingsSerializerTestCases(
|
||||
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()
|
||||
|
||||
|
||||
@pytest.mark.regression
|
||||
def test_serializer_create_calls_model_full_clean(self, created_model,
|
||||
kwargs_api_create, mocker, model, model_serializer, request_user
|
||||
):
|
||||
""" Serializer Check
|
||||
|
||||
Confirm that using valid data the object validates without exceptions.
|
||||
"""
|
||||
|
||||
mock_view = MockView(
|
||||
user = request_user,
|
||||
model = model,
|
||||
action = 'create',
|
||||
)
|
||||
|
||||
serializer = model_serializer['model'](
|
||||
created_model,
|
||||
context = {
|
||||
'request': mock_view.request,
|
||||
'view': mock_view,
|
||||
},
|
||||
data = kwargs_api_create,
|
||||
partial = True,
|
||||
)
|
||||
|
||||
serializer.is_valid(raise_exception = True)
|
||||
|
||||
full_clean = mocker.spy(model, 'full_clean')
|
||||
|
||||
serializer.save()
|
||||
|
||||
full_clean.assert_called_once()
|
||||
|
||||
|
||||
|
||||
class UserSettingsSerializerInheritedCases(
|
||||
UserSettingsSerializerTestCases
|
||||
):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
@pytest.mark.module_settings
|
||||
class UserSettingsSerializerPyTest(
|
||||
UserSettingsSerializerTestCases
|
||||
):
|
||||
pass
|
1
app/tests/fixtures/__init__.py
vendored
1
app/tests/fixtures/__init__.py
vendored
@ -362,4 +362,5 @@ from .model_user import (
|
||||
from .model_usersettings import (
|
||||
kwargs_usersettings,
|
||||
model_usersettings,
|
||||
serializer_usersettings,
|
||||
)
|
||||
|
25
app/tests/fixtures/model_usersettings.py
vendored
25
app/tests/fixtures/model_usersettings.py
vendored
@ -2,6 +2,13 @@ import datetime
|
||||
import pytest
|
||||
|
||||
from settings.models.user_settings import UserSettings
|
||||
from settings.serializers.user_settings import (
|
||||
UserSettingsBaseSerializer,
|
||||
UserSettingsModelSerializer,
|
||||
UserSettingsViewSerializer,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@pytest.fixture( scope = 'class')
|
||||
def model_usersettings():
|
||||
@ -9,6 +16,7 @@ def model_usersettings():
|
||||
yield UserSettings
|
||||
|
||||
|
||||
|
||||
@pytest.fixture( scope = 'class')
|
||||
def kwargs_usersettings( django_db_blocker, model_user ):
|
||||
|
||||
@ -23,12 +31,6 @@ def kwargs_usersettings( django_db_blocker, model_user ):
|
||||
password = 'password'
|
||||
)
|
||||
|
||||
# user_settings = UserSettings.objects.get(
|
||||
# user = user
|
||||
# )
|
||||
|
||||
# user_settings.delete() # Remove default created
|
||||
|
||||
|
||||
kwargs = {
|
||||
'user': user,
|
||||
@ -39,3 +41,14 @@ def kwargs_usersettings( django_db_blocker, model_user ):
|
||||
with django_db_blocker.unblock():
|
||||
|
||||
user.delete()
|
||||
|
||||
|
||||
|
||||
@pytest.fixture( scope = 'class')
|
||||
def serializer_usersettings():
|
||||
|
||||
yield {
|
||||
'base': UserSettingsBaseSerializer,
|
||||
'model': UserSettingsModelSerializer,
|
||||
'view': UserSettingsViewSerializer
|
||||
}
|
||||
|
Reference in New Issue
Block a user