test(core): API Permission Test Cases for ticket_base model

ref: #731 #723
This commit is contained in:
2025-04-22 22:21:42 +09:30
parent 29e07e6cac
commit 0a630cf51a
4 changed files with 171 additions and 1 deletions

View File

@ -4,6 +4,8 @@ from django.test import (
TestCase TestCase
) )
from access.models.organization import Organization
def pytest_pycollect_makeitem(collector, name, obj): def pytest_pycollect_makeitem(collector, name, obj):
@ -25,3 +27,62 @@ def pytest_pycollect_makeitem(collector, name, obj):
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
def enable_db_access_for_all_tests(db): # pylint: disable=W0613:unused-argument def enable_db_access_for_all_tests(db): # pylint: disable=W0613:unused-argument
pass pass
@pytest.fixture( scope = 'class')
def create_model(request, django_db_blocker):
item = None
with django_db_blocker.unblock():
item = request.cls.model.objects.create(
**request.cls.kwargs_create_item
)
request.cls.item = item
yield item
with django_db_blocker.unblock():
request.cls.item.delete()
@pytest.fixture( scope = 'class')
def organization_one(django_db_blocker):
item = None
with django_db_blocker.unblock():
item = Organization.objects.create(
name = 'org one'
)
yield item
with django_db_blocker.unblock():
item.delete()
@pytest.fixture( scope = 'class')
def organization_two(django_db_blocker):
item = None
with django_db_blocker.unblock():
item = Organization.objects.create(
name = 'org two'
)
yield item
with django_db_blocker.unblock():
item.delete()

View File

@ -0,0 +1,14 @@
import pytest
from core.models.ticket_base import TicketBase
@pytest.fixture( scope = 'class')
def model(request):
request.cls.model = TicketBase
yield request.cls.model
del request.cls.model

View File

@ -0,0 +1,95 @@
import pytest
from api.tests.functional.test_functional_api_permissions import (
APIPermissionsInheritedCases,
)
class PermissionsAPITestCases(
APIPermissionsInheritedCases,
):
add_data: dict = {
'title': 'ticket one',
'description': 'sadsa'
}
app_namespace = 'v2'
change_data = {'description': 'device'}
delete_data = {}
kwargs_create_item: dict = {
'title': 'ticket two',
'description': 'sadsa'
}
kwargs_create_item_diff_org: dict = {
'title': 'ticket three',
'description': 'sadsa'
}
url_kwargs: dict = {}
url_name = '_api_v2_ticket'
url_view_kwargs: dict = {}
def test_returned_data_from_user_and_global_organizations_only(self):
"""Check items returned
This test case is a over-ride of a test case with the same name.
This model is not a tenancy model making this test not-applicable.
Items returned from the query Must be from the users organization and
global ONLY!
"""
pass
class TicketBasePermissionsAPIInheritedCases(
PermissionsAPITestCases,
):
add_data: dict = None
kwargs_create_item: dict = None
kwargs_create_item_diff_org: dict = None
@pytest.fixture(scope='class')
def inherited_var_setup(self, request):
request.cls.url_kwargs.update({
'ticket_model': self.model._meta.model_name
})
request.cls.url_view_kwargs.update({
'ticket_model': self.model._meta.model_name
})
@pytest.fixture(scope='class', autouse = True)
def class_setup(self, request, django_db_blocker,
model,
var_setup,
prepare,
inherited_var_setup,
create_model,
):
pass
class TicketBasePermissionsAPIPyTest(
PermissionsAPITestCases,
):
pass

View File

@ -34,6 +34,6 @@ As with any other object within Centurion, the addition of a feature requires it
- `Functional` Test Cases - `Functional` Test Cases
- `core.tests.functional.contact.<*>.<Inherited class name>InheritedCases` _(if inheriting from `Contact`)_ Test cases for sub-models - `core.tests.functional.ticket_base.<*>.<Inherited class name>InheritedCases` _(if inheriting from `TicketBase`)_ Test cases for sub-models
The above listed test cases cover **all** tests for objects that are inherited from the base class. To complete the tests, you will need to add test cases for the differences your model introduces. The above listed test cases cover **all** tests for objects that are inherited from the base class. To complete the tests, you will need to add test cases for the differences your model introduces.