package com.basgeekball.awesomevalidation.validators; import android.text.SpannableStringBuilder; import android.widget.EditText; import com.basgeekball.awesomevalidation.ValidationHolder; import com.basgeekball.awesomevalidation.helper.SpanHelper; import com.basgeekball.awesomevalidation.utility.ValidationCallback; import junit.framework.TestCase; import org.junit.runner.RunWith; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.reflect.Whitebox; import java.util.regex.Matcher; 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) @PrepareForTest({ColorationValidator.class, SpanHelper.class}) public class ColorationValidatorTest extends TestCase { private ColorationValidator mSpiedColorationValidator; private ValidationHolder mMockValidationHolder; @Override protected void setUp() throws Exception { super.setUp(); mSpiedColorationValidator = spy(ColorationValidator.class); mMockValidationHolder = mock(ValidationHolder.class); mSpiedColorationValidator.mValidationHolderList.add(mMockValidationHolder); } public void testValidationCallbackExecute() { ValidationCallback validationCallback = Whitebox.getInternalState(mSpiedColorationValidator, "mValidationCallback"); Matcher mockMatcher = PowerMockito.mock(Matcher.class); EditText mockEditText = mock(EditText.class); String mockErrMsg = PowerMockito.mock(String.class); SpannableStringBuilder mockEditable = PowerMockito.mock(SpannableStringBuilder.class); when(mMockValidationHolder.getEditText()).thenReturn(mockEditText); when(mMockValidationHolder.getErrMsg()).thenReturn(mockErrMsg); when(mockEditText.getText()).thenReturn(mockEditable); when(mockEditable.length()).thenReturn(PowerMockito.mock(Integer.class)); PowerMockito.mockStatic(SpanHelper.class); validationCallback.execute(mMockValidationHolder, mockMatcher); verify(mockEditText).setError(mockErrMsg); PowerMockito.verifyStatic(); } public void testHalt() { EditText mockEditText = mock(EditText.class); when(mMockValidationHolder.getEditText()).thenReturn(mockEditText); PowerMockito.mockStatic(SpanHelper.class); mSpiedColorationValidator.halt(); verify(mockEditText).setError(null); PowerMockito.verifyStatic(); } }