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;
}
}