package br.com.caelum.stella.validation; import static org.mockito.Mockito.mock; import org.junit.Before; import org.junit.Test; import br.com.caelum.stella.MessageProducer; @SuppressWarnings("unchecked") public class LogicOrComposedValidatorTest { private MessageProducer messageProducer; @Before public void setUp() { messageProducer = mock(MessageProducer.class); } @Test(expected = IllegalArgumentException.class) public void shouldThrowIllegalArgumentExceptionIfNoValidatorsArePassedOnConstruction() throws Exception { new LogicOrComposedValidator<String>(messageProducer, true); } @Test public void shouldGenerateValidDocumentAccordingToTheFirstValidatorPassedAsArgument() throws Exception { LogicOrComposedValidator<String> validatorCpfPrimeiro = new LogicOrComposedValidator<String>( messageProducer, true, CPFValidator.class, CNPJValidator.class); new CPFValidator(true).assertValid(validatorCpfPrimeiro.generateRandomValid()); LogicOrComposedValidator<String> validatorCnpjPrimeiro = new LogicOrComposedValidator<String>( messageProducer, true, CNPJValidator.class, CPFValidator.class); new CNPJValidator(true).assertValid(validatorCnpjPrimeiro.generateRandomValid()); } @Test public void shouldGenerateValidDocumentFormattedAccordingToParameterSpecifiedInConstructor() throws Exception { LogicOrComposedValidator<String> validatorFormatado = new LogicOrComposedValidator<String>( messageProducer, true, CPFValidator.class, CNPJValidator.class); new CPFValidator(true).assertValid(validatorFormatado.generateRandomValid()); LogicOrComposedValidator<String> validatorNaoFormatado = new LogicOrComposedValidator<String>( messageProducer, false, CPFValidator.class, CNPJValidator.class); new CPFValidator(false).assertValid(validatorNaoFormatado.generateRandomValid()); } }