package org.openstack.atlas.api.validation; import org.openstack.atlas.api.validation.context.HttpRequestType; import org.openstack.atlas.api.validation.results.ExpectationResult; import org.openstack.atlas.api.validation.verifiers.Verifier; import org.openstack.atlas.api.validation.verifiers.VerifierResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import java.util.List; import static org.openstack.atlas.api.validation.ValidatorBuilder.build; @RunWith(Enclosed.class) public class MultipleMessagesReturnTest { public static class WhenValidatingComplexBeanWithOneExpectation { private ComplexBean complexBean; private Validator<ComplexBean> validator; final String beanExistMessage = "I need simple beans, Black or Refried or even Borraccho will work!"; final String grainExistMessage = "Must have 1 or more grains in the bean cup!"; final String complexStringExistMessage = "I need a complex bean message."; final String simpleStringExistMessage = "I need a simple bean message"; @Before public void Setup() { complexBean = new ComplexBean(); complexBean.addSimpleBean(new SimpleBean()); } @Test public void should_be_able_to_retrieve_validation_messages_without_validator_heirarchy_when_validation_fails() { validator = build(new ValidatorBuilder<ComplexBean>(ComplexBean.class) { { result(validationTarget().getComplexString()).must().exist().withMessage(complexStringExistMessage); result(validationTarget().getMySimpleBeans()).must().adhereTo(new Verifier<List<SimpleBean>>() { @Override public VerifierResult verify(List<SimpleBean> simpleBeans) { for (SimpleBean simpleBean : simpleBeans) { if (simpleBean.getStringProperty1() == null) { return new VerifierResult(false); } } return new VerifierResult(true); } }).withMessage(simpleStringExistMessage); } }); List<ExpectationResult> resultList = validator.validate(complexBean, HttpRequestType.POST).getValidationResults(); Assert.assertTrue(!resultList.isEmpty()); Assert.assertEquals(complexStringExistMessage, resultList.get(0).getMessage()); Assert.assertEquals(simpleStringExistMessage, resultList.get(1).getMessage()); } } }