Mam problem mockując repozytorium partHistoryRepository
. wykonujac metode findRestrictedIdentifiers
zawsze zwraca mi null
a, podejrzewam, że to wina sposobu w jaki przekazuje parametry. Ale kompletnie nie widze tu błędu.
public FindResultDto<VehicleDeliveryNotePartHistoryDto> getVehicleDeliveryNoteParts(SearchDto searchDto, VehicleDeliveryNotesCriteriaDto criteriaDto) {
PageRequest pageRequest = PageRequest.of(searchDto.getPage(), searchDto.getLimit().intValue());
Page<BigInteger> page;
String vins = CollectionUtils.isNullOrEmpty(criteriaDto.getVins()) ? null : String.join(",", criteriaDto.getVins());
if (Boolean.TRUE.equals(criteriaDto.getRestrictedParts())) {
page = partHistoryRepository.findRestrictedIdentifiers(vins, criteriaDto.getBuyerName(), criteriaDto.getStartDate(), criteriaDto.getEndDate(), SettingsService.getRestrictedPartDays(), pageRequest);
} else {
page = partHistoryRepository.findNotRestrictedIdentifiers(vins, criteriaDto.getBuyerName(), criteriaDto.getStartDate(), criteriaDto.getEndDate(), SettingsService.getRestrictedPartDays(), pageRequest);
}
List<Long> identifiers = page.getContent().stream()
.map(BigInteger::longValue)
.toList();
List<VehicleDeliveryNotePartHistoryDto> partsHistory = partHistoryRepository.findAllByPartIdentifierIn(identifiers).stream()
.map(partHistoryMapper::mapEntityToDto)
.filter(p -> criteriaDto.getVdi4081Code() == null || p.getVdi4081Code().equals(criteriaDto.getVdi4081Code()))
.collect(Collectors.groupingBy(VehicleDeliveryNotePartHistoryDto::getPartIdentifier))
.entrySet().stream()
.map(this::collectHistoryData)
.toList();
return FindResultDto.<VehicleDeliveryNotePartHistoryDto>builder()
.totalCount(page.getTotalElements())
.count((long) page.getNumberOfElements())
.startElement(searchDto.getLimit() * searchDto.getPage())
.results(partsHistory)
.build();
}
oraz test
@Test
public void testGetVehicleDeliveryNoteParts() {
// for
SearchDto searchDto = SearchDto.builder().limit(50L)
.page(0).build();
VehicleDeliveryNotesCriteriaDto criteriaDto = VehicleDeliveryNotesCriteriaDto.builder()
.vins(List.of("123"))
.restrictedParts(true).build();
// mock
try (MockedStatic<RestrictedVdi4081Utils> utilities = Mockito.mockStatic(RestrictedVdi4081Utils.class)) {
utilities.when(() -> RestrictedVdi4081Utils.isCodeRestricted("123"))
.thenReturn(true);
}
Page<BigInteger> mockPage = new PageImpl<>(List.of(BigInteger.ONE, BigInteger.TWO));
when(partHistoryRepository.findRestrictedIdentifiers(anyString(), eq(criteriaDto.getBuyerName()), eq(criteriaDto.getStartDate()), eq(criteriaDto.getEndDate()), anyInt(), any())).thenReturn(mockPage);
when(partHistoryRepository.findAllByPartIdentifierIn(mockPage.getContent().stream().map(BigInteger::longValue).toList()))
.thenReturn(getPartsHistory());
FindResultDto<VehicleDeliveryNotePartHistoryDto> result = getVehicleDeliveryNoteService().getVehicleDeliveryNoteParts(searchDto, criteriaDto);
// Sprawdzenie oczekiwanego zachowania
assertEquals(3, result.getTotalCount());
assertEquals(3, result.getCount());
}
I jeszcze zamockowany statyczny serwis
private static MockedStatic<SettingsService> utilities;
@BeforeAll
public static void init() {
utilities = Mockito.mockStatic(SettingsService.class);
}
@AfterAll
public static void close() {
utilities.close();
}
```java
.