package com.basgeekball.awesomevalidation.validators;
import android.widget.EditText;
import com.basgeekball.awesomevalidation.ValidationHolder;
import com.basgeekball.awesomevalidation.utility.ValidationCallback;
import junit.framework.TestCase;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import java.util.regex.Matcher;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(PowerMockRunner.class)
public class BasicValidatorTest extends TestCase {
private BasicValidator mSpiedBasicValidator;
private ValidationHolder mMockValidationHolder;
@Override
protected void setUp() throws Exception {
super.setUp();
mSpiedBasicValidator = spy(BasicValidator.class);
mMockValidationHolder = mock(ValidationHolder.class);
mSpiedBasicValidator.mValidationHolderList.add(mMockValidationHolder);
}
public void testValidationCallbackExecute() {
ValidationCallback validationCallback = Whitebox.getInternalState(mSpiedBasicValidator, "mValidationCallback");
Matcher mockMatcher = PowerMockito.mock(Matcher.class);
EditText mockEditText = mock(EditText.class);
String mockErrMsg = PowerMockito.mock(String.class);
when(mMockValidationHolder.getEditText()).thenReturn(mockEditText);
when(mMockValidationHolder.getErrMsg()).thenReturn(mockErrMsg);
doNothing().when(mockEditText).setError(mockErrMsg);
validationCallback.execute(mMockValidationHolder, mockMatcher);
verify(mockEditText).setError(mockErrMsg);
}
public void testHalt() {
EditText mockEditText = mock(EditText.class);
when(mMockValidationHolder.getEditText()).thenReturn(mockEditText);
mSpiedBasicValidator.halt();
verify(mockEditText).setError(null);
}
}