Merge "Fix SurveyMixinTest" into main

This commit is contained in:
Fan Wu
2024-02-22 06:02:19 +00:00
committed by Android (Google) Code Review

View File

@@ -2,53 +2,56 @@ package com.android.settings.survey;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context; import androidx.fragment.app.Fragment;
import androidx.fragment.app.testing.FragmentScenario;
import androidx.test.core.app.ApplicationProvider;
import androidx.fragment.app.FragmentActivity;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.overlay.SurveyFeatureProvider; import com.android.settings.overlay.SurveyFeatureProvider;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.junit.MockitoJUnit;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class SurveyMixinTest { public class SurveyMixinTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String FAKE_KEY = "fake_key"; private static final String FAKE_KEY = "fake_key";
private Context mContext;
private SurveyFeatureProvider mProvider; private SurveyFeatureProvider mProvider;
@Mock
private InstrumentedPreferenceFragment mFragment;
@Before @Before
public void setUp() { public void setUp() {
// set up the fakefeature factory to mock out the survey provider // set up the fakefeature factory to mock out the survey provider
MockitoAnnotations.initMocks(this); mProvider = FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(
mContext = RuntimeEnvironment.application; ApplicationProvider.getApplicationContext());
mProvider = FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(mContext);
} }
@Ignore("b/314929422")
@Test @Test
public void onResume_noActionIfActivityDoesNotExist() { public void onResume_noActionIfActivityDoesNotExist() {
// Pretend we are an activity that is starting up // Initialize a fragment without associating with an activity
FragmentActivity temp = Robolectric.setupActivity(FragmentActivity.class); Fragment fragment = new Fragment();
when(mFragment.getActivity()).thenReturn(null); SurveyMixin mixin = new SurveyMixin(fragment, FAKE_KEY);
SurveyMixin mixin = new SurveyMixin(mFragment, FAKE_KEY);
mixin.onResume(); mixin.onResume();
verify(mProvider, times(0)).sendActivityIfAvailable(FAKE_KEY); verify(mProvider, times(0)).sendActivityIfAvailable(FAKE_KEY);
} }
@Test
public void onResume_sendActivityWhenSurveyFeatureExists() {
try (var fragmentScenario = FragmentScenario.launch(Fragment.class)) {
fragmentScenario.onFragment(fragment -> {
SurveyMixin mixin = new SurveyMixin(fragment, FAKE_KEY);
mixin.onResume();
});
}
// Verify one send activity action is attempted
verify(mProvider).sendActivityIfAvailable(FAKE_KEY);
}
} }