package org.drooms.impl.util; import org.assertj.core.api.Assertions; import org.junit.Assert; import org.junit.Test; import org.kie.api.KieServices; import org.kie.api.builder.KieRepository; import org.kie.api.builder.ReleaseId; import org.kie.api.io.Resource; import java.util.List; public class DroomsStrategyValidatorTest { @Test public void testInvalidReleaseId() { final ReleaseId releaseId = KieServices.Factory.get().newReleaseId("this", "artifact", "is.invalid"); final DroomsStrategyValidator validator = DroomsStrategyValidator.getInstance(releaseId); Assert.assertFalse(validator.isValid()); final List<String> errors = validator.getErrors(); Assertions.assertThat(errors).containsOnly("Cannot find KieModule: this:artifact:is.invalid"); } @Test public void testMissingDefaultKieBase() { final ReleaseId releaseId = deployArtifact("test-strategy-1.0"); final DroomsStrategyValidator validator = DroomsStrategyValidator.getInstance(releaseId); Assert.assertFalse(validator.isValid()); final List<String> errors = validator.getErrors(); Assertions.assertThat(errors).containsOnly("Cannot find a default KieBase"); } @Test public void testMissingEntryPoints() { final ReleaseId releaseId = deployArtifact("test-strategy-2.0"); final DroomsStrategyValidator validator = DroomsStrategyValidator.getInstance(releaseId); Assert.assertFalse(validator.isValid()); final List<String> errors = validator.getErrors(); Assertions.assertThat(errors).containsOnly("Entry point 'playerEvents' not declared.", "Entry point 'gameEvents' not declared."); } @Test public void testMissingLogger() { final ReleaseId releaseId = deployArtifact("test-strategy-3.0"); final DroomsStrategyValidator validator = DroomsStrategyValidator.getInstance(releaseId); Assert.assertTrue(validator.isValid()); Assert.assertFalse(validator.isClean()); final List<String> warnings = validator.getWarnings(); Assertions.assertThat(warnings).containsOnly("Global 'logger' of type 'org.slf4j.Logger' not declared.", "Global 'tracker' of type 'org.drooms.impl.logic.PathTracker' not declared."); } private ReleaseId deployArtifact(final String jarName) { final KieServices ks = KieServices.Factory.get(); final Resource resource = ks.getResources().newClassPathResource(jarName, getClass()); final KieRepository repository = ks.getRepository(); return repository.addKieModule(resource).getReleaseId(); } }