diff --git a/app/itam/tests/functional/device_type/device_type_serializer.py b/app/itam/tests/functional/device_type/device_type_serializer.py deleted file mode 100644 index e10670ac..00000000 --- a/app/itam/tests/functional/device_type/device_type_serializer.py +++ /dev/null @@ -1,63 +0,0 @@ -import pytest - -from django.test import TestCase - -from rest_framework.exceptions import ValidationError - -from access.models.tenant import Tenant as Organization - -from centurion.tests.abstract.mock_view import MockView, User - -from itam.serializers.device_type import DeviceType, DeviceTypeModelSerializer - - - -class DeviceTypeValidationAPI( - TestCase, -): - - model = DeviceType - - @classmethod - def setUpTestData(self): - """Setup Test - - 1. Create an org - 2. Create an item - """ - - organization = Organization.objects.create(name='test_org') - - self.user = User.objects.create_user(username="test_user_view", password="password") - - self.mock_view = MockView( user = self.user ) - - self.organization = organization - - self.item = self.model.objects.create( - organization=organization, - name = 'valid-hostname', - ) - - - - def test_serializer_validation_no_name(self): - """Serializer Validation Check - - Ensure that if creating and no name is provided a validation error occurs - """ - - with pytest.raises(ValidationError) as err: - - serializer = DeviceTypeModelSerializer( - context = { - 'request': self.mock_view.request, - 'view': self.mock_view, - }, - data={ - "organization": self.organization.id, - }) - - serializer.is_valid(raise_exception = True) - - assert err.value.get_codes()['name'][0] == 'required' diff --git a/app/itam/tests/unit/device_type/conftest.py b/app/itam/tests/unit/device_type/conftest.py index a6a2cf87..0e8309c2 100644 --- a/app/itam/tests/unit/device_type/conftest.py +++ b/app/itam/tests/unit/device_type/conftest.py @@ -17,3 +17,9 @@ def model_kwargs(request, kwargs_devicetype): if hasattr(request.cls, 'kwargs_create_item'): del request.cls.kwargs_create_item + + +@pytest.fixture( scope = 'class') +def model_serializer(serializer_devicetype): + + yield serializer_devicetype diff --git a/app/itam/tests/unit/device_type/test_unit_device_type_serializer.py b/app/itam/tests/unit/device_type/test_unit_device_type_serializer.py new file mode 100644 index 00000000..d6092c54 --- /dev/null +++ b/app/itam/tests/unit/device_type/test_unit_device_type_serializer.py @@ -0,0 +1,63 @@ +import pytest + +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_devicetype +class DeviceTypeSerializerTestCases( + SerializerTestCases +): + + + 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 DeviceTypeSerializerInheritedCases( + DeviceTypeSerializerTestCases +): + pass + + + +@pytest.mark.module_itam +class DeviceTypeSerializerPyTest( + DeviceTypeSerializerTestCases +): + pass \ No newline at end of file diff --git a/app/tests/fixtures/__init__.py b/app/tests/fixtures/__init__.py index 3efed8d0..7fd59bcc 100644 --- a/app/tests/fixtures/__init__.py +++ b/app/tests/fixtures/__init__.py @@ -125,6 +125,7 @@ from .model_devicesoftware import ( from .model_devicetype import ( kwargs_devicetype, model_devicetype, + serializer_devicetype, ) from .model_employee import ( diff --git a/app/tests/fixtures/model_devicemodel.py b/app/tests/fixtures/model_devicemodel.py index 51956c91..9db39dfd 100644 --- a/app/tests/fixtures/model_devicemodel.py +++ b/app/tests/fixtures/model_devicemodel.py @@ -1,5 +1,6 @@ import datetime import pytest +import random from itam.models.device import DeviceModel from itam.serializers.device_model import ( @@ -25,7 +26,9 @@ def kwargs_devicemodel(kwargs_centurionmodel, django_db_blocker, with django_db_blocker.unblock(): - manufacturer = model_manufacturer.objects.create( **kwargs_manufacturer ) + kwargs = kwargs_manufacturer.copy() + kwargs['name'] = 'dm_' + str( random.randint(1, 99999) ) + manufacturer = model_manufacturer.objects.create( **kwargs ) kwargs = { **kwargs_centurionmodel.copy(), diff --git a/app/tests/fixtures/model_devicetype.py b/app/tests/fixtures/model_devicetype.py index e64c82e3..d490351a 100644 --- a/app/tests/fixtures/model_devicetype.py +++ b/app/tests/fixtures/model_devicetype.py @@ -2,6 +2,11 @@ import datetime import pytest from itam.models.device import DeviceType +from itam.serializers.device_type import ( + DeviceTypeBaseSerializer, + DeviceTypeModelSerializer, + DeviceTypeViewSerializer, +) @@ -23,3 +28,13 @@ def kwargs_devicetype(kwargs_centurionmodel): } yield kwargs.copy() + + +@pytest.fixture( scope = 'class') +def serializer_devicetype(): + + yield { + 'base': DeviceTypeBaseSerializer, + 'model': DeviceTypeModelSerializer, + 'view': DeviceTypeViewSerializer + }