diff --git a/src/main/java/clap/server/application/service/statistics/FindTaskProcessService.java b/src/main/java/clap/server/application/service/statistics/FindTaskProcessService.java index ef1364f2..8707ec3b 100644 --- a/src/main/java/clap/server/application/service/statistics/FindTaskProcessService.java +++ b/src/main/java/clap/server/application/service/statistics/FindTaskProcessService.java @@ -14,7 +14,7 @@ @ApplicationService @RequiredArgsConstructor @Transactional(readOnly = true) -class FindTaskProcessService implements FindTaskProcessUsecase { +public class FindTaskProcessService implements FindTaskProcessUsecase { private final TaskDocumentPort taskDocumentPort; private final TaskStatisticsPolicy taskStatisticsPolicy; diff --git a/src/main/java/clap/server/domain/policy/task/TaskStatisticsPolicy.java b/src/main/java/clap/server/domain/policy/task/TaskStatisticsPolicy.java index 67106ccb..57b6a427 100644 --- a/src/main/java/clap/server/domain/policy/task/TaskStatisticsPolicy.java +++ b/src/main/java/clap/server/domain/policy/task/TaskStatisticsPolicy.java @@ -12,7 +12,7 @@ @Policy public class TaskStatisticsPolicy { - private static final String DISPLAY_FORMAT = "MM월 dd일"; + private static final String DISPLAY_FORMAT = "M월 d일"; public Map filterAndFormatWeekdayStatistics(Map statistics) { return statistics.entrySet().stream() diff --git a/src/test/java/clap/server/application/statistics/FindTaskProcessServiceTest.java b/src/test/java/clap/server/application/statistics/FindTaskProcessServiceTest.java new file mode 100644 index 00000000..0212a3db --- /dev/null +++ b/src/test/java/clap/server/application/statistics/FindTaskProcessServiceTest.java @@ -0,0 +1,128 @@ +package clap.server.application.statistics; + +import clap.server.adapter.inbound.web.dto.statistics.StatisticsResponse; +import clap.server.application.port.outbound.task.TaskDocumentPort; +import clap.server.application.service.statistics.FindTaskProcessService; +import clap.server.domain.policy.task.TaskStatisticsPolicy; +import org.junit.jupiter.api.DisplayName; +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 java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class FindTaskProcessServiceTest { + @Mock + private TaskDocumentPort taskDocumentPort; + @Mock + private TaskStatisticsPolicy taskStatisticsPolicy; + @InjectMocks + private FindTaskProcessService findTaskProcessService; + + @Test + @DisplayName("카테고리별 요청량") + void aggregateCategoryTaskRequest() { + //given + Map statistics = new TreeMap<>(); + statistics.put("VM", 6L); + statistics.put("KS", 7L); + statistics.put("DN", 8L); + + when(taskDocumentPort.findCategoryTaskRequestByPeriod(eq("week"))).thenReturn(statistics); + + //when + List week = findTaskProcessService.aggregateCategoryTaskRequest("week"); + + //then + assertThat(week.get(0).key()).isEqualTo("DN"); + assertThat(week.get(0).count()).isEqualTo(8L); + assertThat(week.get(1).key()).isEqualTo("KS"); + assertThat(week.get(1).count()).isEqualTo(7L); + assertThat(week.get(2).key()).isEqualTo("VM"); + assertThat(week.get(2).count()).isEqualTo(6L); + } + + @Test + @DisplayName("담당자별 처리량") + void aggregateManagerTaskProcess() { + //given + Map statistics = new TreeMap<>(); + statistics.put("log.d", 6L); + statistics.put("tony.tsx", 7L); + statistics.put("moya.moya", 8L); + + when(taskDocumentPort.findManagerTaskProcessByPeriod(eq("week"))).thenReturn(statistics); + + //when + List week = findTaskProcessService.aggregateManagerTaskProcess("week"); + + //then + assertThat(week.get(0).key()).isEqualTo("log.d"); + assertThat(week.get(0).count()).isEqualTo(6L); + assertThat(week.get(1).key()).isEqualTo("moya.moya"); + assertThat(week.get(1).count()).isEqualTo(8L); + assertThat(week.get(2).key()).isEqualTo("tony.tsx"); + assertThat(week.get(2).count()).isEqualTo(7L); + } + + @Test + @DisplayName("기간별 처리량") + void aggregatePeriodTaskProcess() { + //given + Map statistics = new TreeMap<>(); + statistics.put("2025-02-01", 8L); + statistics.put("2025-01-30", 7L); + statistics.put("2025-01-31", 6L); + + when(taskDocumentPort.findPeriodTaskProcessByPeriod(eq("week"))).thenReturn(statistics); + + Map formattedStatistics = new TreeMap<>(); + formattedStatistics.put("1월 30일", 7L); + formattedStatistics.put("1월 31일", 6L); + when(taskStatisticsPolicy.filterAndFormatWeekdayStatistics(statistics)).thenReturn(formattedStatistics); + + //when + List week = findTaskProcessService.aggregatePeriodTaskProcess("week"); + + //then + assertThat(week.get(0).key()).isEqualTo("1월 30일"); + assertThat(week.get(0).count()).isEqualTo(7L); + assertThat(week.get(1).key()).isEqualTo("1월 31일"); + assertThat(week.get(1).count()).isEqualTo(6L); + } + + @Test + @DisplayName("기간별 요청량") + void aggregatePeriodTaskRequest() { + //given + Map statistics = new TreeMap<>(); + statistics.put("2025-02-01", 8L); + statistics.put("2025-01-30", 7L); + statistics.put("2025-01-31", 6L); + + when(taskDocumentPort.findPeriodTaskRequestByPeriod(eq("week"))).thenReturn(statistics); + + Map formattedStatistics = new TreeMap<>(); + formattedStatistics.put("1월 30일", 7L); + formattedStatistics.put("1월 31일", 6L); + when(taskStatisticsPolicy.filterAndFormatWeekdayStatistics(statistics)).thenReturn(formattedStatistics); + + //when + List week = findTaskProcessService.aggregatePeriodTaskRequest("week"); + + //then + assertThat(week.get(0).key()).isEqualTo("1월 30일"); + assertThat(week.get(0).count()).isEqualTo(7L); + assertThat(week.get(1).key()).isEqualTo("1월 31일"); + assertThat(week.get(1).count()).isEqualTo(6L); + } +} \ No newline at end of file diff --git a/src/test/java/clap/server/domain/policy/task/TaskStatisticsPolicyTest.java b/src/test/java/clap/server/domain/policy/task/TaskStatisticsPolicyTest.java new file mode 100644 index 00000000..0b6e1694 --- /dev/null +++ b/src/test/java/clap/server/domain/policy/task/TaskStatisticsPolicyTest.java @@ -0,0 +1,31 @@ +package clap.server.domain.policy.task; + +import org.junit.jupiter.api.Test; + +import java.util.Map; +import java.util.TreeMap; + +import static org.assertj.core.api.Assertions.assertThat; + +class TaskStatisticsPolicyTest { + private final TaskStatisticsPolicy taskStatisticsPolicy = new TaskStatisticsPolicy(); + + @Test + void filterAndFormatWeekdayStatistics() { + //given + Map statistics = new TreeMap<>(); + statistics.put("2025-02-01", 8L); + statistics.put("2025-01-30", 7L); + statistics.put("2025-01-31", 6L); + + Map formattedStatistics = new TreeMap<>(); + formattedStatistics.put("1월 30일", 7L); + formattedStatistics.put("1월 31일", 6L); + + //when + Map weekdayStatistics = taskStatisticsPolicy.filterAndFormatWeekdayStatistics(statistics); + + //then + assertThat(weekdayStatistics).isEqualTo(formattedStatistics); + } +} \ No newline at end of file