Skip to content
This repository has been archived by the owner on May 26, 2020. It is now read-only.

Commit

Permalink
use ObjectFactory to build integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
amckenzie committed Nov 27, 2017
1 parent 149f0ca commit 88aa70b
Show file tree
Hide file tree
Showing 6 changed files with 215 additions and 57 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
package uk.gov.justice.schema.catalog.generation;

import uk.gov.justice.schema.catalog.CatalogLoader;
import uk.gov.justice.schema.catalog.CatalogToSchemaResolver;
import uk.gov.justice.schema.catalog.ClasspathCatalogLoader;
import uk.gov.justice.schema.catalog.FileContentsAsStringLoader;
import uk.gov.justice.schema.catalog.JsonSchemaFileLoader;
import uk.gov.justice.schema.catalog.JsonStringToSchemaConverter;
import uk.gov.justice.schema.catalog.SchemaResolver;
import uk.gov.justice.schema.catalog.SchemaResolverAndLoader;
import uk.gov.justice.schema.catalog.util.ClasspathResourceLoader;
import uk.gov.justice.schema.catalog.util.UriResolver;
import uk.gov.justice.schema.catalog.util.UrlConverter;
import uk.gov.justice.schema.client.SchemaClientFactory;
import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer;

import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down Expand Up @@ -41,4 +52,55 @@ public CatalogGenerationRunner catalogGenerationRunner() {
catalogWriter(),
urlConverter());
}

public UriResolver uriResolver() {
return new UriResolver();
}

public JsonStringToSchemaConverter jsonStringToSchemaConverter() {
return new JsonStringToSchemaConverter();
}

public ClasspathResourceLoader classpathResourceLoader() {
return new ClasspathResourceLoader();
}

public SchemaResolverAndLoader schemaResolverAndLoader() {
return new SchemaResolverAndLoader(jsonStringToSchemaConverter());
}

public ClasspathCatalogLoader classpathCatalogLoader() {
return new ClasspathCatalogLoader(
objectMapper(),
classpathResourceLoader(),
urlConverter());
}

public SchemaResolver schemaResolver() {
return new SchemaResolver(urlConverter(), uriResolver());
}

public CatalogToSchemaResolver catalogToSchemaResolver() {
return new CatalogToSchemaResolver(classpathCatalogLoader(), schemaResolver());
}

public FileContentsAsStringLoader fileContentsAsStringLoader() {
return new FileContentsAsStringLoader();
}

public JsonSchemaFileLoader jsonSchemaFileLoader() {
return new JsonSchemaFileLoader(fileContentsAsStringLoader());
}

public SchemaClientFactory schemaClientFactory() {
return new SchemaClientFactory();
}

