55import com .back .fixture .MemberFixture ;
66import com .back .fixture .mentoring .MentoringSessionFixture ;
77import org .junit .jupiter .api .DisplayName ;
8+ import org .junit .jupiter .api .Nested ;
89import org .junit .jupiter .api .Test ;
910
1011import java .time .LocalDateTime ;
1112
1213import static org .assertj .core .api .Assertions .assertThat ;
13-
14- import org .junit .jupiter .api .Nested ;
15-
1614import static org .junit .jupiter .api .Assertions .assertThrows ;
1715
1816class ChatMessageTest {
1917 @ Test
2018 @ DisplayName ("ChatMessage 생성 테스트" )
21- void createChatMessageTest (){
19+ void createChatMessageTest () {
2220 // given
2321 MentoringSession session = MentoringSessionFixture .createDefault ();
24- Member sender = MemberFixture . createDefault ();
22+ Member sender = session . getReservation (). getMentor (). getMember ();
2523 String content = "Hello world" ;
2624 SenderRole senderRole = SenderRole .MENTOR ;
2725 MessageType type = MessageType .TEXT ;
@@ -121,5 +119,19 @@ void createUserMessageWithInvalidRole_shouldThrowException() {
121119 assertThrows (IllegalArgumentException .class , () ->
122120 ChatMessage .create (MentoringSessionFixture .createDefault (), MemberFixture .createDefault (), SenderRole .SYSTEM , "user message" , MessageType .TEXT ));
123121 }
122+
123+ @ Test
124+ @ DisplayName ("메시지 발신자가 멘토링 참여자가 아니면 예외가 발생한다" )
125+ void createWithNonParticipantSender_shouldThrowException () {
126+ // given
127+ MentoringSession session = MentoringSessionFixture .createDefault ();
128+ Member nonParticipant =
MemberFixture .
create (
99L ,
"[email protected] " ,
"외부인" ,
"password" ,
Member .
Role .
MENTEE );
129+
130+ // when & then
131+ IllegalArgumentException exception = assertThrows (IllegalArgumentException .class , () ->
132+ ChatMessage .create (session , nonParticipant , SenderRole .MENTOR , "some message" , MessageType .TEXT ));
133+
134+ assertThat (exception .getMessage ()).isEqualTo ("메시지 발신자는 해당 멘토링 세션의 참여자가 아닙니다." );
135+ }
124136 }
125137}
0 commit comments