fix queue

This commit is contained in:
javad committed 2026-09-11 18:04:51 +03:30
1 parent 049cc41afc
commit 9a1c99cbd3
14 files changed
+237 -32

No files matched your search

+14 -4
View File
@@ -9,14 +9,19 @@ from django.core.files.uploadedfile import SimpleUploadedFile
from apps.attachments.models import Attachment, AttachmentPolicy
from apps.accounts.models import User, normalize_mobile
from apps.notifications.models import NotificationJob
from apps.staff.models import StaffProfile
from apps.staff.models import OrganizationalUnit, StaffProfile
from apps.tickets.models import Ticket, TicketCategory
from apps.tickets.policies import TicketPolicy
from apps.tickets.services import claim_ticket, create_ticket, delete_ticket, reply_ticket
@pytest.fixture
def category(db):
return TicketCategory.objects.create(title="قیمت", slug="price")
unit = OrganizationalUnit.objects.create(name="واحد تست دامنه", slug="domain-test-unit")
unit.permissions.add(
Permission.objects.get(codename="view_ticket", content_type__app_label="tickets"),
Permission.objects.get(codename="add_message", content_type__app_label="messaging"),
)
return TicketCategory.objects.create(unit=unit, title="قیمت", slug="domain-test-price")
@pytest.fixture
def customer(db):
@@ -25,6 +30,8 @@ def customer(db):
def make_staff(username):
mobile = "09120000001" if username == "a" else "09120000002"
user = User.objects.create_user(username=username, mobile=mobile, account_type="STAFF")
unit = OrganizationalUnit.objects.filter(slug="domain-test-unit").first()
StaffProfile.objects.create(user=user, primary_unit=unit, display_name=username)
for code in ["view_ticket", "claim_ticket", "change_ticket"]:
user.user_permissions.add(Permission.objects.get(codename=code, content_type__app_label="tickets"))
return user
@@ -122,14 +129,17 @@ def test_bale_ticket_excerpt_is_compact_and_whitespace_normalized(category,custo
def test_ticket_full_delete_requires_manager_permission_and_denies_sales_expert(category, customer):
ticket = create_ticket(customer=customer, category=category, subject="حذف پرونده", body="متن اولیه")
expert = User.objects.create_user(username="delete-expert", mobile="09120000003", account_type="STAFF")
StaffProfile.objects.create(user=expert, display_name="کارشناس", role=StaffProfile.Role.SALES_EXPERT)
StaffProfile.objects.create(user=expert, primary_unit=category.unit, display_name="کارشناس", role=StaffProfile.Role.SALES_EXPERT)
expert.user_permissions.add(Permission.objects.get(codename="delete_ticket", content_type__app_label="tickets"))
with pytest.raises(PermissionDenied):
delete_ticket(ticket_id=ticket.pk, user=expert)
manager = User.objects.create_user(username="delete-manager", mobile="09120000004", account_type="STAFF")
StaffProfile.objects.create(user=manager, display_name="مدیر", role=StaffProfile.Role.SALES_MANAGER)
StaffProfile.objects.create(user=manager, primary_unit=category.unit, display_name="مدیر", role=StaffProfile.Role.SALES_MANAGER)
for codename in ("delete_ticket", "view_all_tickets"):
manager.user_permissions.add(Permission.objects.get(codename=codename, content_type__app_label="tickets"))
manager.unit_memberships.get(unit=category.unit).permissions.add(
Permission.objects.get(codename="delete_ticket", content_type__app_label="tickets")
)
delete_ticket(ticket_id=ticket.pk, user=manager)
assert not Ticket.objects.filter(pk=ticket.pk).exists()
assert not NotificationJob.objects.filter(ticket_id=ticket.pk).exists()