test(human_resources): History Serializer and ViewSet Functional test suites for employee

ref: #722 #684
This commit is contained in:
2025-04-15 15:23:28 +09:30
parent 559e65f990
commit 0a2ede62b7
5 changed files with 369 additions and 0 deletions

View File

View File

@ -0,0 +1,63 @@
from django.test import TestCase
from access.tests.functional.contact.test_functional_contact_history import (
ContactHistoryInheritedCases
)
from human_resources.models.employee import Employee
class EmployeeTestCases(
ContactHistoryInheritedCases,
):
field_name = 'model_notes'
kwargs_create_obj: dict = {
'email': 'ipfunny@unit.test',
'employee_number': 123456,
}
kwargs_delete_obj: dict = {
'email': 'ipweird@unit.test',
'employee_number': 123457,
}
model = Employee
class EmployeeHistoryInheritedCases(
EmployeeTestCases,
):
model = None
"""Entity model to test"""
kwargs_create_obj: dict = None
kwargs_delete_obj: dict = None
@classmethod
def setUpTestData(self):
self.kwargs_create_obj.update(
super().kwargs_create_obj
)
self.kwargs_delete_obj.update(
super().kwargs_delete_obj
)
super().setUpTestData()
class EmployeeHistoryTest(
EmployeeTestCases,
TestCase,
):
pass

View File

@ -0,0 +1,133 @@
import pytest
from django.test import TestCase
from rest_framework.exceptions import ValidationError
from human_resources.serializers.employee import (
Employee,
ModelSerializer
)
from access.tests.functional.contact.test_functional_contact_serializer import (
ContactSerializerInheritedCases
)
class SerializerTestCases(
ContactSerializerInheritedCases,
):
duplicate_f_name_l_name_dob = {
'email': 'contactentityduplicateone@unit.test',
'employee_number': 123456,
}
kwargs_create_item: dict = {
'email': 'ipfunny@unit.test',
'employee_number': 1234567,
}
kwargs_create_item_duplicate_f_name_l_name_dob = {
'email': 'contactentityduplicatetwo@unit.test',
'employee_number': 1234568,
}
model = Employee
"""Model to test"""
create_model_serializer = ModelSerializer
"""Serializer to test"""
valid_data: dict = {
'email': 'ipweird@unit.test',
'employee_number': 1234569,
}
def test_serializer_validation_no_employee_number_exception(self):
"""Serializer Validation Check
Ensure that when creating with valid data and field employee_number is missing
a validation error occurs.
"""
data = self.valid_data.copy()
del data['employee_number']
with pytest.raises(ValidationError) as err:
serializer = self.create_model_serializer(
data = data
)
serializer.is_valid(raise_exception = True)
assert err.value.get_codes()['employee_number'][0] == 'required'
class ContactSerializerInheritedCases(
SerializerTestCases,
):
create_model_serializer = None
"""Serializer to test"""
duplicate_f_name_l_name_dob: dict = None
""" Duplicate model serializer dict
used for testing for duplicate f_name, l_name and dob fields.
"""
kwargs_create_item: dict = None
""" Model kwargs to create item"""
kwargs_create_item_duplicate_f_name_l_name_dob: dict = None
"""model kwargs to create object
**None:** Ensure that the fields of sub-model to person do not match
`self.duplicate_f_name_l_name_dob`. if they do the wrong exception will be thrown.
used for testing for duplicate f_name, l_name and dob fields.
"""
model = None
"""Model to test"""
valid_data: dict = None
"""Valid data used by serializer to create object"""
@classmethod
def setUpTestData(self):
"""Setup Test"""
self.duplicate_f_name_l_name_dob.update(
super().duplicate_f_name_l_name_dob
)
self.kwargs_create_item_duplicate_f_name_l_name_dob.update(
super().kwargs_create_item_duplicate_f_name_l_name_dob
)
self.kwargs_create_item.update(
super().kwargs_create_item
)
self.valid_data.update(
super().valid_data
)
super().setUpTestData()
class ContactSerializerTest(
SerializerTestCases,
TestCase,
):
pass

View File

@ -0,0 +1,173 @@
from django.test import TestCase
from access.tests.functional.contact.test_functional_contact_viewset import (
ContactMetadataInheritedCases,
ContactPermissionsAPIInheritedCases,
ContactViewSetInheritedCases
)
from human_resources.models.employee import Employee
class ViewSetBase:
add_data = {
'email': 'ipfunny@unit.test',
'employee_number': 123456,
}
kwargs_create_item_diff_org = {
'email': 'ipstrange@unit.test',
'employee_number': 1234567,
}
kwargs_create_item = {
'email': 'ipweird@unit.test',
'employee_number': 1234568,
}
model = Employee
url_kwargs: dict = {}
url_view_kwargs: dict = {}
class PermissionsAPITestCases(
ViewSetBase,
ContactPermissionsAPIInheritedCases,
):
pass
class EmployeePermissionsAPIInheritedCases(
PermissionsAPITestCases,
):
add_data: dict = None
model = None
kwargs_create_item: dict = None
kwargs_create_item_diff_org: dict = None
@classmethod
def setUpTestData(self):
self.add_data.update(
super().add_data
)
self.kwargs_create_item.update(
super().kwargs_create_item
)
self.kwargs_create_item_diff_org.update(
super().kwargs_create_item_diff_org
)
super().setUpTestData()
class EmployeePermissionsAPITest(
PermissionsAPITestCases,
TestCase,
):
pass
class ViewSetTestCases(
ViewSetBase,
ContactViewSetInheritedCases,
):
pass
class EmployeeViewSetInheritedCases(
ViewSetTestCases,
):
model = None
kwargs_create_item: dict = None
kwargs_create_item_diff_org: dict = None
@classmethod
def setUpTestData(self):
self.kwargs_create_item.update(
super().kwargs_create_item
)
self.kwargs_create_item_diff_org.update(
super().kwargs_create_item_diff_org
)
super().setUpTestData()
class EmployeeViewSetTest(
ViewSetTestCases,
TestCase,
):
pass
class MetadataTestCases(
ViewSetBase,
ContactMetadataInheritedCases,
):
pass
class EmployeeMetadataInheritedCases(
MetadataTestCases,
):
model = None
kwargs_create_item: dict = None
kwargs_create_item_diff_org: dict = None
@classmethod
def setUpTestData(self):
self.kwargs_create_item.update(
super().kwargs_create_item
)
self.kwargs_create_item_diff_org.update(
super().kwargs_create_item_diff_org
)
super().setUpTestData()
class EmployeeMetadataTest(
MetadataTestCases,
TestCase,
):
pass