package de.zalando.toga.generator; import com.fasterxml.jackson.databind.ObjectMapper; import de.zalando.toga.generator.scenarios.EmptyObject; import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.List; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class GeneratorTest { /** * Testmap * * - temp file already exists, should be overwritten */ @Test public void emptyObject() throws IOException { verifyFile("empty_object", EmptyObject.class); } @Test(expected = NullPointerException.class) public void targetFileMayNotBeNUll() { new Generator().generate(null); } @Test(expected = IllegalArgumentException.class) public void targetFileMayNotBeADirectory() { new Generator().generate(new File("src/test/resources/generator/")); } static void verifyFile(String scenario, Class clazz) throws IOException { File reference = new File("src/test/resources/generator/", scenario + "_ref.json"); File output = generateOutput(scenario); ObjectMapper mapper = new ObjectMapper(); List referenceObjects = mapper.readValue(reference, mapper.getTypeFactory().constructCollectionType(List.class, clazz)); List generatedObjects = mapper.readValue(output, mapper.getTypeFactory().constructCollectionType(List.class, clazz)); for (Object referenceObject : referenceObjects) { assertThat("Expected: [" + referenceObject + "]", generatedObjects.contains(referenceObject), is(true)); } for (Object generated : generatedObjects) { assertThat("Expected: [" + generated + "]", referenceObjects.contains(generated), is(true)); } } static File generateOutput(String scenario) { File input = new File("src/test/resources/generator/", scenario + "_in.json"); File output = new File("src/test/resources/generator/", scenario + "_out.json"); Generator generator = new Generator(); generator.load(input); generator.generate(output); return output; } }