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

50 lines
1.9 KiB
Python

from django.test import TestCase
from django.contrib.auth import get_user_model
from chat.repositories.message_repository import MessageRepository
from helpdesk.models import Ticket # จำเป็นต้องสร้าง Ticket ก่อนสร้าง Message
from chat.models import Message
UserModel = get_user_model()
class MessageRepositoryTest(TestCase):
def setUp(self):
self.repo = MessageRepository()
self.user = UserModel.objects.create_user(
username='msg_user',
email='msg_user@test.com',
password='p'
)
self.ticket = Ticket.objects.create(
creator=self.user,
title="Test Ticket for Message",
)
def test_create_message_saves_data_correctly(self):
"""
WHEN: เรียก create_message ด้วย data ที่ถูกต้อง
THEN: Message ต้องถูกบันทึกใน DB และมี content ตรงตามที่ส่ง
"""
content = "Testing message content storage."
message_type = 'P' # Private Note
data = {
'ticket': self.ticket,
'sender': self.user,
'content': content,
'message_type': message_type
}
# ACT
new_message = self.repo.create_message(**data)
# ASSERT 1 ตรวจสอบว่า Message ถูกสร้างใน DB
self.assertIsNotNone(new_message.id)
self.assertEqual(Message.objects.count(), 1)
# ASSERT 2 ตรวจสอบความถูกต้องของข้อมูลที่ถูกบันทึก
retrieved_message = Message.objects.get(pk=new_message.id)
self.assertEqual(retrieved_message.content, content)
self.assertEqual(retrieved_message.message_type, message_type)
self.assertEqual(retrieved_message.ticket_id, self.ticket.id)