56 lines
1.8 KiB
Python
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)
|