package alien4cloud.paas.wf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
import alien4cloud.paas.wf.util.WorkflowUtils;
import alien4cloud.paas.wf.validation.AbstractWorkflowError;
import alien4cloud.paas.wf.validation.Rule;
@Slf4j
public abstract class AbstractValidationTest<R extends Rule> {
protected abstract R getRule();
protected Workflow wf;
@Before
public void prepare() {
wf = new Workflow();
wf.setName(Workflow.INSTALL_WF);
wf.setStandard(true);
}
protected void processValidation(boolean workflowShouldHaveErrors, int errorCount) {
log.info(WorkflowUtils.debugWorkflow(wf));
if (workflowShouldHaveErrors && errorCount == 0 || !workflowShouldHaveErrors && errorCount > 0) {
fail("Bad assertion");
}
List<AbstractWorkflowError> errors = getRule().validate(null, wf);
if (errors != null) {
wf.addErrors(errors);
}
assertEquals(workflowShouldHaveErrors, wf.hasErrors());
if (errorCount > 0) {
assertNotNull(wf.getErrors());
assertEquals(errorCount, wf.getErrors().size());
for (AbstractWorkflowError e : wf.getErrors()) {
log.info("Workflow validation error is : " + e);
}
}
}
}