1+ package clap .server .application .statistics ;
2+
3+ import clap .server .adapter .inbound .web .dto .statistics .StatisticsResponse ;
4+ import clap .server .application .port .outbound .task .TaskDocumentPort ;
5+ import clap .server .application .service .statistics .FindTaskProcessService ;
6+ import clap .server .domain .policy .task .TaskStatisticsPolicy ;
7+ import org .junit .jupiter .api .DisplayName ;
8+ import org .junit .jupiter .api .Test ;
9+ import org .junit .jupiter .api .extension .ExtendWith ;
10+ import org .mockito .InjectMocks ;
11+ import org .mockito .Mock ;
12+ import org .mockito .junit .jupiter .MockitoExtension ;
13+
14+ import java .util .List ;
15+ import java .util .Map ;
16+ import java .util .TreeMap ;
17+
18+ import static org .assertj .core .api .Assertions .assertThat ;
19+ import static org .mockito .ArgumentMatchers .eq ;
20+ import static org .mockito .Mockito .when ;
21+
22+ @ ExtendWith (MockitoExtension .class )
23+ class FindTaskProcessServiceTest {
24+ @ Mock
25+ private TaskDocumentPort taskDocumentPort ;
26+ @ Mock
27+ private TaskStatisticsPolicy taskStatisticsPolicy ;
28+ @ InjectMocks
29+ private FindTaskProcessService findTaskProcessService ;
30+
31+ @ Test
32+ @ DisplayName ("카테고리별 요청량" )
33+ void aggregateCategoryTaskRequest () {
34+ //given
35+ Map <String , Long > statistics = new TreeMap <>();
36+ statistics .put ("VM" , 6L );
37+ statistics .put ("KS" , 7L );
38+ statistics .put ("DN" , 8L );
39+
40+ when (taskDocumentPort .findCategoryTaskRequestByPeriod (eq ("week" ))).thenReturn (statistics );
41+
42+ //when
43+ List <StatisticsResponse > week = findTaskProcessService .aggregateCategoryTaskRequest ("week" );
44+
45+ //then
46+ assertThat (week .get (0 ).key ()).isEqualTo ("DN" );
47+ assertThat (week .get (0 ).count ()).isEqualTo (8L );
48+ assertThat (week .get (1 ).key ()).isEqualTo ("KS" );
49+ assertThat (week .get (1 ).count ()).isEqualTo (7L );
50+ assertThat (week .get (2 ).key ()).isEqualTo ("VM" );
51+ assertThat (week .get (2 ).count ()).isEqualTo (6L );
52+ }
53+
54+ @ Test
55+ @ DisplayName ("담당자별 처리량" )
56+ void aggregateManagerTaskProcess () {
57+ //given
58+ Map <String , Long > statistics = new TreeMap <>();
59+ statistics .put ("log.d" , 6L );
60+ statistics .put ("tony.tsx" , 7L );
61+ statistics .put ("moya.moya" , 8L );
62+
63+ when (taskDocumentPort .findManagerTaskProcessByPeriod (eq ("week" ))).thenReturn (statistics );
64+
65+ //when
66+ List <StatisticsResponse > week = findTaskProcessService .aggregateManagerTaskProcess ("week" );
67+
68+ //then
69+ assertThat (week .get (0 ).key ()).isEqualTo ("log.d" );
70+ assertThat (week .get (0 ).count ()).isEqualTo (6L );
71+ assertThat (week .get (1 ).key ()).isEqualTo ("moya.moya" );
72+ assertThat (week .get (1 ).count ()).isEqualTo (8L );
73+ assertThat (week .get (2 ).key ()).isEqualTo ("tony.tsx" );
74+ assertThat (week .get (2 ).count ()).isEqualTo (7L );
75+ }
76+
77+ @ Test
78+ @ DisplayName ("기간별 처리량" )
79+ void aggregatePeriodTaskProcess () {
80+ //given
81+ Map <String , Long > statistics = new TreeMap <>();
82+ statistics .put ("2025-02-01" , 8L );
83+ statistics .put ("2025-01-30" , 7L );
84+ statistics .put ("2025-01-31" , 6L );
85+
86+ when (taskDocumentPort .findPeriodTaskProcessByPeriod (eq ("week" ))).thenReturn (statistics );
87+
88+ Map <String , Long > formattedStatistics = new TreeMap <>();
89+ formattedStatistics .put ("1월 30일" , 7L );
90+ formattedStatistics .put ("1월 31일" , 6L );
91+ when (taskStatisticsPolicy .filterAndFormatWeekdayStatistics (statistics )).thenReturn (formattedStatistics );
92+
93+ //when
94+ List <StatisticsResponse > week = findTaskProcessService .aggregatePeriodTaskProcess ("week" );
95+
96+ //then
97+ assertThat (week .get (0 ).key ()).isEqualTo ("1월 30일" );
98+ assertThat (week .get (0 ).count ()).isEqualTo (7L );
99+ assertThat (week .get (1 ).key ()).isEqualTo ("1월 31일" );
100+ assertThat (week .get (1 ).count ()).isEqualTo (6L );
101+ }
102+
103+ @ Test
104+ @ DisplayName ("기간별 요청량" )
105+ void aggregatePeriodTaskRequest () {
106+ //given
107+ Map <String , Long > statistics = new TreeMap <>();
108+ statistics .put ("2025-02-01" , 8L );
109+ statistics .put ("2025-01-30" , 7L );
110+ statistics .put ("2025-01-31" , 6L );
111+
112+ when (taskDocumentPort .findPeriodTaskRequestByPeriod (eq ("week" ))).thenReturn (statistics );
113+
114+ Map <String , Long > formattedStatistics = new TreeMap <>();
115+ formattedStatistics .put ("1월 30일" , 7L );
116+ formattedStatistics .put ("1월 31일" , 6L );
117+ when (taskStatisticsPolicy .filterAndFormatWeekdayStatistics (statistics )).thenReturn (formattedStatistics );
118+
119+ //when
120+ List <StatisticsResponse > week = findTaskProcessService .aggregatePeriodTaskRequest ("week" );
121+
122+ //then
123+ assertThat (week .get (0 ).key ()).isEqualTo ("1월 30일" );
124+ assertThat (week .get (0 ).count ()).isEqualTo (7L );
125+ assertThat (week .get (1 ).key ()).isEqualTo ("1월 31일" );
126+ assertThat (week .get (1 ).count ()).isEqualTo (6L );
127+ }
128+ }
0 commit comments