Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a26f6282 authored by Fan Wu's avatar Fan Wu Committed by Android (Google) Code Review
Browse files

Merge "Fix SurveyMixinTest" into main

parents 59e7d60f 398ca1ad
Loading
Loading
Loading
Loading
+25 −22
Original line number Diff line number Diff line
@@ -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);
    }
}