@Test(dataProvider = ENUM_TABLE_INPUTS)
public void thatEnumsAreHandledCorrectly(Status status, String expected) throws Exception {
String enumJson = FileUtil.readWholeFile(getClass(),RELATIVE_INPUT_FILE_PATH + "enums.json");
LinkedDecisionTableParser parser = new LinkedDecisionTableParser();
JSONArray dmnModels = new JSONArray();
dmnModels.put(JSONUtil.getJsonObjectFromString(enumJson));
List<DecisionTable> decisionTables = parser.parseThrowing(dmnModels);
String drlOutput = DroolsExporter.exportToDrools(decisionTables);
File outputFile = FileUtil.createTempFileAtGivenRelativePath(getClass(), RELATIVE_OUTPUT_FILE_PATH, "drl");
FileUtil.writeToFile(outputFile, drlOutput);
KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
knowledgeBuilder.add(ResourceFactory.newFileResource(outputFile), ResourceType.DRL);
KieBase knowledgeBase = knowledgeBuilder.newKnowledgeBase();
KieSession session = knowledgeBase.newKieSession();
FactType enums = knowledgeBase.getFactType("com.signavio.droolsexport", "Enums");
Object enumObject = enums.newInstance();
enums.set(enumObject, "status", status);
session.insert(enumObject);
session.fireAllRules();
String result = (String) enums.get(enumObject, "display");
assertEquals(result, expected);
session.dispose();
session.destroy();
outputFile.delete();
assertFalse(outputFile.exists());
}