From f020127ad7faaf7cd7f4eca18789f5a40d779d79 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Fri, 31 Jul 2015 15:59:00 +0200 Subject: [PATCH] DATAREST-631 - Polishing. Moved just introduced test case into PersistentEntityToJsonSchemaConverterUnitTests. Added ticket reference. Removed obsolete test case. Original pull request: #190. --- ...tEntityToJsonSchemaConverterUnitTests.java | 18 ++- ...SchemaConverterWithExposedIdUnitTests.java | 134 ------------------ 2 files changed, 15 insertions(+), 137 deletions(-) delete mode 100644 spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterWithExposedIdUnitTests.java diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java index 0b6aa76b4..ea77899ce 100644 --- a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java +++ b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java @@ -25,7 +25,6 @@ import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Configuration; @@ -67,8 +66,11 @@ public class PersistentEntityToJsonSchemaConverterUnitTests { @Override protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { + config.metadataConfiguration().registerJsonSchemaFormat(JsonSchemaFormat.EMAIL, EmailAddress.class); config.metadataConfiguration().registerFormattingPatternFor("[A-Z]+", TypeWithPattern.class); + + config.exposeIdsFor(Profile.class); } } @@ -131,13 +133,23 @@ public class PersistentEntityToJsonSchemaConverterUnitTests { assertConstraints(User.class, constraints); } + /** + * @see DATAREST-631 + */ + @Test + public void fulfilsConstraintsForProfile() { + + List constraints = new ArrayList(); + constraints.add(new Constraint("$.properties.id", is(notNullValue()), "Has descriptor for id property")); + + assertConstraints(Profile.class, constraints); + } + @SuppressWarnings("unchecked") private void assertConstraints(Class type, Iterable constraints) { String writeSchemaFor = writeSchemaFor(type); - System.out.println(writeSchemaFor); - for (Constraint constraint : constraints) { try { diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterWithExposedIdUnitTests.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterWithExposedIdUnitTests.java deleted file mode 100644 index 66d29ad2b..000000000 --- a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterWithExposedIdUnitTests.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2014-2015 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.rest.webmvc.json; - -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.List; - -import org.hamcrest.Matcher; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.context.support.MessageSourceAccessor; -import org.springframework.data.mapping.context.PersistentEntities; -import org.springframework.data.rest.core.config.RepositoryRestConfiguration; -import org.springframework.data.rest.core.mapping.RepositoryResourceMappings; -import org.springframework.data.rest.webmvc.TestMvcClient; -import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter; -import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration; -import org.springframework.data.rest.webmvc.json.PersistentEntityToJsonSchemaConverterWithExposedIdUnitTests.TestConfiguration; -import org.springframework.data.rest.webmvc.mongodb.MongoDbRepositoryConfig; -import org.springframework.data.rest.webmvc.mongodb.Profile; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.jayway.jsonpath.JsonPath; - -/** - * Separate test case for {@link PersistentEntityToJsonSchemaConverter} where ids are exposed via - * {@link RepositoryRestConfigurerAdapter} - * - * @author Greg Turnquist - */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { MongoDbRepositoryConfig.class, TestConfiguration.class }) -public class PersistentEntityToJsonSchemaConverterWithExposedIdUnitTests { - - @Autowired MessageSourceAccessor accessor; - @Autowired RepositoryResourceMappings mappings; - @Autowired RepositoryRestConfiguration configuration; - @Autowired PersistentEntities entities; - @Autowired @Qualifier("objectMapper") ObjectMapper objectMapper; - - @Configuration - @Import(RepositoryRestMvcConfiguration.class) - static class TestConfiguration extends RepositoryRestConfigurerAdapter { - - @Override - public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { - config.exposeIdsFor(clazzForTesting); - } - } - - PersistentEntityToJsonSchemaConverter converter; - - private static Class clazzForTesting = Profile.class; - - @Before - public void setUp() { - - TestMvcClient.initWebTest(); - - converter = new PersistentEntityToJsonSchemaConverter(entities, mappings, accessor, objectMapper, configuration); - } - - @Test - public void fulfilsConstraintsForProfile() { - - List constraints = new ArrayList(); - constraints.add(new Constraint("$.properties.id", is(notNullValue()), "Has descriptor for id property")); - - assertConstraints(clazzForTesting, constraints); - } - - @SuppressWarnings("unchecked") - private void assertConstraints(Class type, Iterable constraints) { - - String writeSchemaFor = writeSchemaFor(type); - - for (Constraint constraint : constraints) { - - try { - assertThat(constraint.description, JsonPath.read(writeSchemaFor, constraint.selector), constraint.matcher); - } catch (RuntimeException e) { - assertThat(e, constraint.matcher); - } - } - } - - private String writeSchemaFor(Class type) { - - try { - return objectMapper.writeValueAsString(converter.convert(type)); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } - } - - @SuppressWarnings("rawtypes") - private static class Constraint { - - String selector; - Matcher matcher; - String description; - - public Constraint(String selector, Matcher matcher, String description) { - this.selector = selector; - this.matcher = matcher; - this.description = description; - } - } -}