fix queue
This commit is contained in:
1 parent
049cc41afc
commit
9a1c99cbd3
14 files changed
+237
-32
No files matched your search
+14
-4
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user