package org.openstack.atlas.api.validation.verifiers; import org.openstack.atlas.api.validation.*; import org.openstack.atlas.api.validation.context.HttpRequestType; import java.util.ArrayList; import java.util.List; import org.openstack.atlas.api.validation.SimpleBean; import org.openstack.atlas.api.validation.ComplexBean; import org.junit.Before; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import static org.openstack.atlas.api.validation.ValidatorBuilder.*; import static org.junit.Assert.*; @RunWith(Enclosed.class) public class MustBeNullTest { public static class WhenValidatingComplexBean { private ComplexBean complexBean; private Validator<ComplexBean> validator; @Before public void standUpValidComplexBeanAndExpectation() { complexBean = new ComplexBean(); complexBean.addSimpleBean(new SimpleBean()); validator = build(new ValidatorBuilder<ComplexBean>(ComplexBean.class) { { result(validationTarget().getMySimpleBeans()).must().exist().withMessage(""); result(validationTarget().getMySimpleBeans()).must().haveSizeOfAtLeast(1).withMessage(""); } }); } @Test public void shouldValidateValidComplexBean() { assertTrue(validator.validate(complexBean, HttpRequestType.POST).passedValidation()); } @Test public void shouldRejectComplexBeanWithNullSimpleBeans() { complexBean.setMySimpleBeans(null); assertFalse(validator.validate(complexBean, HttpRequestType.POST).passedValidation()); } @Test public void shouldRejectNullComplexBean() { assertFalse(validator.validate(null, HttpRequestType.POST).passedValidation()); } @Test public void shouldRejectEmptySimpleBeanList() { complexBean.getMySimpleBeans().clear(); assertFalse(validator.validate(complexBean, HttpRequestType.POST).passedValidation()); } public static class WhenValidatingSimpleBean { private SimpleBean testBean1; private SimpleBean testBean2; private List list; @Before public void standUps() { list = new ArrayList(); list.add(3); testBean1 = new SimpleBean("", null, "3", null, 2, 3); testBean2 = new SimpleBean(null, "2", "3", 1, null, 3); } @Test public void shouldValidateSimpleBeanIsNull() { final Validator<SimpleBean> validator = build(new ValidatorBuilder<SimpleBean>(SimpleBean.class) { { result(validationTarget().getStringProperty2()).must().beEmptyOrNull().withMessage(" The ComplexBean must be null "); result(validationTarget().getIntProperty1()).must().beEmptyOrNull().withMessage(" The ComplexBean must be null "); } }); assertTrue(validator.validate(testBean1, HttpRequestType.POST).passedValidation()); assertFalse(validator.validate(testBean2, HttpRequestType.POST).passedValidation()); } } } }