This repository has been archived by the owner on May 26, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add tests for schema pojo generator providers
- Loading branch information
Showing
16 changed files
with
377 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 24 additions & 3 deletions
27
pojo-generator-core/src/main/java/uk/gov/justice/generation/SchemaPojoGeneratorFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,42 @@ | ||
package uk.gov.justice.generation; | ||
|
||
import uk.gov.justice.generation.io.files.JavaFileSimpleNameLister; | ||
import uk.gov.justice.generation.io.files.loader.SchemaLoader; | ||
import uk.gov.justice.generation.pojo.plugin.PluginProviderFactoryFactory; | ||
import uk.gov.justice.generation.pojo.visitable.VisitableFactory; | ||
import uk.gov.justice.generation.pojo.visitable.acceptor.AcceptorService; | ||
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorService; | ||
import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory; | ||
import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor; | ||
import uk.gov.justice.generation.pojo.visitor.ReferenceValueParser; | ||
import uk.gov.justice.generation.pojo.write.JavaSourceFileProvider; | ||
import uk.gov.justice.generation.pojo.write.NonDuplicatingSourceWriter; | ||
import uk.gov.justice.generation.pojo.write.SourceWriter; | ||
import uk.gov.justice.maven.generator.io.files.parser.core.Generator; | ||
import uk.gov.justice.maven.generator.io.files.parser.core.GeneratorFactory; | ||
|
||
import java.io.File; | ||
|
||
public class SchemaPojoGeneratorFactory implements GeneratorFactory<File> { | ||
|
||
private final SchemaLoader schemaLoader = new SchemaLoader(); | ||
private final VisitableFactory visitableFactory = new VisitableFactory(); | ||
private final DefinitionBuilderVisitor definitionBuilderVisitor = new DefinitionBuilderVisitor(new DefaultDefinitionFactory(new ReferenceValueParser())); | ||
private final AcceptorService acceptorService = new DefaultAcceptorService(visitableFactory); | ||
|
||
private final JavaFileSimpleNameLister javaFileSimpleNameLister = new JavaFileSimpleNameLister(); | ||
|
||
private final SourceWriter sourceWriter = new SourceWriter(); | ||
private NonDuplicatingSourceWriter writer = new NonDuplicatingSourceWriter(new JavaSourceFileProvider(), sourceWriter); | ||
|
||
@Override | ||
public Generator<File> create() { | ||
return new SchemaPojoGenerator( | ||
new PluginProviderFactoryFactory().create(), | ||
new DefinitionProvider(), | ||
new GeneratorContextProvider(), | ||
new DefinitionProvider(schemaLoader, visitableFactory, definitionBuilderVisitor, acceptorService), | ||
new GeneratorContextProvider(javaFileSimpleNameLister), | ||
new ClassNameFactoryProvider(), | ||
new JavaGeneratorFactoryProvider(), | ||
new JavaClassFileWriter()); | ||
new JavaClassFileWriter(writer)); | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
...-generator-core/src/test/java/uk/gov/justice/generation/ClassNameFactoryProviderTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package uk.gov.justice.generation; | ||
|
||
import static org.hamcrest.CoreMatchers.is; | ||
import static org.hamcrest.CoreMatchers.notNullValue; | ||
import static org.junit.Assert.assertThat; | ||
import static org.mockito.Mockito.mock; | ||
import static uk.gov.justice.generation.utils.ReflectionUtil.fieldValue; | ||
|
||
import uk.gov.justice.generation.pojo.core.GenerationContext; | ||
import uk.gov.justice.generation.pojo.generators.ClassNameFactory; | ||
import uk.gov.justice.generation.pojo.plugin.PluginProvider; | ||
|
||
import org.junit.Test; | ||
|
||
public class ClassNameFactoryProviderTest { | ||
|
||
@Test | ||
public void shouldProvideClassNameFactory() throws Exception { | ||
final GenerationContext generationContext = mock(GenerationContext.class); | ||
final PluginProvider pluginProvider = mock(PluginProvider.class); | ||
|
||
final ClassNameFactory classNameFactory = new ClassNameFactoryProvider().getClassNameFactory(generationContext, pluginProvider); | ||
|
||
assertThat(classNameFactory, notNullValue()); | ||
|
||
final Object typeNameProvider = fieldValue(classNameFactory, "typeNameProvider"); | ||
assertThat(fieldValue(typeNameProvider, "generationContext"), is(generationContext)); | ||
|
||
final Object typeNamePluginProcessor = fieldValue(classNameFactory, "typeNamePluginProcessor"); | ||
assertThat(fieldValue(typeNamePluginProcessor, "pluginProvider"), is(pluginProvider)); | ||
} | ||
} |
73 changes: 73 additions & 0 deletions
73
pojo-generator-core/src/test/java/uk/gov/justice/generation/DefinitionProviderTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package uk.gov.justice.generation; | ||
|
||
import static org.hamcrest.core.Is.is; | ||
import static org.junit.Assert.assertThat; | ||
import static org.mockito.Mockito.mock; | ||
import static org.mockito.Mockito.when; | ||
|
||
import uk.gov.justice.generation.io.files.loader.SchemaLoader; | ||
import uk.gov.justice.generation.pojo.dom.Definition; | ||
import uk.gov.justice.generation.pojo.plugin.PluginProvider; | ||
import uk.gov.justice.generation.pojo.plugin.classmodifying.PluginContext; | ||
import uk.gov.justice.generation.pojo.plugin.namegeneratable.NameGeneratablePlugin; | ||
import uk.gov.justice.generation.pojo.visitable.Visitable; | ||
import uk.gov.justice.generation.pojo.visitable.VisitableFactory; | ||
import uk.gov.justice.generation.pojo.visitable.acceptor.AcceptorService; | ||
import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor; | ||
|
||
import java.io.File; | ||
import java.util.List; | ||
|
||
import org.everit.json.schema.Schema; | ||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
import org.mockito.runners.MockitoJUnitRunner; | ||
|
||
@RunWith(MockitoJUnitRunner.class) | ||
public class DefinitionProviderTest { | ||
|
||
@Mock | ||
private SchemaLoader schemaLoader; | ||
|
||
@Mock | ||
private VisitableFactory visitableFactory; | ||
|
||
@Mock | ||
private DefinitionBuilderVisitor definitionBuilderVisitor; | ||
|
||
@Mock | ||
private AcceptorService acceptorService; | ||
|
||
@InjectMocks | ||
private DefinitionProvider definitionProvider; | ||
|
||
@Test | ||
@SuppressWarnings("unchecked") | ||
public void shouldCreateDefinitions() throws Exception { | ||
final String fieldName = "fieldName"; | ||
final String schemaFilename = "schemaFilename"; | ||
|
||
final List<Definition> definitions = mock(List.class); | ||
final File schemaFile = mock(File.class); | ||
final Schema schema = mock(Schema.class); | ||
|
||
final PluginProvider pluginProvider = mock(PluginProvider.class); | ||
final PluginContext pluginContext = mock(PluginContext.class); | ||
final NameGeneratablePlugin nameGeneratablePlugin = mock(NameGeneratablePlugin.class); | ||
|
||
when(schemaLoader.loadFrom(schemaFile)).thenReturn(schema); | ||
when(pluginProvider.nameGeneratablePlugin()).thenReturn(nameGeneratablePlugin); | ||
|
||
when(schemaFile.getName()).thenReturn(schemaFilename); | ||
when(nameGeneratablePlugin.rootFieldNameFrom(schema, schemaFilename, pluginContext)).thenReturn(fieldName); | ||
|
||
when(visitableFactory.createWith(fieldName, schema, acceptorService)).thenReturn(mock(Visitable.class)); | ||
when(definitionBuilderVisitor.getDefinitions()).thenReturn(definitions); | ||
|
||
final List<Definition> result = definitionProvider.createDefinitions(schemaFile, pluginProvider, pluginContext); | ||
|
||
assertThat(result, is(definitions)); | ||
} | ||
} |
57 changes: 57 additions & 0 deletions
57
...-generator-core/src/test/java/uk/gov/justice/generation/GeneratorContextProviderTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package uk.gov.justice.generation; | ||
|
||
import static org.hamcrest.CoreMatchers.is; | ||
import static org.junit.Assert.assertThat; | ||
import static org.mockito.Mockito.mock; | ||
import static org.mockito.Mockito.when; | ||
|
||
import uk.gov.justice.generation.io.files.JavaFileSimpleNameLister; | ||
import uk.gov.justice.generation.pojo.core.GenerationContext; | ||
import uk.gov.justice.maven.generator.io.files.parser.core.GeneratorConfig; | ||
|
||
import java.io.File; | ||
import java.nio.file.Path; | ||
import java.util.List; | ||
|
||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
import org.mockito.runners.MockitoJUnitRunner; | ||
|
||
@RunWith(MockitoJUnitRunner.class) | ||
public class GeneratorContextProviderTest { | ||
|
||
@Mock | ||
private JavaFileSimpleNameLister javaFileSimpleNameLister; | ||
|
||
@InjectMocks | ||
private GeneratorContextProvider generatorContextProvider; | ||
|
||
@Test | ||
@SuppressWarnings("unchecked") | ||
public void shouldProvideGeneratorContext() throws Exception { | ||
final String packageName = "package.name"; | ||
final String schemaFilename = "schemaFilename"; | ||
final Path outputDirectory = mock(Path.class); | ||
final List<String> hardCodedClassNames = mock(List.class); | ||
|
||
final List<Path> sourcePaths = mock(List.class); | ||
final File schemaFile = mock(File.class); | ||
final GeneratorConfig generatorConfig = mock(GeneratorConfig.class); | ||
|
||
when(generatorConfig.getSourcePaths()).thenReturn(sourcePaths); | ||
when(generatorConfig.getOutputDirectory()).thenReturn(outputDirectory); | ||
when(generatorConfig.getBasePackageName()).thenReturn(packageName); | ||
when(javaFileSimpleNameLister.findSimpleNames(sourcePaths, outputDirectory, packageName)).thenReturn(hardCodedClassNames); | ||
|
||
when(schemaFile.getName()).thenReturn(schemaFilename); | ||
|
||
final GenerationContext generationContext = generatorContextProvider.getGenerationContext(schemaFile, generatorConfig); | ||
|
||
assertThat(generationContext.getPackageName(), is(packageName)); | ||
assertThat(generationContext.getOutputDirectoryPath(), is(outputDirectory)); | ||
assertThat(generationContext.getSourceFilename(), is(schemaFilename)); | ||
assertThat(generationContext.getIgnoredClassNames(), is(hardCodedClassNames)); | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaClassFileWriterTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package uk.gov.justice.generation; | ||
|
||
import static java.util.Collections.singletonList; | ||
import static org.mockito.Mockito.mock; | ||
import static org.mockito.Mockito.times; | ||
import static org.mockito.Mockito.verify; | ||
|
||
import uk.gov.justice.generation.pojo.core.GenerationContext; | ||
import uk.gov.justice.generation.pojo.generators.ClassGeneratable; | ||
import uk.gov.justice.generation.pojo.write.NonDuplicatingSourceWriter; | ||
|
||
import java.util.List; | ||
|
||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
import org.mockito.runners.MockitoJUnitRunner; | ||
|
||
@RunWith(MockitoJUnitRunner.class) | ||
public class JavaClassFileWriterTest { | ||
|
||
@Mock | ||
private NonDuplicatingSourceWriter nonDuplicatingSourceWriter; | ||
|
||
@InjectMocks | ||
private JavaClassFileWriter javaClassFileWriter; | ||
|
||
@Test | ||
@SuppressWarnings("unchecked") | ||
public void shouldWriteJavaClassFiles() throws Exception { | ||
final GenerationContext generationContext = mock(GenerationContext.class); | ||
final ClassGeneratable classGeneratable = mock(ClassGeneratable.class); | ||
final List<ClassGeneratable> classGenerators = singletonList(classGeneratable); | ||
|
||
javaClassFileWriter.writeJavaClassesToFile(generationContext, classGenerators); | ||
|
||
verify(nonDuplicatingSourceWriter, times(1)).write(classGeneratable, generationContext); | ||
} | ||
} |
23 changes: 23 additions & 0 deletions
23
...erator-core/src/test/java/uk/gov/justice/generation/JavaGeneratorFactoryProviderTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package uk.gov.justice.generation; | ||
|
||
import static org.hamcrest.CoreMatchers.is; | ||
import static org.junit.Assert.assertThat; | ||
import static org.mockito.Mockito.mock; | ||
import static uk.gov.justice.generation.utils.ReflectionUtil.fieldValue; | ||
|
||
import uk.gov.justice.generation.pojo.generators.ClassNameFactory; | ||
import uk.gov.justice.generation.pojo.generators.JavaGeneratorFactory; | ||
|
||
import org.junit.Test; | ||
|
||
public class JavaGeneratorFactoryProviderTest { | ||
|
||
@Test | ||
public void shouldProvideJavaGeneratorFactory() throws Exception { | ||
final ClassNameFactory classNameFactory = mock(ClassNameFactory.class); | ||
|
||
final JavaGeneratorFactory javaGeneratorFactory = new JavaGeneratorFactoryProvider().getJavaGeneratorFactory(classNameFactory); | ||
|
||
assertThat(fieldValue(javaGeneratorFactory, "classNameFactory"), is(classNameFactory)); | ||
} | ||
} |
Oops, something went wrong.