package br.com.caelum.stella.validation; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.jmock.Expectations; import org.jmock.Mockery; import org.junit.Test; import br.com.caelum.stella.MessageProducer; import br.com.caelum.stella.ValidationMessage; public class BaseValidatorTest { @Test public void testGetValidationMessagesT() { Mockery mockery = new Mockery(); final MessageProducer messageProducer = mockery.mock(MessageProducer.class); final InvalidValue invalidValue = mockery.mock(InvalidValue.class); final ValidationMessage validationMessage = mockery.mock(ValidationMessage.class); mockery.checking(new Expectations() { { exactly(1).of(messageProducer).getMessage(invalidValue); will(returnValue(validationMessage)); } }); BaseValidator validator = new BaseValidator(messageProducer); List<InvalidValue> invalidValues = Arrays.asList(invalidValue); List<ValidationMessage> actual = validator.generateValidationMessages(invalidValues); List<ValidationMessage> expected = new ArrayList<ValidationMessage>(); expected.add(validationMessage); assertEquals(expected, actual); mockery.assertIsSatisfied(); } @Test public void testAssertValidShouldThrowInvalidStateExpectionWhenComesAnInvalidValue() { Mockery mockery = new Mockery(); final MessageProducer messageProducer = mockery.mock(MessageProducer.class); final InvalidValue invalidValue = mockery.mock(InvalidValue.class); final ValidationMessage validationMessage = mockery.mock(ValidationMessage.class); mockery.checking(new Expectations() { { exactly(1).of(messageProducer).getMessage(invalidValue); will(returnValue(validationMessage)); } }); BaseValidator validator = new BaseValidator(messageProducer); try { List<InvalidValue> invalidValues = Arrays.asList(invalidValue); validator.assertValid(invalidValues); fail(); } catch (InvalidStateException e) { List<ValidationMessage> messages0 = e.getInvalidMessages(); List<ValidationMessage> messages1 = new ArrayList<ValidationMessage>(); messages1.add(validationMessage); assertEquals(messages0, messages1); } catch (Exception e) { fail(); } mockery.assertIsSatisfied(); } @Test public void testAssertValidShouldNotThrowInvalidStateExpectionWhenValueIsValid() { Mockery mockery = new Mockery(); final MessageProducer messageProducer = mockery.mock(MessageProducer.class); mockery.checking(new Expectations()); BaseValidator validator = new BaseValidator(messageProducer); try { List<InvalidValue> invalidValues = new ArrayList<InvalidValue>(); validator.assertValid(invalidValues); } catch (InvalidStateException e) { fail(); } mockery.assertIsSatisfied(); } }