refactor(itim): Update Test Suite for RequestTicket model

ref: #871 #868
This commit is contained in:
2025-07-16 21:29:52 +09:30
parent 35c5c7ca66
commit 8cc8fdad8b
5 changed files with 91 additions and 30 deletions

View File

@ -1,14 +1,23 @@
import pytest
from itim.models.request_ticket import RequestTicket
@pytest.fixture( scope = 'class')
def model(request):
def model(request, model_requestticket):
request.cls.model = RequestTicket
request.cls.model = model_requestticket
yield request.cls.model
del request.cls.model
@pytest.fixture( scope = 'class', autouse = True)
def model_kwargs(request, kwargs_requestticket):
request.cls.kwargs_create_item = kwargs_requestticket.copy()
yield kwargs_requestticket.copy()
if hasattr(request.cls, 'kwargs_create_item'):
del request.cls.kwargs_create_item

View File

@ -1,27 +1,62 @@
from itim.models.request_ticket import RequestTicket
import pytest
from django.db import models
from itim.tests.unit.ticket_slm.test_unit_ticket_slm_model import SLMTicketModelInheritedCases
from itim.models.request_ticket import RequestTicket
class RequestTicketModelTestCases(
SLMTicketModelInheritedCases,
@pytest.mark.model_requestticket
class RequestTicketTestCases(
SLMTicketModelInheritedCases
):
kwargs_create_item: dict = {}
sub_model_type = 'request'
def test_class_inherits_requestticket(self):
@property
def parameterized_class_attributes(self):
return {
'_audit_enabled': {
'value': False
},
'_notes_enabled': {
'value': False
},
'_is_submodel': {
'value': True
},
'model_tag': {
'type': str,
'value': 'ticket'
},
'url_model_name': {
'type': str,
'value': 'ticket'
},
}
@property
def parameterized_model_fields(self):
return {}
def test_class_inherits_requestticket(self, model):
""" Class inheritence
TenancyObject must inherit SaveHistory
"""
assert issubclass(self.model, RequestTicket)
assert issubclass(model, RequestTicket)
def test_function_get_ticket_type(self):
def test_function_get_ticket_type(self, model):
"""Function test
As this model is intended to be used alone.
@ -30,31 +65,20 @@ class RequestTicketModelTestCases(
`RequestTicket`
"""
assert self.model().get_ticket_type == 'request'
assert model().get_ticket_type == 'request'
class RequestTicketModelInheritedCases(
RequestTicketModelTestCases,
class RequestTicketInheritedCases(
RequestTicketTestCases,
):
"""Sub-Ticket Test Cases
Test Cases for Ticket models that inherit from model RequestTicket
"""
kwargs_create_item: dict = None
model = None
sub_model_type = None
"""Ticket Sub Model Type
Ticket sub-models must have this attribute defined in `ModelNam.Meta.sub_model_type`
"""
class RequestTicketModelPyTest(
RequestTicketModelTestCases,
@pytest.mark.module_itim
class RequestTicketPyTest(
RequestTicketTestCases,
):
pass

View File

@ -233,6 +233,11 @@ from .model_projecttype import (
model_projecttype,
)
from .model_requestticket import (
kwargs_requestticket,
model_requestticket,
)
from .model_role import (
kwargs_role,
model_role,

View File

@ -0,0 +1,22 @@
import pytest
from itim.models.request_ticket import RequestTicket
@pytest.fixture( scope = 'class')
def model_requestticket(request):
yield RequestTicket
@pytest.fixture( scope = 'class')
def kwargs_requestticket(kwargs_slmticket,
):
kwargs = {
**kwargs_slmticket,
}
yield kwargs.copy()

View File

@ -1138,6 +1138,7 @@ markers = [
"model_projectstate: Selects tests for model Project State.",
"model_projecttype: Selects tests for model Project Type.",
"model_role: Selects tests for model Role.",
"model_requestticket: Selects tests for model Request Ticket.",
"model_service: Selects tests for model Service.",
"model_software: Selects tests for model Software.",
"model_slmticket: Selects tests for model SLMTicket.",