Добавлен класс ViewSetAction
This commit is contained in:
@@ -10,4 +10,5 @@
|
|||||||
|
|
||||||
from .ui_language import UILanguage
|
from .ui_language import UILanguage
|
||||||
from .auth_reject_reson import AuthRejectReason
|
from .auth_reject_reson import AuthRejectReason
|
||||||
|
from .view_set_action import ViewSetAction
|
||||||
|
|
||||||
|
|||||||
63
net/xeaf/rack/enums/view_set_action.py
Normal file
63
net/xeaf/rack/enums/view_set_action.py
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# DRF Rack
|
||||||
|
# Библиотека классов расширений для Django REST Framework
|
||||||
|
#
|
||||||
|
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||||
|
# Все права защищены. Лицензия: MIT
|
||||||
|
|
||||||
|
"""
|
||||||
|
Описание класса ViewSetAction
|
||||||
|
"""
|
||||||
|
|
||||||
|
from enum import unique
|
||||||
|
|
||||||
|
from net.xeaf.rack.core import CoreEnum
|
||||||
|
|
||||||
|
|
||||||
|
@unique
|
||||||
|
class ViewSetAction(CoreEnum):
|
||||||
|
"""
|
||||||
|
Перечисление действий набора представлений
|
||||||
|
"""
|
||||||
|
|
||||||
|
LIST = "list"
|
||||||
|
""" Список объектов """
|
||||||
|
|
||||||
|
RETRIEVE = "retrieve"
|
||||||
|
""" Получение объекта """
|
||||||
|
|
||||||
|
CREATE = "create"
|
||||||
|
""" Создание объекта """
|
||||||
|
|
||||||
|
UPDATE = "update"
|
||||||
|
""" Изменение объекта """
|
||||||
|
|
||||||
|
PARTIAL_UPDATE = "partial_update"
|
||||||
|
""" Частичное изменение объекта """
|
||||||
|
|
||||||
|
DESTROY = "destroy"
|
||||||
|
""" Удаление объекта """
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_method(cls, action: ViewSetAction) -> str:
|
||||||
|
"""
|
||||||
|
Возвращает HTTP метод для указанного действия
|
||||||
|
|
||||||
|
:param action: Действие
|
||||||
|
:return: HTTP метод
|
||||||
|
"""
|
||||||
|
|
||||||
|
match action:
|
||||||
|
case cls.LIST:
|
||||||
|
return "item_list"
|
||||||
|
case cls.CREATE:
|
||||||
|
return "item_create"
|
||||||
|
case cls.RETRIEVE:
|
||||||
|
return "item_retrieve"
|
||||||
|
case cls.UPDATE:
|
||||||
|
return "item_update"
|
||||||
|
case cls.PARTIAL_UPDATE:
|
||||||
|
return "item_partial_update"
|
||||||
|
case cls.DESTROY:
|
||||||
|
return "item_destroy"
|
||||||
|
case _:
|
||||||
|
raise ValueError(f"Invalid action: {action}")
|
||||||
@@ -8,4 +8,6 @@
|
|||||||
Пакет описания тестов для классов перечислений
|
Пакет описания тестов для классов перечислений
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from .ui_language_tests import *
|
from .ui_language_tests import UILanguageTests
|
||||||
|
from .view_set_action_tests import ViewSetActionTests
|
||||||
|
|
||||||
|
|||||||
41
net/xeaf/rack/tests/enums/view_set_action_tests.py
Normal file
41
net/xeaf/rack/tests/enums/view_set_action_tests.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# DRF Rack
|
||||||
|
# Библиотека классов расширений для Django REST Framework
|
||||||
|
#
|
||||||
|
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||||
|
# Все права защищены. Лицензия: MIT
|
||||||
|
|
||||||
|
"""
|
||||||
|
Описание класса ViewSetActionTests
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.test import SimpleTestCase
|
||||||
|
|
||||||
|
from net.xeaf.rack.enums import ViewSetAction
|
||||||
|
|
||||||
|
|
||||||
|
class ViewSetActionTests(SimpleTestCase):
|
||||||
|
"""
|
||||||
|
Тесты для ViewSetAction
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_get_method_returns_correct_mapping(self):
|
||||||
|
"""
|
||||||
|
Проверяет, что get_method возвращает правильные HTTP-методы для всех действий
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.assertEqual(ViewSetAction.get_method(ViewSetAction.LIST), "item_list")
|
||||||
|
self.assertEqual(ViewSetAction.get_method(ViewSetAction.RETRIEVE), "item_retrieve")
|
||||||
|
self.assertEqual(ViewSetAction.get_method(ViewSetAction.CREATE), "item_create")
|
||||||
|
self.assertEqual(ViewSetAction.get_method(ViewSetAction.UPDATE), "item_update")
|
||||||
|
self.assertEqual(ViewSetAction.get_method(ViewSetAction.PARTIAL_UPDATE), "item_partial_update")
|
||||||
|
self.assertEqual(ViewSetAction.get_method(ViewSetAction.DESTROY), "item_destroy")
|
||||||
|
|
||||||
|
def test_get_method_with_invalid_action_raises_error(self):
|
||||||
|
"""
|
||||||
|
Проверяет поведение метода при передаче невалидного значения
|
||||||
|
"""
|
||||||
|
|
||||||
|
invalid_action = "invalid_action"
|
||||||
|
|
||||||
|
with self.assertRaises(Exception): # Будет вызван MatchError или ValueError в зависимости от настроек linter/python
|
||||||
|
ViewSetAction.get_method(invalid_action) # type: ignore
|
||||||
Reference in New Issue
Block a user