Files
blog.pyaqa.ru/tests/unit/presentation/test_web_deps.py
2026-05-09 12:57:25 +03:00

132 lines
3.9 KiB
Python

"""Tests for web dependencies."""
from unittest.mock import MagicMock
from app.domain.roles import Role
from app.presentation.web.deps import (
can_create_post,
can_delete_post,
can_edit_post,
can_see_draft,
get_user_role,
)
class TestGetUserRole:
"""Test get_user_role function."""
def test_none_returns_guest(self) -> None:
"""Test None user returns GUEST role."""
assert get_user_role(None) == Role.GUEST
def test_admin_roles(self) -> None:
"""Test admin role detection."""
user = MagicMock()
user.roles = ["admin"]
assert get_user_role(user) == Role.ADMIN
def test_user_roles(self) -> None:
"""Test user role detection."""
user = MagicMock()
user.roles = ["user"]
assert get_user_role(user) == Role.USER
def test_empty_roles_returns_guest(self) -> None:
"""Test empty roles list returns GUEST."""
user = MagicMock()
user.roles = []
assert get_user_role(user) == Role.GUEST
class TestCanCreatePost:
"""Test can_create_post function."""
def test_guest_cannot_create(self) -> None:
"""Test guest cannot create posts."""
assert can_create_post(None) is False
def test_user_can_create(self) -> None:
"""Test user can create posts."""
user = MagicMock()
user.roles = ["user"]
assert can_create_post(user) is True
def test_admin_can_create(self) -> None:
"""Test admin can create posts."""
user = MagicMock()
user.roles = ["admin"]
assert can_create_post(user) is True
class TestCanEditPost:
"""Test can_edit_post function."""
def test_guest_cannot_edit(self) -> None:
"""Test guest cannot edit any post."""
assert can_edit_post(None, "author-1") is False
def test_user_can_edit_own(self) -> None:
"""Test user can edit own post."""
user = MagicMock()
user.roles = ["user"]
user.user_id = "author-1"
assert can_edit_post(user, "author-1") is True
def test_user_cannot_edit_other(self) -> None:
"""Test user cannot edit other's post."""
user = MagicMock()
user.roles = ["user"]
user.user_id = "user-2"
assert can_edit_post(user, "author-1") is False
def test_admin_can_edit_any(self) -> None:
"""Test admin can edit any post."""
user = MagicMock()
user.roles = ["admin"]
user.user_id = "admin-1"
assert can_edit_post(user, "author-1") is True
class TestCanDeletePost:
"""Test can_delete_post function."""
def test_delegates_to_can_edit(self) -> None:
"""Test can_delete_post delegates to can_edit_post logic."""
user = MagicMock()
user.roles = ["user"]
user.user_id = "author-1"
assert can_delete_post(user, "author-1") is True
def test_guest_cannot_delete(self) -> None:
"""Test guest cannot delete posts."""
assert can_delete_post(None, "author-1") is False
class TestCanSeeDraft:
"""Test can_see_draft function."""
def test_guest_cannot_see(self) -> None:
"""Test guest cannot see drafts."""
assert can_see_draft(None, "author-1") is False
def test_user_can_see_own(self) -> None:
"""Test user can see own draft."""
user = MagicMock()
user.roles = ["user"]
user.user_id = "author-1"
assert can_see_draft(user, "author-1") is True
def test_user_cannot_see_other(self) -> None:
"""Test user cannot see other's draft."""
user = MagicMock()
user.roles = ["user"]
user.user_id = "user-2"
assert can_see_draft(user, "author-1") is False
def test_admin_can_see_any(self) -> None:
"""Test admin can see any draft."""
user = MagicMock()
user.roles = ["admin"]
user.user_id = "admin-1"
assert can_see_draft(user, "author-1") is True