I am trying to test paging for the following service method in a Java (Spring Boot) app:
@Override
public Page<PermissionDTO> findAll(PermissionCriteriaRequest request, Sort sort) {
final Page<Permission> permissions = repository.findAll(request, sort);
final List<PermissionDTO> permissionDTOs = permissions.getContent().stream().map(PermissionDTO::new)
.collect(Collectors.toList());
return new PageImpl<>(permissionDTOs, permissions.getPageable(), permissions.getTotalElements());
}
Here is my unit test method; here I set page to 1 and set size to 1 so that I get only one record for the first page. However, it returns all the 5 records and the PermissionCriteriaRequest
parameters do not make any sense. I think the problem is related to when(permissionRepository.findAll(request, null)).thenReturn(permissionPage)
because I set it to return all the 5 records. So, is it possible to test paging properly? Or is it meaningless under these circumstances?
@Test
public void test_findAll() {
final Permission permission1 = new Permission();
permission1.setName("Permission1");
final Permission permission2 = new Permission();
permission2.setName("Permission2");
final Permission permission3 = new Permission();
permission3.setName("Permission3");
final Permission permission4 = new Permission();
permission4.setName("Permission4");
final Permission permission5 = new Permission();
permission5.setName("Permission5");
final List<Permission> permissionList = new ArrayList<>();
permissionList.add(permission1);
permissionList.add(permission2);
permissionList.add(permission3);
permissionList.add(permission4);
permissionList.add(permission5);
final Page<Permission> permissionPage = new PageImpl<>(permissionList);
// here I set paging parameters
final PermissionCriteriaRequest request = new PermissionCriteriaRequest();
request.setNameFilter("Permission");
request.setPaginated(true);
request.setPage(1);
request.setSize(1);
when(permissionRepository.findAll(request, null)).thenReturn(permissionPage);
Page<PermissionDTO> result = permissionService.findAll(request, null);
assertEquals(permissionList.size(), result.getSize());
}
Update: Here is my repository code:
default Page<T> findAll(PageableCriteriaRequest criteriaRequest, Sort sort) {
final SearchSpecificationBuilder<T> builder =
new SearchSpecificationBuilder<>(criteriaRequest.getSearchCriteriaList());
return findAll(builder.build(), getPageable(criteriaRequest, sort));
}