1 package com.android.settings.survey; 2 3 import static org.mockito.Mockito.times; 4 import static org.mockito.Mockito.verify; 5 6 import androidx.fragment.app.Fragment; 7 import androidx.fragment.app.testing.FragmentScenario; 8 import androidx.test.core.app.ApplicationProvider; 9 10 import com.android.settings.overlay.SurveyFeatureProvider; 11 import com.android.settings.testutils.FakeFeatureFactory; 12 13 import org.junit.Before; 14 import org.junit.Rule; 15 import org.junit.Test; 16 import org.junit.runner.RunWith; 17 import org.mockito.junit.MockitoJUnit; 18 import org.mockito.junit.MockitoRule; 19 import org.robolectric.RobolectricTestRunner; 20 21 @RunWith(RobolectricTestRunner.class) 22 public class SurveyMixinTest { 23 @Rule 24 public final MockitoRule mMockitoRule = MockitoJUnit.rule(); 25 26 private static final String FAKE_KEY = "fake_key"; 27 private SurveyFeatureProvider mProvider; 28 29 @Before setUp()30 public void setUp() { 31 // set up the fakefeature factory to mock out the survey provider 32 mProvider = FakeFeatureFactory.setupForTest().getSurveyFeatureProvider( 33 ApplicationProvider.getApplicationContext()); 34 } 35 36 @Test onResume_noActionIfActivityDoesNotExist()37 public void onResume_noActionIfActivityDoesNotExist() { 38 // Initialize a fragment without associating with an activity 39 Fragment fragment = new Fragment(); 40 SurveyMixin mixin = new SurveyMixin(fragment, FAKE_KEY); 41 mixin.onResume(); 42 43 verify(mProvider, times(0)).sendActivityIfAvailable(FAKE_KEY); 44 } 45 46 @Test onResume_sendActivityWhenSurveyFeatureExists()47 public void onResume_sendActivityWhenSurveyFeatureExists() { 48 try (var fragmentScenario = FragmentScenario.launch(Fragment.class)) { 49 fragmentScenario.onFragment(fragment -> { 50 SurveyMixin mixin = new SurveyMixin(fragment, FAKE_KEY); 51 mixin.onResume(); 52 }); 53 } 54 // Verify one send activity action is attempted 55 verify(mProvider).sendActivityIfAvailable(FAKE_KEY); 56 } 57 } 58