package br.com.caelum.stella.validation; import java.util.List; import org.jmock.Expectations; import org.jmock.Mockery; import org.junit.Assert; import org.junit.Test; import br.com.caelum.stella.MessageProducer; import br.com.caelum.stella.SimpleValidationMessage; import br.com.caelum.stella.ValidationMessage; import br.com.caelum.stella.validation.error.LengthError; public class LengthValidatorTest { @Test public void shouldAssertValidCorrectLengthStrings() { LengthValidator validator = new LengthValidator(2); validator.assertValid("23"); } @Test(expected = InvalidStateException.class) public void shouldNotAssertValidIncorrectLengthStrings() { LengthValidator validator = new LengthValidator(2); validator.assertValid("230"); } @Test public void shouldAssertValidCorrectLengthIntegers() { LengthValidator validator = new LengthValidator(4); validator.assertValid(1234); } @Test(expected = InvalidStateException.class) public void shouldNotAssertValidIncorrectLengthIntegers() { LengthValidator validator = new LengthValidator(4); validator.assertValid(123); } @Test public void shouldReturnCorrectValidationMessage() { Mockery mockery = new Mockery(); final MessageProducer messageProducer = mockery.mock(MessageProducer.class); LengthValidator lengthValidator = new LengthValidator(messageProducer, 2); String message = "O tamanho da entrada é inválido."; final ValidationMessage validationMessage = new SimpleValidationMessage(message); mockery.checking(new Expectations() { { one(messageProducer).getMessage(with(equal(new LengthError(2)))); will(returnValue(validationMessage)); } }); List<ValidationMessage> invalidMessages = lengthValidator.invalidMessagesFor(12345); Assert.assertEquals(1, invalidMessages.size()); Assert.assertEquals(message, invalidMessages.get(0).getMessage()); } @Test public void shouldReturnPrettySimpleMessageValidation() { LengthValidator lengthValidator = new LengthValidator(2); List<ValidationMessage> invalidMessages = lengthValidator.invalidMessagesFor(12345); Assert.assertEquals(1, invalidMessages.size()); Assert.assertEquals("LengthError : INVALID LENGTH", invalidMessages.get(0).getMessage()); } @Test(expected=UnsupportedOperationException.class) public void shouldThrowExceptionWhenGeneratingRandomValue() { new LengthValidator(2).generateRandomValid(); } }