1616import clap .server .domain .model .task .Task ;
1717import clap .server .domain .model .task .TaskHistory ;
1818import clap .server .domain .policy .task .RequestedTaskUpdatePolicy ;
19+ import clap .server .exception .DomainException ;
20+ import clap .server .exception .code .TaskErrorCode ;
1921import org .junit .jupiter .api .BeforeEach ;
2022import org .junit .jupiter .api .DisplayName ;
2123import org .junit .jupiter .api .Test ;
2527import org .mockito .junit .jupiter .MockitoExtension ;
2628
2729import static org .assertj .core .api .Assertions .assertThat ;
30+ import static org .assertj .core .api .Assertions .assertThatThrownBy ;
2831import static org .mockito .Mockito .*;
2932
3033
@@ -45,7 +48,6 @@ class ApprovalTaskServiceTest {
4548
4649 @ Mock
4750 private LabelService labelService ;
48-
4951 @ Mock
5052 private RequestedTaskUpdatePolicy requestedTaskUpdatePolicy ;
5153
@@ -66,7 +68,7 @@ void setUp() {
6668 processor = TestDataFactory .createManager ();
6769 mainCategory = TestDataFactory .createMainCategory ();
6870 category = TestDataFactory .createCategory (mainCategory );
69- task = TestDataFactory .createTask ( 1L ,"TC001" , "제목1" , TaskStatus .REQUESTED , category , null , processor );
71+ task = TestDataFactory .createTask (1L , "TC001" , "제목1" , TaskStatus .REQUESTED , category , null , processor );
7072 }
7173
7274 @ Test
@@ -88,10 +90,27 @@ void approvalTask() {
8890
8991 //then
9092 assertThat (response ).isNotNull ();
91- assertThat (response .taskStatus ()).isEqualTo (TaskStatus .IN_PROGRESS );
9293 assertThat (response .taskId ()).isEqualTo (task .getTaskId ());
94+ assertThat (response .taskStatus ()).isEqualTo (TaskStatus .IN_PROGRESS );
9395 verify (requestedTaskUpdatePolicy ).validateTaskRequested (task );
94- verify (commandTaskHistoryPort , times (1 )).save (any (TaskHistory .class ));
9596 }
96- }
9797
98+ @ Test
99+ @ DisplayName ("작업 승인 처리 중 예외 - 상태 불일치" )
100+ void approvalTask_throwsDomainException_whenTaskStatusIsNotRequested () {
101+ //given
102+ Long reviewerId = 2L ;
103+ Long taskId = 1L ;
104+ ApprovalTaskRequest approvalTaskRequest = new ApprovalTaskRequest (2L , 2L , null , null );
105+ task = TestDataFactory .createTask (1L , "TC001" , "제목1" , TaskStatus .COMPLETED , category , null , processor );
106+ when (taskService .findById (taskId )).thenReturn (task );
107+
108+ //when
109+ doThrow (new DomainException (TaskErrorCode .TASK_STATUS_MISMATCH ))
110+ .when (requestedTaskUpdatePolicy ).validateTaskRequested (task );
111+ //then
112+ assertThatThrownBy (() -> approvalTaskService .approvalTaskByReviewer (reviewerId , taskId , approvalTaskRequest ))
113+ .isInstanceOf (DomainException .class )
114+ .hasMessage (TaskErrorCode .TASK_STATUS_MISMATCH .getMessage ());
115+ }
116+ }
0 commit comments