package com.guo.learningprogresstracker.service.impl; import com.baomidou.mybatisplus.core.MybatisConfiguration; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.guo.learningprogresstracker.dto.request.CreateTaskApplicationRequest; import com.guo.learningprogresstracker.entity.TaskApplicationEntity; import com.guo.learningprogresstracker.entity.TaskEntity; import com.guo.learningprogresstracker.enums.TaskApplicationStatusEnum; import com.guo.learningprogresstracker.mapper.TaskApplicationMapper; import com.guo.learningprogresstracker.mapper.TasksMapper; import org.apache.ibatis.builder.MapperBuilderAssistant; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class TasksServiceImplTest { @BeforeAll static void initTableInfo() { MybatisConfiguration configuration = new MybatisConfiguration(); TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), TaskEntity.class); TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), TaskApplicationEntity.class); } @InjectMocks private TasksServiceImpl tasksService; @Mock private TasksMapper tasksMapper; @Mock private TaskApplicationMapper taskApplicationMapper; @Test void createApplication_shouldUseDefaultStatusWhenStatusInvalid() throws Exception { when(tasksMapper.exists(any())).thenReturn(true); when(taskApplicationMapper.insert(any())).thenAnswer(invocation -> { TaskApplicationEntity entity = invocation.getArgument(0); entity.setId(7); return 1; }); CreateTaskApplicationRequest request = new CreateTaskApplicationRequest(); request.setTaskNum("T1"); request.setTitle("Build a demo"); request.setStatus("invalid"); TaskApplicationEntity entity = tasksService.createApplication(request); assertEquals(7, entity.getId()); assertEquals(TaskApplicationStatusEnum.TODO.getCode(), entity.getStatus()); verify(taskApplicationMapper).insert(any(TaskApplicationEntity.class)); } }