|
15 | 15 | */
|
16 | 16 | package org.springframework.batch.item.data;
|
17 | 17 |
|
18 |
| -import static org.junit.Assert.assertEquals; |
19 |
| -import static org.junit.Assert.assertFalse; |
20 |
| -import static org.junit.Assert.assertNull; |
21 |
| -import static org.junit.Assert.assertTrue; |
22 |
| -import static org.junit.Assert.fail; |
23 |
| -import static org.mockito.Mockito.when; |
24 |
| - |
25 |
| -import java.util.ArrayList; |
26 |
| -import java.util.HashMap; |
27 |
| -import java.util.Map; |
28 |
| - |
29 | 18 | import org.junit.Before;
|
30 | 19 | import org.junit.Test;
|
31 | 20 | import org.mockito.ArgumentCaptor;
|
32 | 21 | import org.mockito.Mock;
|
33 | 22 | import org.mockito.MockitoAnnotations;
|
34 | 23 | import org.springframework.batch.item.adapter.DynamicMethodInvocationException;
|
| 24 | +import org.springframework.data.domain.Page; |
35 | 25 | import org.springframework.data.domain.PageImpl;
|
36 | 26 | import org.springframework.data.domain.PageRequest;
|
37 | 27 | import org.springframework.data.domain.Pageable;
|
38 | 28 | import org.springframework.data.domain.Sort;
|
39 | 29 | import org.springframework.data.domain.Sort.Direction;
|
40 | 30 | import org.springframework.data.repository.PagingAndSortingRepository;
|
41 | 31 |
|
| 32 | +import java.util.ArrayList; |
| 33 | +import java.util.HashMap; |
| 34 | +import java.util.Map; |
| 35 | + |
| 36 | +import static org.junit.Assert.assertEquals; |
| 37 | +import static org.junit.Assert.assertFalse; |
| 38 | +import static org.junit.Assert.assertNull; |
| 39 | +import static org.junit.Assert.assertTrue; |
| 40 | +import static org.junit.Assert.fail; |
| 41 | +import static org.mockito.Mockito.when; |
| 42 | +import static org.mockito.Mockito.mock; |
| 43 | + |
42 | 44 | public class RepositoryItemReaderTests {
|
43 | 45 |
|
44 | 46 | private RepositoryItemReader<Object> reader;
|
@@ -205,4 +207,33 @@ public void testInvalidMethodName() throws Exception {
|
205 | 207 | assertTrue(dmie.getCause() instanceof NoSuchMethodException);
|
206 | 208 | }
|
207 | 209 | }
|
| 210 | + |
| 211 | + @Test |
| 212 | + public void testDifferentTypes() throws Exception { |
| 213 | + TestRepository differentRepository = mock(TestRepository.class); |
| 214 | + RepositoryItemReader<String> reader = new RepositoryItemReader<String>(); |
| 215 | + sorts = new HashMap<String, Sort.Direction>(); |
| 216 | + sorts.put("id", Direction.ASC); |
| 217 | + reader.setRepository(differentRepository); |
| 218 | + reader.setPageSize(1); |
| 219 | + reader.setSort(sorts); |
| 220 | + reader.setMethodName("findFirstNames"); |
| 221 | + |
| 222 | + ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); |
| 223 | + when(differentRepository.findFirstNames(pageRequestContainer.capture())).thenReturn(new PageImpl<String>(new ArrayList<String>(){{ |
| 224 | + add("result"); |
| 225 | + }})); |
| 226 | + |
| 227 | + assertEquals("result", reader.doRead()); |
| 228 | + |
| 229 | + Pageable pageRequest = pageRequestContainer.getValue(); |
| 230 | + assertEquals(0, pageRequest.getOffset()); |
| 231 | + assertEquals(0, pageRequest.getPageNumber()); |
| 232 | + assertEquals(1, pageRequest.getPageSize()); |
| 233 | + assertEquals("id: ASC", pageRequest.getSort().toString()); |
| 234 | + } |
| 235 | + |
| 236 | + public static interface TestRepository extends PagingAndSortingRepository<Map, Long> { |
| 237 | + Page<String> findFirstNames(Pageable pageable); |
| 238 | + } |
208 | 239 | }
|
0 commit comments