public CatalogLoader catalogLoader() {
return new CatalogLoader(
schemaResolverAndLoader(),
catalogToSchemaResolver(),
jsonSchemaFileLoader(),
schemaClientFactory());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,18 @@
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;

import uk.gov.justice.schema.catalog.CatalogLoader;
import uk.gov.justice.schema.catalog.CatalogToSchemaResolver;
import uk.gov.justice.schema.catalog.ClasspathCatalogLoader;
import uk.gov.justice.schema.catalog.FileContentsAsStringLoader;
import uk.gov.justice.schema.catalog.JsonSchemaFileLoader;
import uk.gov.justice.schema.catalog.JsonStringToSchemaConverter;
import uk.gov.justice.schema.catalog.SchemaResolver;
import uk.gov.justice.schema.catalog.SchemaResolverAndLoader;
import uk.gov.justice.schema.catalog.util.ClasspathResourceLoader;
import uk.gov.justice.schema.catalog.util.UriResolver;
import uk.gov.justice.schema.catalog.util.UrlConverter;
import uk.gov.justice.schema.client.SchemaClientFactory;

import java.lang.reflect.Field;

Expand Down Expand Up @@ -42,7 +53,7 @@ public void shouldCreateACatalogWriter() throws Exception {
final CatalogWriter catalogWriter = objectFactory.catalogWriter();
assertThat(catalogWriter, is(notNullValue()));

final Object objectMapper = getPrivateField("objectMapper", catalogWriter);
final ObjectMapper objectMapper = getPrivateField("objectMapper", catalogWriter, ObjectMapper.class);
assertThat(objectMapper, is(notNullValue()));
}

Expand All @@ -52,7 +63,7 @@ public void shouldCreateASchemaIdParser() throws Exception {
final SchemaIdParser schemaIdParser = objectFactory.schemaIdParser();
assertThat(schemaIdParser, is(notNullValue()));

final Object urlConverter = getPrivateField("urlConverter", schemaIdParser);
final UrlConverter urlConverter = getPrivateField("urlConverter", schemaIdParser, UrlConverter.class);
assertThat(urlConverter, is(notNullValue()));
}

Expand All @@ -62,7 +73,7 @@ public void shouldCreateACatalogObjectGenerator() throws Exception {
final CatalogObjectGenerator catalogObjectGenerator = objectFactory.catalogObjectGenerator();
assertThat(catalogObjectGenerator, is(notNullValue()));

final Object schemaDefParser = getPrivateField("schemaDefParser", catalogObjectGenerator);
final SchemaDefParser schemaDefParser = getPrivateField("schemaDefParser", catalogObjectGenerator, SchemaDefParser.class);
assertThat(schemaDefParser, is(notNullValue()));
}

Expand All @@ -72,7 +83,7 @@ public void shouldCreateASchemaDefParser() throws Exception {
final SchemaDefParser schemaDefParser = objectFactory.schemaDefParser();
assertThat(schemaDefParser, is(notNullValue()));

final Object schemaIdParser = getPrivateField("schemaIdParser", schemaDefParser);
final SchemaIdParser schemaIdParser = getPrivateField("schemaIdParser", schemaDefParser, SchemaIdParser.class);
assertThat(schemaIdParser, is(notNullValue()));
}

Expand All @@ -82,21 +93,138 @@ public void shouldCreateACatalogGenerationRunner() throws Exception {
final CatalogGenerationRunner catalogGenerationRunner = objectFactory.catalogGenerationRunner();
assertThat(catalogGenerationRunner, is(notNullValue()));

final Object catalogObjectGenerator = getPrivateField("catalogObjectGenerator", catalogGenerationRunner);
final CatalogObjectGenerator catalogObjectGenerator = getPrivateField("catalogObjectGenerator", catalogGenerationRunner, CatalogObjectGenerator.class);
assertThat(catalogObjectGenerator, is(notNullValue()));

final Object catalogWriter = getPrivateField("catalogWriter", catalogGenerationRunner);
final CatalogWriter catalogWriter = getPrivateField("catalogWriter", catalogGenerationRunner, CatalogWriter.class);
assertThat(catalogWriter, is(notNullValue()));

final Object urlConverter = getPrivateField("urlConverter", catalogGenerationRunner);
final UrlConverter urlConverter = getPrivateField("urlConverter", catalogGenerationRunner, UrlConverter.class);
assertThat(urlConverter, is(notNullValue()));
}

private Object getPrivateField(final String fieldName, final Object fromThisObject) throws Exception {
@Test
public void shouldCreateAUriResolver() throws Exception {

final UriResolver uriResolver = objectFactory.uriResolver();
assertThat(uriResolver, is(notNullValue()));
}

@Test
public void shouldCreateAJsonStringToSchemaConverter() throws Exception {

final JsonStringToSchemaConverter jsonStringToSchemaConverter = objectFactory.jsonStringToSchemaConverter();
assertThat(jsonStringToSchemaConverter, is(notNullValue()));
}

@Test
public void shouldCreateAClasspathResourceLoader() throws Exception {

final ClasspathResourceLoader classpathResourceLoader = objectFactory.classpathResourceLoader();
assertThat(classpathResourceLoader, is(notNullValue()));
}

@Test
public void shouldCreateASchemaResolverAndLoader() throws Exception {

final SchemaResolverAndLoader schemaResolverAndLoader = objectFactory.schemaResolverAndLoader();
assertThat(schemaResolverAndLoader, is(notNullValue()));

final JsonStringToSchemaConverter jsonStringToSchemaConverter = getPrivateField("jsonStringToSchemaConverter", schemaResolverAndLoader, JsonStringToSchemaConverter.class);
assertThat(jsonStringToSchemaConverter, is(notNullValue()));
}

@Test
public void shouldCreateAClasspathCatalogLoader() throws Exception {

final ClasspathCatalogLoader classpathCatalogLoader = objectFactory.classpathCatalogLoader();
assertThat(classpathCatalogLoader, is(notNullValue()));

final ObjectMapper objectMapper = getPrivateField("objectMapper", classpathCatalogLoader, ObjectMapper.class);
assertThat(objectMapper, is(notNullValue()));

final ClasspathResourceLoader classpathResourceLoader = getPrivateField("classpathResourceLoader", classpathCatalogLoader, ClasspathResourceLoader.class);
assertThat(classpathResourceLoader, is(notNullValue()));

final UrlConverter urlConverter = getPrivateField("urlConverter", classpathCatalogLoader, UrlConverter.class);
assertThat(urlConverter, is(notNullValue()));
}

@Test
public void shouldCreateASchemaResolver() throws Exception {

final SchemaResolver schemaResolver = objectFactory.schemaResolver();
assertThat(schemaResolver, is(notNullValue()));

final UrlConverter urlConverter = getPrivateField("urlConverter", schemaResolver, UrlConverter.class);
assertThat(urlConverter, is(notNullValue()));

final UriResolver uriResolver = getPrivateField("uriResolver", schemaResolver, UriResolver.class);
assertThat(uriResolver, is(notNullValue()));
}

@Test
public void shouldCreateCatalogToSchemaResolver() throws Exception {

final CatalogToSchemaResolver catalogToSchemaResolver = objectFactory.catalogToSchemaResolver();
assertThat(catalogToSchemaResolver, is(notNullValue()));

final ClasspathCatalogLoader classpathCatalogLoader = getPrivateField("classpathCatalogLoader", catalogToSchemaResolver, ClasspathCatalogLoader.class);
assertThat(classpathCatalogLoader, is(notNullValue()));

final SchemaResolver schemaResolver = getPrivateField("schemaResolver", catalogToSchemaResolver, SchemaResolver.class);
assertThat(schemaResolver, is(notNullValue()));
}

@Test
public void shouldCreateAFileContentsAsStringLoader() throws Exception {

final FileContentsAsStringLoader fileContentsAsStringLoader = objectFactory.fileContentsAsStringLoader();
assertThat(fileContentsAsStringLoader, is(notNullValue()));
}

@Test
public void shouldCreateAJsonSchemaFileLoader() throws Exception {

final JsonSchemaFileLoader jsonSchemaFileLoader = objectFactory.jsonSchemaFileLoader();
assertThat(jsonSchemaFileLoader, is(notNullValue()));

final FileContentsAsStringLoader fileContentsAsStringLoader = getPrivateField("fileContentsAsStringLoader", jsonSchemaFileLoader, FileContentsAsStringLoader.class);
assertThat(fileContentsAsStringLoader, is(notNullValue()));
}

@Test
public void shouldCreateASchemaClientFactory() throws Exception {

final SchemaClientFactory schemaClientFactory = objectFactory.schemaClientFactory();
assertThat(schemaClientFactory, is(notNullValue()));
}

@Test
public void shouldCreateACatalogLoader() throws Exception {

final CatalogLoader catalogLoader = objectFactory.catalogLoader();
assertThat(catalogLoader, is(notNullValue()));

final SchemaResolverAndLoader schemaResolverAndLoader = getPrivateField("schemaResolverAndLoader", catalogLoader, SchemaResolverAndLoader.class);
assertThat(schemaResolverAndLoader, is(notNullValue()));

final CatalogToSchemaResolver catalogToSchemaResolver = getPrivateField("catalogToSchemaResolver", catalogLoader, CatalogToSchemaResolver.class);
assertThat(catalogToSchemaResolver, is(notNullValue()));

final JsonSchemaFileLoader jsonSchemaFileLoader = getPrivateField("jsonSchemaFileLoader", catalogLoader, JsonSchemaFileLoader.class);
assertThat(jsonSchemaFileLoader, is(notNullValue()));

final SchemaClientFactory schemaClientFactory = getPrivateField("schemaClientFactory", catalogLoader, SchemaClientFactory.class);
assertThat(schemaClientFactory, is(notNullValue()));
}

@SuppressWarnings("unchecked")
private <T> T getPrivateField(final String fieldName, final Object fromThisObject, @SuppressWarnings("unused") final Class<T> clazz) throws Exception {

final Field field = fromThisObject.getClass().getDeclaredField(fieldName);
field.setAccessible(true);

return field.get(fromThisObject);
return (T) field.get(fromThisObject);
}
}
6 changes: 6 additions & 0 deletions integration-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.gov.justice.schema</groupId>
<artifactId>catalog-generation</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.gov.justice.utils</groupId>
<artifactId>utilities-core</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,38 +4,16 @@
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import uk.gov.justice.schema.catalog.util.ClasspathResourceLoader;
import uk.gov.justice.schema.catalog.util.UriResolver;
import uk.gov.justice.schema.catalog.util.UrlConverter;
import uk.gov.justice.schema.client.SchemaClientFactory;
import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer;
import uk.gov.justice.schema.catalog.generation.ObjectFactory;

import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.everit.json.schema.Schema;
import org.junit.Test;

public class CatalogLoaderIT {

private final FileContentsAsStringLoader fileContentsAsStringLoader = new FileContentsAsStringLoader();
private final JsonStringToSchemaConverter jsonStringToSchemaConverter = new JsonStringToSchemaConverter();
private final SchemaResolverAndLoader schemaResolverAndLoader = new SchemaResolverAndLoader(jsonStringToSchemaConverter);
private final ObjectMapper objectMapper = new ObjectMapperProducer().objectMapper();
private final UrlConverter urlConverter = new UrlConverter();
private final UriResolver uriResolver = new UriResolver();
private final ClasspathResourceLoader classpathResourceLoader = new ClasspathResourceLoader();
private final ClasspathCatalogLoader classpathCatalogLoader = new ClasspathCatalogLoader(objectMapper, classpathResourceLoader, urlConverter);
private final SchemaResolver schemaResolver = new SchemaResolver(urlConverter, uriResolver);
private final CatalogToSchemaResolver catalogToSchemaResolver = new CatalogToSchemaResolver(classpathCatalogLoader, schemaResolver);
private final JsonSchemaFileLoader jsonSchemaFileLoader = new JsonSchemaFileLoader(fileContentsAsStringLoader);
private final SchemaClientFactory schemaClientFactory = new SchemaClientFactory();

private final CatalogLoader catalogLoader = new CatalogLoader(
schemaResolverAndLoader,
catalogToSchemaResolver,
jsonSchemaFileLoader,
schemaClientFactory);
private final CatalogLoader catalogLoader = new ObjectFactory().catalogLoader();

@Test
public void shouldMapSchemasOnClasspathToTheirIds() throws Exception {
Expand Down
6 changes: 6 additions & 0 deletions schema-example-context/example-integration-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.gov.justice.schema</groupId>
<artifactId>catalog-generation</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.gov.justice.utils</groupId>
<artifactId>utilities-core</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,16 @@
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import uk.gov.justice.schema.catalog.util.ClasspathResourceLoader;
import uk.gov.justice.schema.catalog.util.UriResolver;
import uk.gov.justice.schema.catalog.util.UrlConverter;
import uk.gov.justice.schema.client.SchemaClientFactory;
import uk.gov.justice.services.common.converter.jackson.ObjectMapperProducer;
import uk.gov.justice.schema.catalog.generation.ObjectFactory;

import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.everit.json.schema.Schema;
import org.junit.Test;

public class ExampleCatalogLoaderIT {

private final FileContentsAsStringLoader fileContentsAsStringLoader = new FileContentsAsStringLoader();
private final JsonStringToSchemaConverter jsonStringToSchemaConverter = new JsonStringToSchemaConverter();
private final SchemaResolverAndLoader schemaResolverAndLoader = new SchemaResolverAndLoader(jsonStringToSchemaConverter);
private final ObjectMapper objectMapper = new ObjectMapperProducer().objectMapper();
private final UrlConverter urlConverter = new UrlConverter();
private final UriResolver uriResolver = new UriResolver();
private final ClasspathResourceLoader classpathResourceLoader = new ClasspathResourceLoader();
private final ClasspathCatalogLoader classpathCatalogLoader = new ClasspathCatalogLoader(objectMapper, classpathResourceLoader, urlConverter);
private final SchemaResolver schemaResolver = new SchemaResolver(urlConverter, uriResolver);
private final CatalogToSchemaResolver catalogToSchemaResolver = new CatalogToSchemaResolver(classpathCatalogLoader, schemaResolver);
private final JsonSchemaFileLoader jsonSchemaFileLoader = new JsonSchemaFileLoader(fileContentsAsStringLoader);
private final SchemaClientFactory schemaClientFactory = new SchemaClientFactory();

private final CatalogLoader catalogLoader = new CatalogLoader(
schemaResolverAndLoader,
catalogToSchemaResolver,
jsonSchemaFileLoader,
schemaClientFactory);
private final CatalogLoader catalogLoader = new ObjectFactory().catalogLoader();

@Test
public void shouldMapSchemasOnClasspathToTheirIds2() throws Exception {
Expand Down

0 comments on commit 88aa70b

Please sign in to comment.