DATAREST-1064 - Adapt to API changes in repository interfaces.

Additional cleanups in QuerydslAwareRootResourceInformationHandlerMethodArgumentResolver to make sure a QuerydslRepositoryInvokerAdapter is only applied if the QuerydslPredicateBuilder actually exposes a predicate. Extracted a couple of methods to make sure the mapping pipeline reads nicely.
This commit is contained in:
Oliver Gierke
2017-05-03 17:22:54 +02:00
parent 632ca25998
commit f906695e7a
26 changed files with 104 additions and 89 deletions

View File

@@ -71,7 +71,7 @@ public class MongoWebTests extends CommonWebTests {
linkedIn.setPerson(1L);
linkedIn.setType("LinkedIn");
repository.save(Arrays.asList(twitter, linkedIn));
repository.saveAll(Arrays.asList(twitter, linkedIn));
Address address = new Address();
address.street = "ETagDoesntMatchExceptionUnitTests";
@@ -288,7 +288,7 @@ public class MongoWebTests extends CommonWebTests {
Profile profile = repository.findAll().iterator().next();
Link link = client.discoverUnique("profiles", "search", "findById");
Link link = client.discoverUnique("profiles", "search", "findProfileById");
mvc.perform(get(link.expand(profile.getId()).getHref())).//
andExpect(status().isOk());
@@ -297,7 +297,7 @@ public class MongoWebTests extends CommonWebTests {
@Test // DATAREST-517
public void returnsNotFoundIfQueryExecutionDoesNotReturnResult() throws Exception {
Link link = client.discoverUnique("profiles", "search", "findById");
Link link = client.discoverUnique("profiles", "search", "findProfileById");
mvc.perform(get(link.expand("").getHref())).//
andExpect(status().isNotFound());
@@ -319,7 +319,7 @@ public class MongoWebTests extends CommonWebTests {
@Test // DATAREST-835
public void exposesETagHeaderForSearchResourceYieldingItemResource() throws Exception {
Link link = client.discoverUnique("profiles", "search", "findById");
Link link = client.discoverUnique("profiles", "search", "findProfileById");
Profile profile = repository.findAll().iterator().next();

View File

@@ -16,6 +16,7 @@
package org.springframework.data.rest.webmvc.config;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
@@ -29,7 +30,6 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.core.MethodParameter;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.querydsl.QuerydslRepositoryInvokerAdapter;
import org.springframework.data.querydsl.SimpleEntityPathResolver;
@@ -47,6 +47,8 @@ import org.springframework.data.rest.tests.mongodb.ReceiptRepository;
import org.springframework.data.rest.tests.mongodb.User;
import org.springframework.test.util.ReflectionTestUtils;
import com.querydsl.core.types.Predicate;
/**
* Unit tests for {@link QuerydslAwareRootResourceInformationHandlerMethodArgumentResolver}.
*
@@ -60,6 +62,7 @@ public class QuerydslAwareRootResourceInformationHandlerMethodArgumentResolverUn
@Mock Repositories repositories;
@Mock RepositoryInvokerFactory invokerFactory;
@Mock ResourceMetadataHandlerMethodArgumentResolver resourceMetadataResolver;
@Mock QuerydslPredicateBuilder builder;
@Mock RepositoryInvoker invoker;
@Mock MethodParameter parameter;
@@ -71,12 +74,11 @@ public class QuerydslAwareRootResourceInformationHandlerMethodArgumentResolverUn
QuerydslBindingsFactory factory = new QuerydslBindingsFactory(SimpleEntityPathResolver.INSTANCE);
ReflectionTestUtils.setField(factory, "repositories", Optional.of(repositories));
QuerydslPredicateBuilder builder = new QuerydslPredicateBuilder(new DefaultConversionService(),
factory.getEntityPathResolver());
this.resolver = new QuerydslAwareRootResourceInformationHandlerMethodArgumentResolver(repositories, invokerFactory,
resourceMetadataResolver, builder, factory);
when(builder.getPredicate(any(), any(), any())).thenReturn(mock(Predicate.class));
when(parameter.hasParameterAnnotation(QuerydslPredicate.class)).thenReturn(true);
}