refactor(core): Update Test Suite for TicketBase model

ref: #870 #861
This commit is contained in:
2025-07-15 02:15:25 +09:30
parent b4f61223d6
commit d3741e74e2
13 changed files with 433 additions and 446 deletions

View File

@ -1,3 +1,4 @@
import pytest
import django
from django.contrib.auth.models import Permission
@ -16,6 +17,7 @@ User = django.contrib.auth.get_user_model()
@pytest.mark.model_ticketbase
class MetadataTestCases(
MetadataAttributesFunctional,
):
@ -268,7 +270,7 @@ class TicketBaseMetadataInheritedCases(
super().setUpTestData()
@pytest.mark.module_core
class TicketBaseMetadataTest(
MetadataTestCases,
TestCase,

View File

@ -4,6 +4,7 @@ from core.tests.functional.slash_commands.test_slash_command_related import Slas
@pytest.mark.model_ticketbase
class TicketBaseModelTestCases(
SlashCommandsTicketInheritedTestCases
):
@ -45,7 +46,7 @@ class TicketBaseModelInheritedTestCases(
pass
@pytest.mark.module_core
class TicketBaseModelPyTest(
TicketBaseModelTestCases
):

View File

@ -6,6 +6,7 @@ from api.tests.functional.test_functional_api_permissions import (
@pytest.mark.model_ticketbase
class PermissionsAPITestCases(
APIPermissionsInheritedCases,
):
@ -124,7 +125,7 @@ class TicketBasePermissionsAPIInheritedCases(
pass
@pytest.mark.module_core
class TicketBasePermissionsAPIPyTest(
PermissionsAPITestCases,
):

View File

@ -19,6 +19,7 @@ User = django.contrib.auth.get_user_model()
@pytest.mark.model_ticketbase
class TicketBaseSerializerTestCases:
@ -1087,7 +1088,7 @@ class TicketBaseSerializerInheritedCases(
"""Valid data used by serializer to create object"""
@pytest.mark.module_core
class TicketBaseSerializerPyTest(
TicketBaseSerializerTestCases,
):

View File

@ -1,3 +1,4 @@
import pytest
import django
from django.contrib.auth.models import Permission
@ -16,6 +17,7 @@ User = django.contrib.auth.get_user_model()
@pytest.mark.model_ticketbase
class ViewSetBase:
add_data: dict = {
@ -275,7 +277,7 @@ class TicketBaseViewSetInheritedCases(
super().setUpTestData()
@pytest.mark.module_core
class TicketBaseViewSetTest(
ViewSetTestCases,
TestCase,

View File

@ -1,14 +1,23 @@
import pytest
from core.models.ticket_base import TicketBase
@pytest.fixture( scope = 'class')
def model(request):
def model(request, model_ticketbase):
request.cls.model = TicketBase
request.cls.model = model_ticketbase
yield request.cls.model
del request.cls.model
@pytest.fixture( scope = 'class', autouse = True)
def model_kwargs(request, kwargs_ticketbase):
request.cls.kwargs_create_item = kwargs_ticketbase.copy()
yield kwargs_ticketbase.copy()
if hasattr(request.cls, 'kwargs_create_item'):
del request.cls.kwargs_create_item

View File

@ -15,6 +15,7 @@ from project_management.models.project_milestone import Project, ProjectMileston
@pytest.mark.model_ticketbase
class APITestCases(
APIFieldsInheritedCases,
):
@ -413,7 +414,7 @@ class TicketBaseAPIInheritedCases(
url_ns_name = '_api_ticket_sub'
@pytest.mark.module_core
class TicketBaseAPIPyTest(
APITestCases,
):

View File

@ -1,3 +1,4 @@
import pytest
from django.test import Client, TestCase
from rest_framework.reverse import reverse
@ -13,6 +14,7 @@ from api.tests.unit.test_unit_common_viewset import SubModelViewSetInheritedCase
@pytest.mark.model_ticketbase
class ViewsetTestCases(
SubModelViewSetInheritedCases,
):
@ -89,7 +91,7 @@ class TicketBaseViewsetInheritedCases(
route_name = 'v2:_api_ticket_sub'
@pytest.mark.module_core
class TicketBaseViewsetTest(
ViewsetTestCases,
TestCase,

View File

@ -263,6 +263,16 @@ from .model_softwareversion import (
model_softwareversion,
)
from .model_ticketbase import (
kwargs_ticketbase,
model_ticketbase,
)
from .model_ticketcommentbase import (
kwargs_ticketcommentbase,
model_ticketcommentbase,
)
from .model_team import (
kwargs_team,
model_team,

43
app/tests/fixtures/model_ticketbase.py vendored Normal file
View File

@ -0,0 +1,43 @@
import datetime
import pytest
from core.models.ticket_base import TicketBase
@pytest.fixture( scope = 'class')
def model_ticketbase(request):
yield TicketBase
@pytest.fixture( scope = 'class')
def kwargs_ticketbase(django_db_blocker, kwargs_centurionmodel,
model_user, kwargs_user, model_ticketbase
):
random_str = str(datetime.datetime.now(tz=datetime.timezone.utc))
random_str = str(random_str).replace(
' ', '').replace(':', '').replace('+', '').replace('.', '')
with django_db_blocker.unblock():
user = model_user.objects.create( **kwargs_user )
kwargs = kwargs_centurionmodel.copy()
del kwargs['model_notes']
kwargs = {
**kwargs,
'external_system': model_ticketbase.Ticket_ExternalSystem.GITHUB,
'external_ref': int(random_str[len(random_str)-9:]),
'title': 'tb_' + random_str,
'description': 'the body',
'opened_by': user,
}
yield kwargs.copy()
with django_db_blocker.unblock():
user.delete()

View File

@ -0,0 +1,41 @@
import datetime
import pytest
from core.models.ticket_comment_base import TicketCommentBase
@pytest.fixture( scope = 'class')
def model_ticketcommentbase(request):
yield TicketCommentBase
@pytest.fixture( scope = 'class')
def kwargs_ticketcommentbase(django_db_blocker, kwargs_centurionmodel,
model_person, kwargs_person, model_ticketcommentbase
):
random_str = str(datetime.datetime.now(tz=datetime.timezone.utc))
random_str = str(random_str).replace(
' ', '').replace(':', '').replace('+', '').replace('.', '')
with django_db_blocker.unblock():
person = model_person.objects.create( **kwargs_person )
kwargs = kwargs_centurionmodel.copy()
del kwargs['model_notes']
kwargs = {
**kwargs,
'body': 'a comment body',
'comment_type': model_ticketcommentbase._meta.sub_model_type,
'user': person,
}
yield kwargs.copy()
with django_db_blocker.unblock():
person.delete()

View File

@ -1143,6 +1143,7 @@ markers = [
"model_softwarecategory: Selects tests for model Software Category.",
"model_softwareenablefeatureflag: Selects tests for model Software Enabled Feature Flag.",
"model_softwareversion: Selects tests for model Software Version.",
"model_ticketbase: Selects tests for model Ticket Base.",
"model_ticketcategory: Select all ticket category tests.",
"model_ticketcommentcategory: Select all ticket comment category tests.",
"models: Selects all models tests.",