@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 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 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 testSettingCurrentItemCountExplicitly() throws Exception { reader.setCurrentItemCount(3); reader.setPageSize(2); PageRequest request = PageRequest.of(1, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add("3"); add("4"); }})); request = PageRequest.of(2, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add("5"); add("6"); }})); reader.open(new ExecutionContext()); Object result = reader.read(); assertEquals("3", result); assertEquals("4", reader.read()); assertEquals("5", reader.read()); assertEquals("6", reader.read()); }
@Test public void testResetOfPage() throws Exception { reader.setPageSize(2); PageRequest request = PageRequest.of(0, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add("1"); add("2"); }})); request = PageRequest.of(1, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add("3"); add("4"); }})); ExecutionContext executionContext = new ExecutionContext(); reader.open(executionContext); Object result = reader.read(); reader.close(); assertEquals("1", result); reader.open(executionContext); assertEquals("1", reader.read()); assertEquals("2", reader.read()); assertEquals("3", reader.read()); }
@Test public void testSettingCurrentItemCountRestart() throws Exception { reader.setCurrentItemCount(3); reader.setPageSize(2); PageRequest request = PageRequest.of(1, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add("3"); add("4"); }})); request = PageRequest.of(2, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add("5"); add("6"); }})); ExecutionContext executionContext = new ExecutionContext(); reader.open(executionContext); Object result = reader.read(); reader.update(executionContext); reader.close(); assertEquals("3", result); reader.open(executionContext); assertEquals("4", reader.read()); assertEquals("5", reader.read()); assertEquals("6", reader.read()); }
@Test public void testPageSize() throws Exception { RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository) .sorts(this.sorts) .maxItemCount(5) .methodName("foo") .name("bar") .pageSize(2) .build(); reader.read(); assertEquals("page size was not expected value.", 2, this.pageRequestContainer.getValue().getPageSize()); }
@Test public void testBasicRead() throws Exception { RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository) .sorts(this.sorts) .maxItemCount(5) .methodName("foo") .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()); }
@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()); }
@Test public void testCurrentItemCount() throws Exception { RepositoryItemReader<Object> reader = new RepositoryItemReaderBuilder<>().repository(this.repository) .sorts(this.sorts) .currentItemCount(6) .maxItemCount(5) .methodName("foo") .name("bar") .build(); assertNull("Result returned from reader was not null.", reader.read()); }