New DataUsageListHeaderController
Move spinner and config button to DataUsageListHeaderController. Bug: 290856342 Test: manual - on DataUsageList and AppDataUsage Test: unit test Change-Id: I655bd3441b2305708c0052f1203538bb07eef2af
This commit is contained in:
@@ -34,17 +34,12 @@ import android.net.NetworkTemplate;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.datausage.lib.BillingCycleRepository;
|
||||
import com.android.settings.network.MobileDataEnabledListener;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
@@ -52,6 +47,7 @@ import com.android.settings.widget.LoadingViewController;
|
||||
import com.android.settingslib.NetworkPolicyEditor;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||
import com.android.settingslib.net.NetworkCycleChartData;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
@@ -69,7 +65,11 @@ import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = DataUsageListTest.ShadowDataUsageBaseFragment.class)
|
||||
public class DataUsageListTest {
|
||||
@Rule
|
||||
public MockitoRule mMockitoRule = MockitoJUnit.rule();
|
||||
@@ -84,6 +84,8 @@ public class DataUsageListTest {
|
||||
private UserManager mUserManager;
|
||||
@Mock
|
||||
private BillingCycleRepository mBillingCycleRepository;
|
||||
@Mock
|
||||
private DataUsageListHeaderController mDataUsageListHeaderController;
|
||||
|
||||
private Activity mActivity;
|
||||
|
||||
@@ -98,7 +100,6 @@ public class DataUsageListTest {
|
||||
mActivity = spy(mActivityController.get());
|
||||
mNetworkServices.mPolicyEditor = mock(NetworkPolicyEditor.class);
|
||||
mDataUsageList.mDataStateListener = mMobileDataEnabledListener;
|
||||
mDataUsageList.mTemplate = mock(NetworkTemplate.class);
|
||||
|
||||
doReturn(mActivity).when(mDataUsageList).getContext();
|
||||
doReturn(mUserManager).when(mActivity).getSystemService(UserManager.class);
|
||||
@@ -110,11 +111,12 @@ public class DataUsageListTest {
|
||||
mDataUsageList.mLoadingViewController = mock(LoadingViewController.class);
|
||||
doNothing().when(mDataUsageList).updateSubscriptionInfoEntity();
|
||||
when(mBillingCycleRepository.isBandwidthControlEnabled()).thenReturn(true);
|
||||
mDataUsageList.mDataUsageListHeaderController = mDataUsageListHeaderController;
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = ShadowDataUsageBaseFragment.class)
|
||||
public void onCreate_isNotGuestUser_shouldNotFinish() {
|
||||
mDataUsageList.mTemplate = mock(NetworkTemplate.class);
|
||||
doReturn(false).when(mUserManager).isGuestUser();
|
||||
doNothing().when(mDataUsageList).processArgument();
|
||||
|
||||
@@ -124,7 +126,6 @@ public class DataUsageListTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = ShadowDataUsageBaseFragment.class)
|
||||
public void onCreate_isGuestUser_shouldFinish() {
|
||||
doReturn(true).when(mUserManager).isGuestUser();
|
||||
|
||||
@@ -135,6 +136,7 @@ public class DataUsageListTest {
|
||||
|
||||
@Test
|
||||
public void resume_shouldListenDataStateChange() {
|
||||
mDataUsageList.onCreate(null);
|
||||
ReflectionHelpers.setField(
|
||||
mDataUsageList, "mVisibilityLoggerMixin", mock(VisibilityLoggerMixin.class));
|
||||
ReflectionHelpers.setField(
|
||||
@@ -149,6 +151,7 @@ public class DataUsageListTest {
|
||||
|
||||
@Test
|
||||
public void pause_shouldUnlistenDataStateChange() {
|
||||
mDataUsageList.onCreate(null);
|
||||
ReflectionHelpers.setField(
|
||||
mDataUsageList, "mVisibilityLoggerMixin", mock(VisibilityLoggerMixin.class));
|
||||
ReflectionHelpers.setField(
|
||||
@@ -187,12 +190,10 @@ public class DataUsageListTest {
|
||||
|
||||
@Test
|
||||
public void processArgument_fromIntent_shouldGetTemplateFromIntent() {
|
||||
final FragmentActivity activity = mock(FragmentActivity.class);
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(Settings.EXTRA_NETWORK_TEMPLATE, mock(NetworkTemplate.class));
|
||||
intent.putExtra(Settings.EXTRA_SUB_ID, 3);
|
||||
when(activity.getIntent()).thenReturn(intent);
|
||||
doReturn(activity).when(mDataUsageList).getActivity();
|
||||
doReturn(intent).when(mDataUsageList).getIntent();
|
||||
|
||||
mDataUsageList.processArgument();
|
||||
|
||||
@@ -200,31 +201,17 @@ public class DataUsageListTest {
|
||||
assertThat(mDataUsageList.mSubId).isEqualTo(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onViewCreated_shouldHideCycleSpinner() {
|
||||
final View view = new View(mActivity);
|
||||
final View header = getHeader();
|
||||
final Spinner spinner = getSpinner(header);
|
||||
spinner.setVisibility(View.VISIBLE);
|
||||
doReturn(header).when(mDataUsageList).setPinnedHeaderView(anyInt());
|
||||
doReturn(view).when(mDataUsageList).getView();
|
||||
|
||||
mDataUsageList.onViewCreated(view, null);
|
||||
|
||||
assertThat(spinner.getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onLoadFinished_networkCycleDataCallback_shouldShowCycleSpinner() {
|
||||
final Spinner spinner = getSpinner(getHeader());
|
||||
spinner.setVisibility(View.INVISIBLE);
|
||||
mDataUsageList.mCycleSpinner = spinner;
|
||||
assertThat(spinner.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||
doNothing().when(mDataUsageList).updatePolicy();
|
||||
mDataUsageList.mTemplate = mock(NetworkTemplate.class);
|
||||
mDataUsageList.onCreate(null);
|
||||
mDataUsageList.updatePolicy();
|
||||
List<NetworkCycleChartData> mockData = Collections.emptyList();
|
||||
|
||||
mDataUsageList.mNetworkCycleDataCallbacks.onLoadFinished(null, null);
|
||||
mDataUsageList.mNetworkCycleDataCallbacks.onLoadFinished(null, mockData);
|
||||
|
||||
assertThat(spinner.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
verify(mDataUsageListHeaderController).updateCycleData(mockData);
|
||||
verify(mDataUsageListHeaderController).setConfigButtonVisible(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -234,19 +221,6 @@ public class DataUsageListTest {
|
||||
verify(mLoaderManager).destroyLoader(DataUsageList.LOADER_CHART_DATA);
|
||||
}
|
||||
|
||||
private View getHeader() {
|
||||
final View rootView = LayoutInflater.from(mActivity)
|
||||
.inflate(R.layout.preference_list_fragment, null, false);
|
||||
final FrameLayout pinnedHeader = rootView.findViewById(R.id.pinned_header);
|
||||
|
||||
return mActivity.getLayoutInflater()
|
||||
.inflate(R.layout.apps_filter_spinner, pinnedHeader, false);
|
||||
}
|
||||
|
||||
private Spinner getSpinner(View header) {
|
||||
return header.findViewById(R.id.filter_spinner);
|
||||
}
|
||||
|
||||
@Implements(DataUsageBaseFragment.class)
|
||||
public static class ShadowDataUsageBaseFragment {
|
||||
@Implementation
|
||||
@@ -261,10 +235,28 @@ public class DataUsageListTest {
|
||||
return mock(clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Preference> T findPreference(CharSequence key) {
|
||||
if (key.toString().equals("chart_data")) {
|
||||
return (T) mock(ChartDataUsagePreference.class);
|
||||
}
|
||||
return (T) mock(Preference.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Intent getIntent() {
|
||||
return new Intent();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
BillingCycleRepository createBillingCycleRepository() {
|
||||
return mBillingCycleRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isBillingCycleModifiable() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user