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)