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.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.testutils.FakeFeatureFactory;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class SurveyMixinTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String FAKE_KEY = "fake_key";
private Context mContext;
private SurveyFeatureProvider mProvider;
@Mock
private InstrumentedPreferenceFragment mFragment;
@Before
public void setUp() {
// set up the fakefeature factory to mock out the survey provider
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mProvider = FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(mContext);
mProvider = FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(
ApplicationProvider.getApplicationContext());
}
@Ignore("b/314929422")
@Test
public void onResume_noActionIfActivityDoesNotExist() {
// Pretend we are an activity that is starting up
FragmentActivity temp = Robolectric.setupActivity(FragmentActivity.class);
when(mFragment.getActivity()).thenReturn(null);
SurveyMixin mixin = new SurveyMixin(mFragment, FAKE_KEY);
// Initialize a fragment without associating with an activity
Fragment fragment = new Fragment();
SurveyMixin mixin = new SurveyMixin(fragment, FAKE_KEY);
mixin.onResume();
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);
}
}