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