refactor(access): Update Model Person to use PyTest for Model Test Suite
ref: #761 #730
This commit is contained in:
@ -0,0 +1,28 @@
|
|||||||
|
# Generated by Django 5.1.9 on 2025-05-15 12:46
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('access', '0010_company'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='entity',
|
||||||
|
name='entity_type',
|
||||||
|
field=models.CharField(help_text='Type this entity is', max_length=30, verbose_name='Entity Type'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='person',
|
||||||
|
name='dob',
|
||||||
|
field=models.DateField(blank=True, help_text='The Persons Date of Birth (DOB)', null=True, verbose_name='DOB'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='person',
|
||||||
|
name='m_name',
|
||||||
|
field=models.CharField(blank=True, help_text='The persons middle name(s)', max_length=100, null=True, verbose_name='Middle Name(s)'),
|
||||||
|
),
|
||||||
|
]
|
@ -36,7 +36,6 @@ class Person(
|
|||||||
|
|
||||||
m_name = models.CharField(
|
m_name = models.CharField(
|
||||||
blank = True,
|
blank = True,
|
||||||
default = None,
|
|
||||||
help_text = 'The persons middle name(s)',
|
help_text = 'The persons middle name(s)',
|
||||||
max_length = 100,
|
max_length = 100,
|
||||||
null = True,
|
null = True,
|
||||||
@ -54,7 +53,6 @@ class Person(
|
|||||||
|
|
||||||
dob = models.DateField(
|
dob = models.DateField(
|
||||||
blank = True,
|
blank = True,
|
||||||
default = None,
|
|
||||||
help_text = 'The Persons Date of Birth (DOB)',
|
help_text = 'The Persons Date of Birth (DOB)',
|
||||||
null = True,
|
null = True,
|
||||||
unique = False,
|
unique = False,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from django.db.models.fields import NOT_PROVIDED
|
import pytest
|
||||||
from django.test import TestCase
|
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
from access.models.person import Person
|
from access.models.person import Person
|
||||||
from access.tests.unit.entity.test_unit_entity_model import (
|
from access.tests.unit.entity.test_unit_entity_model import (
|
||||||
@ -8,88 +9,114 @@ from access.tests.unit.entity.test_unit_entity_model import (
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ModelTestCases(
|
class PersonModelTestCases(
|
||||||
EntityModelInheritedCases,
|
EntityModelInheritedCases,
|
||||||
):
|
):
|
||||||
|
|
||||||
model = Person
|
kwargs_create_item: dict = {
|
||||||
|
|
||||||
kwargs_item_create: dict = {
|
|
||||||
'f_name': 'Ian',
|
'f_name': 'Ian',
|
||||||
'm_name': 'Peter',
|
'm_name': 'Peter',
|
||||||
'l_name': 'Funny',
|
'l_name': 'Funny',
|
||||||
'dob': '2025-04-08',
|
'dob': '2025-04-08',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub_model_type = 'person'
|
||||||
|
"""Sub Model Type
|
||||||
|
|
||||||
|
sub-models must have this attribute defined in `ModelName.Meta.sub_model_type`
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def test_model_field_dob_optional(self):
|
parameterized_fields: dict = {
|
||||||
"""Test Field
|
"f_name": {
|
||||||
|
'field_type': models.fields.CharField,
|
||||||
|
'field_parameter_default_exists': False,
|
||||||
|
'field_parameter_verbose_name_type': str,
|
||||||
|
},
|
||||||
|
"m_name": {
|
||||||
|
'field_type': models.fields.CharField,
|
||||||
|
'field_parameter_default_exists': False,
|
||||||
|
'field_parameter_verbose_name_type': str,
|
||||||
|
},
|
||||||
|
"l_name": {
|
||||||
|
'field_type': models.fields.CharField,
|
||||||
|
'field_parameter_default_exists': False,
|
||||||
|
'field_parameter_verbose_name_type': str,
|
||||||
|
},
|
||||||
|
"dob": {
|
||||||
|
'field_type': models.fields.DateField,
|
||||||
|
'field_parameter_default_exists': False,
|
||||||
|
'field_parameter_verbose_name_type': str,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
Field `dob` must be an optional field
|
|
||||||
|
|
||||||
|
def test_class_inherits_person(self):
|
||||||
|
""" Class inheritence
|
||||||
|
|
||||||
|
TenancyObject must inherit SaveHistory
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert self.model._meta.get_field('dob').blank
|
assert issubclass(self.model, Person)
|
||||||
|
|
||||||
|
|
||||||
def test_model_field_f_name_mandatory(self):
|
def test_attribute_value_history_app_label(self):
|
||||||
"""Test Field
|
"""Attribute Type
|
||||||
|
|
||||||
Field `f_name` must be a mandatory field
|
history_app_label has been set, override this test case with the value
|
||||||
|
of attribute `history_app_label`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert(
|
assert self.model.history_app_label == 'access'
|
||||||
not (
|
|
||||||
self.model._meta.get_field('f_name').blank
|
|
||||||
and self.model._meta.get_field('f_name').null
|
|
||||||
)
|
|
||||||
and self.model._meta.get_field('f_name').default is NOT_PROVIDED
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_model_field_l_name_mandatory(self):
|
def test_attribute_value_history_model_name(self):
|
||||||
"""Test Field
|
"""Attribute Type
|
||||||
|
|
||||||
Field `l_name` must be a mandatory field
|
history_model_name has been set, override this test case with the value
|
||||||
|
of attribute `history_model_name`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert (
|
assert self.model.history_model_name == 'person'
|
||||||
not (
|
|
||||||
self.model._meta.get_field('l_name').blank
|
|
||||||
and self.model._meta.get_field('l_name').null
|
|
||||||
)
|
def test_function_value_get_url(self):
|
||||||
and self.model._meta.get_field('l_name').default is NOT_PROVIDED
|
|
||||||
)
|
assert self.item.get_url() == '/api/v2/access/entity/person/' + str(self.item.id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PersonModelInheritedCases(
|
class PersonModelInheritedCases(
|
||||||
ModelTestCases,
|
PersonModelTestCases,
|
||||||
):
|
):
|
||||||
"""Sub-Entity Test Cases
|
"""Sub-Ticket Test Cases
|
||||||
|
|
||||||
Test Cases for Entity models that inherit from model Person
|
Test Cases for Ticket models that inherit from model Entity
|
||||||
"""
|
"""
|
||||||
|
|
||||||
kwargs_item_create: dict = None
|
kwargs_create_item: dict = {}
|
||||||
|
|
||||||
model = None
|
model = None
|
||||||
|
|
||||||
|
sub_model_type = None
|
||||||
|
"""Ticket Sub Model Type
|
||||||
|
|
||||||
@classmethod
|
Ticket sub-models must have this attribute defined in `ModelNam.Meta.sub_model_type`
|
||||||
def setUpTestData(self):
|
"""
|
||||||
|
|
||||||
self.kwargs_item_create.update(
|
|
||||||
super().kwargs_item_create
|
|
||||||
)
|
|
||||||
|
|
||||||
super().setUpTestData()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PersonModelTest(
|
class PersonModelPyTest(
|
||||||
ModelTestCases,
|
PersonModelTestCases,
|
||||||
TestCase,
|
|
||||||
):
|
):
|
||||||
|
|
||||||
pass
|
|
||||||
|
def test_function_value_get_related_model(self):
|
||||||
|
"""Function test
|
||||||
|
|
||||||
|
Confirm function `get_related_model` is None for base model
|
||||||
|
"""
|
||||||
|
|
||||||
|
assert self.item.get_related_model() is None
|
||||||
|
Reference in New Issue
Block a user