refactor: Complete exportScheduleTemplate2 delegation to ScheduleExportService

Phase 2 Complete:
- Update MartialScheduleServiceImpl.exportScheduleTemplate2 to delegate
- Reduce method from 40 lines to 3 lines (delegation only)
- Add 4 comprehensive unit tests for exportScheduleTemplate2
- All tests passing (477 total)

Delegation Status:
 exportSchedule - FULLY DELEGATED
 exportScheduleTemplate2 - FULLY DELEGATED (NEW)

Remaining: 8 methods to delegate
Next: Phase 3 - Dispatch Service methods
This commit is contained in:
2026-01-18 12:53:49 +08:00
parent 4e0a8bdde1
commit 704c99942a
10 changed files with 84 additions and 39 deletions
@@ -7,6 +7,7 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springblade.modules.martial.excel.ScheduleExportExcel;
import org.springblade.modules.martial.excel.ScheduleExportExcel2;
import org.springblade.modules.martial.service.*;
import java.util.ArrayList;
@@ -20,14 +21,7 @@ import static org.mockito.Mockito.*;
* MartialScheduleServiceImpl Test
* Following Google Testing Best Practices
*
* IMPORTANT NOTE:
* This service is only PARTIALLY refactored. Most methods still use Mappers directly.
* Only exportSchedule() is fully delegated to ScheduleExportService.
*
* Other methods (saveDraftSchedule, saveAndLockSchedule, adjustOrder, saveDispatch, etc.)
* still contain business logic and Mapper calls - they need further refactoring.
*
* This test focuses on what IS delegated, not what SHOULD BE delegated.
* Phase 2 Complete: exportSchedule and exportScheduleTemplate2 fully delegated
*/
@DisplayName("MartialScheduleServiceImpl - Delegation Tests")
class MartialScheduleServiceImplTest {
@@ -107,4 +101,84 @@ class MartialScheduleServiceImplTest {
verify(scheduleExportService, times(1)).exportSchedule(competitionId);
verifyNoMoreInteractions(scheduleExportService);
}
// ========== Phase 2: exportScheduleTemplate2 Tests ==========
@Test
@DisplayName("Should delegate exportScheduleTemplate2 to ScheduleExportService")
void shouldDelegateExportScheduleTemplate2ToService() {
// Given
Long competitionId = 1L;
Long venueId = 2L;
List<ScheduleExportExcel2> expectedResult = Arrays.asList(
new ScheduleExportExcel2(),
new ScheduleExportExcel2(),
new ScheduleExportExcel2()
);
when(scheduleExportService.exportScheduleTemplate2(competitionId, venueId))
.thenReturn(expectedResult);
// When
List<ScheduleExportExcel2> result = scheduleService.exportScheduleTemplate2(competitionId, venueId);
// Then
assertNotNull(result);
assertEquals(3, result.size());
verify(scheduleExportService).exportScheduleTemplate2(competitionId, venueId);
}
@Test
@DisplayName("Should handle null venueId in exportScheduleTemplate2")
void shouldHandleNullVenueIdInExportScheduleTemplate2() {
// Given
Long competitionId = 1L;
List<ScheduleExportExcel2> expectedResult = Arrays.asList(
new ScheduleExportExcel2()
);
when(scheduleExportService.exportScheduleTemplate2(competitionId, null))
.thenReturn(expectedResult);
// When
List<ScheduleExportExcel2> result = scheduleService.exportScheduleTemplate2(competitionId, null);
// Then
assertNotNull(result);
assertEquals(1, result.size());
verify(scheduleExportService).exportScheduleTemplate2(competitionId, null);
}
@Test
@DisplayName("Should handle empty result in exportScheduleTemplate2")
void shouldHandleEmptyResultInExportScheduleTemplate2() {
// Given
Long competitionId = 1L;
Long venueId = 2L;
when(scheduleExportService.exportScheduleTemplate2(competitionId, venueId))
.thenReturn(new ArrayList<>());
// When
List<ScheduleExportExcel2> result = scheduleService.exportScheduleTemplate2(competitionId, venueId);
// Then
assertNotNull(result);
assertTrue(result.isEmpty());
verify(scheduleExportService).exportScheduleTemplate2(competitionId, venueId);
}
@Test
@DisplayName("Should verify exportScheduleTemplate2 is called exactly once")
void shouldVerifyExportScheduleTemplate2CalledOnce() {
// Given
Long competitionId = 1L;
Long venueId = 2L;
when(scheduleExportService.exportScheduleTemplate2(competitionId, venueId))
.thenReturn(new ArrayList<>());
// When
scheduleService.exportScheduleTemplate2(competitionId, venueId);
// Then
verify(scheduleExportService, times(1)).exportScheduleTemplate2(competitionId, venueId);
verifyNoMoreInteractions(scheduleExportService);
}
}