@Test public void testArguments() throws Exception { List<String> args = new ArrayList<>(3); args.add(ARG1); args.add(ARG2); args.add(ARG3); ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class); when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(), this.pageRequestContainer.capture())).thenReturn(this.page); RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository) .sorts(this.sorts) .maxItemCount(5) .methodName("foo") .name("bar") .arguments(args) .build(); String result = (String) reader.read(); verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result); }
@Test public void testRepositoryMethodReferenceWithArgs() throws Exception { RepositoryItemReaderBuilder.RepositoryMethodReference<TestRepository> repositoryMethodReference = new RepositoryItemReaderBuilder.RepositoryMethodReference<>(this.repository); repositoryMethodReference.methodIs().foo(ARG1, ARG2, ARG3, null); RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>() .repository(repositoryMethodReference) .sorts(this.sorts) .maxItemCount(5) .name("bar").build(); ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class); when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(), this.pageRequestContainer.capture())).thenReturn(this.page); String result = (String) reader.read(); assertEquals("Result returned from reader was not expected value.", TEST_CONTENT, result); verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result); }
@Test public void testVarargArguments() throws Exception { ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg2Captor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> arg3Captor = ArgumentCaptor.forClass(String.class); when(this.repository.foo(arg1Captor.capture(), arg2Captor.capture(), arg3Captor.capture(), this.pageRequestContainer.capture())).thenReturn(this.page); RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository) .sorts(this.sorts) .maxItemCount(5) .methodName("foo") .name("bar") .arguments(ARG1, ARG2, ARG3) .build(); String result = (String) reader.read(); verifyMultiArgRead(arg1Captor, arg2Captor, arg3Captor, result); }
@Test public void testRepositoryMethodReference() throws Exception { RepositoryItemReaderBuilder.RepositoryMethodReference<TestRepository> repositoryMethodReference = new RepositoryItemReaderBuilder.RepositoryMethodReference<>(this.repository); repositoryMethodReference.methodIs().foo(null); RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>() .repository(repositoryMethodReference) .sorts(this.sorts) .maxItemCount(5) .name("bar").build(); String result = (String) reader.read(); assertEquals("Result returned from reader was not expected value.", TEST_CONTENT, result); assertEquals("page size was not expected value.", 10, this.pageRequestContainer.getValue().getPageSize()); }
@Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); this.sorts = new HashMap<>(); this.sorts.put("id", Sort.Direction.ASC); this.pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); List<String> testResult = new ArrayList<>(); testResult.add(TEST_CONTENT); when(page.getContent()).thenReturn(testResult); when(page.getSize()).thenReturn(5); when(this.repository.foo(this.pageRequestContainer.capture())).thenReturn(this.page); }