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

+45 -8
View File
@@ -23,12 +23,16 @@ def test_customer_detail_is_forbidden_to_other_customer(client):
@pytest.mark.django_db
def test_locked_public_ticket_only_leaks_metadata(client):
category = TicketCategory.objects.create(title="قیمت", slug="test-locked-price")
unit = OrganizationalUnit.objects.create(name="فروش قفل‌شده", slug="locked-sales")
unit.permissions.add(
Permission.objects.get(content_type__app_label="tickets", codename="view_ticket")
)
category = TicketCategory.objects.create(unit=unit, title="قیمت", slug="test-locked-price")
customer = User.objects.create_user(username="customer", mobile="09123333333", account_type="CUSTOMER")
expert = User.objects.create_user(username="expert", mobile="09124444444", account_type="STAFF")
observer = User.objects.create_user(username="observer", mobile="09125555555", account_type="STAFF")
StaffProfile.objects.create(user=expert, display_name="کارشناس اول")
StaffProfile.objects.create(user=observer, display_name="کارشناس دوم")
StaffProfile.objects.create(user=expert, primary_unit=unit, display_name="کارشناس اول")
StaffProfile.objects.create(user=observer, primary_unit=unit, display_name="کارشناس دوم")
for user in (expert, observer):
for code in ("view_ticket", "claim_ticket"):
user.user_permissions.add(Permission.objects.get(content_type__app_label="tickets", codename=code))
@@ -36,7 +40,7 @@ def test_locked_public_ticket_only_leaks_metadata(client):
claim_ticket(ticket.pk, expert)
client.force_login(observer)
listing = client.get(reverse("staff_tickets:list"))
assert normalize_persian_text("موضوع قابل مشاهده") in listing.content.decode()
assert normalize_persian_text("موضوع قابل مشاهده") not in listing.content.decode()
assert "محتوای محرمانه" not in listing.content.decode()
assert client.get(reverse("staff_tickets:detail", args=[ticket.public_id])).status_code == 403
@@ -70,11 +74,13 @@ def test_staff_filters_keep_selected_values_and_active_tab(client):
@pytest.mark.django_db
def test_staff_desk_prioritizes_fresh_actionable_activity_and_renders_distinct_statuses(client):
category=TicketCategory.objects.create(title="پیگیری فروش",slug="staff-priority-order")
unit=OrganizationalUnit.objects.create(name="فروش اولویت",slug="priority-sales")
unit.permissions.add(Permission.objects.get(content_type__app_label="tickets",codename="view_ticket"))
category=TicketCategory.objects.create(unit=unit,title="پیگیری فروش",slug="staff-priority-order")
customer=User.objects.create_user(username="priority-customer",mobile="09130000010",account_type="CUSTOMER")
CustomerProfile.objects.create(user=customer,first_name="مشتری",last_name="نمونه")
expert=User.objects.create_user(username="priority-expert",mobile="09130000011",account_type="STAFF")
StaffProfile.objects.create(user=expert,display_name="کارشناس اولویت")
StaffProfile.objects.create(user=expert,primary_unit=unit,display_name="کارشناس اولویت")
expert.user_permissions.add(Permission.objects.get(content_type__app_label="tickets",codename="view_ticket"))
waiting_customer=create_ticket(customer=customer,category=category,subject="منتظر پاسخ مشتری",body="شرح اول")
fresh_customer_reply=create_ticket(customer=customer,category=category,subject="پاسخ تازه مشتری",body="شرح دوم")
@@ -224,6 +230,32 @@ def test_staff_sidebar_hides_admin_link_and_shows_developer_credit(client):
assert "برنامه نویسی و توسعه: محمد جواد فصاحت" in content
assert "09202202129" in content
assert "واحد فناوری اطلاعات" not in content
assert "الگوهای پیامک" not in content
assert reverse("staff_tickets:sms_templates") not in content
@pytest.mark.django_db
def test_root_redirects_to_login_or_authenticated_workspace(client):
response = client.get("/")
assert response.status_code == 302
assert response.url == reverse("accounts:login")
customer = User.objects.create_user(
username="root-customer", mobile="09120000991", account_type="CUSTOMER"
)
client.force_login(customer)
assert client.get("/").url == reverse("tickets:list")
staff = User.objects.create_user(
username="root-staff", mobile="09120000992", account_type="STAFF"
)
StaffProfile.objects.create(user=staff, display_name="کارشناس ریشه")
client.force_login(staff)
assert client.get("/").url == reverse("staff_tickets:list")
@pytest.mark.django_db
def test_admin_is_only_mounted_at_private_path(client):
assert reverse("admin:index") == "/x5admin/"
assert client.get("/admin/").status_code == 404
@pytest.mark.django_db
def test_customer_can_set_password_and_login(client):
@@ -266,10 +298,15 @@ def test_magic_link_is_reusable_for_seven_days_and_only_grants_one_ticket(client
@pytest.mark.django_db
def test_ticket_polling_is_versioned_incremental_and_permission_safe(client):
category=TicketCategory.objects.create(title="Polling",slug="polling")
unit=OrganizationalUnit.objects.create(name="فروش Polling",slug="polling-sales")
unit.permissions.add(
Permission.objects.get(content_type__app_label="tickets",codename="view_ticket"),
Permission.objects.get(content_type__app_label="messaging",codename="add_message"),
)
category=TicketCategory.objects.create(unit=unit,title="Polling",slug="polling")
customer=User.objects.create_user(username="poll-customer",mobile="09129990001",account_type="CUSTOMER")
expert=User.objects.create_user(username="poll-expert",mobile="09129990002",account_type="STAFF")
StaffProfile.objects.create(user=expert,display_name="کارشناس پولینگ")
StaffProfile.objects.create(user=expert,primary_unit=unit,display_name="کارشناس پولینگ")
expert.user_permissions.add(Permission.objects.get(content_type__app_label="tickets",codename="view_ticket"))
ticket=create_ticket(customer=customer,category=category,subject="بررسی پاسخ تازه",body="پیام نخست")
client.force_login(customer)