package com.chriszou.auttutorial.test.daggermock;
import android.widget.EditText;
import com.chriszou.auttutorial.BuildConfig;
import com.chriszou.auttutorial.R;
import com.chriszou.auttutorial.dagger2.LoginPresenter;
import com.chriszou.auttutorial.dagger2.UserManager;
import com.chriszou.auttutorial.daggermock.LoginActivity;
import com.chriszou.auttutorial.mockito.PasswordValidator;
import com.chriszou.auttutorial.test.dagger2.TestUtils;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;
/**
* Created by xiaochuang on 5/14/16.
*/
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class LoginActivityTest {
@Rule
public DaggerRule daggerRule = new DaggerRule();
@Mock
LoginPresenter loginPresenter;
@Test
public void testLogin_old_way() {
TestUtils.setupDagger();
Mockito.when(TestUtils.appModule.provideLoginPresenter(any(UserManager.class), any(PasswordValidator.class))).thenReturn(loginPresenter); //当mockAppModule的provideLoginPresenter()方法被调用时,让它返回mockLoginPresenter
LoginActivity loginActivity = Robolectric.setupActivity(LoginActivity.class);
((EditText) loginActivity.findViewById(R.id.username)).setText("xiaochuang");
((EditText) loginActivity.findViewById(R.id.password)).setText("xiaochuang is handsome");
loginActivity.findViewById(R.id.login).performClick();
verify(loginPresenter).login("xiaochuang", "xiaochuang is handsome");
}
@Test
public void testLogin_shinny_way() {
LoginActivity loginActivity = Robolectric.setupActivity(LoginActivity.class);
((EditText) loginActivity.findViewById(R.id.username)).setText("xiaochuang");
((EditText) loginActivity.findViewById(R.id.password)).setText("xiaochuang is handsome");
loginActivity.findViewById(R.id.login).performClick();
verify(loginPresenter).login("xiaochuang", "xiaochuang is handsome");
}
}