help-desk/backend/helpdesk/tests/test_repositories.py

56 lines
1.8 KiB
Python

from django.test import TestCase
from django.contrib.auth import get_user_model
from django.utils import timezone
from helpdesk.repositories.ticket_repository import TicketRepository
from helpdesk.models import Ticket, TicketStatus
UserModel = get_user_model()
class TicketRepositoryTest(TestCase):
def setUp(self):
self.repo = TicketRepository()
# สร้าง Users
self.creator = UserModel.objects.create_user(
username='repo_creator',
email='repo_creator@test.com',
password='p'
)
self.assigned_user = UserModel.objects.create_user(
username='repo_assignee',
email='repo_assignee@test.com',
password='p'
)
# สร้าง Tickets
self.ticket1 = Ticket.objects.create(
creator=self.creator,
assigned_to=self.assigned_user,
title="Test Ticket 1",
last_message_at=timezone.now(),
last_message_content="Initial message 1",
status=TicketStatus.OPEN,
is_read=True,
)
self.ticket2 = Ticket.objects.create(
creator=self.creator,
title="Test Ticket 2",
last_message_at=timezone.now(),
last_message_content="Initial message 2",
status=TicketStatus.OPEN,
is_read=True,
)
def test_get_unified_inbox_list_uses_select_related(self):
"""ตรวจสอบว่าการ Query ใช้ select_related() เพื่อลดจำนวน Query (แก้ปัญหา N+1)"""
with self.assertNumQueries(1):
tickets = list(self.repo.get_unified_inbox_list())
for ticket in tickets:
_ = ticket.creator.username
self.assertEqual(len(tickets), 2)