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

Commit 4db6aac4 authored by Fan Zhang's avatar Fan Zhang
Browse files

Use ListFormatter to join strings for network dashboard

Test: robotests
Change-Id: Ie15512acb35c185f9a59bf268303b7993cc40947
parent d19398ab
Loading
Loading
Loading
Loading
+11 −13
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.content.Context;
import android.icu.text.ListFormatter;
import android.provider.SearchIndexableResource;
import android.support.annotation.VisibleForTesting;
import android.text.BidiFormatter;
@@ -175,25 +176,22 @@ public class NetworkDashboardFragment extends DashboardFragment implements
        @Override
        public void setListening(boolean listening) {
            if (listening) {
                String summary = BidiFormatter.getInstance()
                        .unicodeWrap(mContext.getString(R.string.wifi_settings_title));
                final List<String> summaries = new ArrayList<>();

                summaries.add(BidiFormatter.getInstance()
                        .unicodeWrap(mContext.getString(R.string.wifi_settings_title)));
                if (mMobileNetworkPreferenceController.isAvailable()) {
                    final String mobileSettingSummary = mContext.getString(
                            R.string.network_dashboard_summary_mobile);
                    summary = mContext.getString(R.string.join_many_items_middle, summary,
                            mobileSettingSummary);
                    summaries.add(mContext.getString(
                            R.string.network_dashboard_summary_mobile));
                }
                final String dataUsageSettingSummary = mContext.getString(
                        R.string.network_dashboard_summary_data_usage);
                summary = mContext.getString(R.string.join_many_items_middle, summary,
                        dataUsageSettingSummary);
                summaries.add(dataUsageSettingSummary);
                if (mTetherPreferenceController.isAvailable()) {
                    final String hotspotSettingSummary = mContext.getString(
                            R.string.network_dashboard_summary_hotspot);
                    summary = mContext.getString(R.string.join_many_items_middle, summary,
                            hotspotSettingSummary);
                    summaries.add(mContext.getString(
                            R.string.network_dashboard_summary_hotspot));
                }
                mSummaryLoader.setSummary(this, summary);
                mSummaryLoader.setSummary(this, ListFormatter.getInstance().format(summaries));
            }
        }
    }
+10 −24
Original line number Diff line number Diff line
@@ -16,18 +16,14 @@
package com.android.settings.network;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.provider.SearchIndexableResource;
import android.view.Menu;

import com.android.settings.R;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.drawer.CategoryKey;
@@ -35,45 +31,41 @@ import com.android.settingslib.drawer.CategoryKey;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers;

import java.util.List;

@RunWith(SettingsRobolectricTestRunner.class)
public class NetworkDashboardFragmentTest {

    @Mock
    private Context mContext;

    private NetworkDashboardFragment mFragment;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = RuntimeEnvironment.application;
        mFragment = new NetworkDashboardFragment();
    }

    @Test
    public void testCategory_isNetwork() {
    public void getCategoryKey_isNetwork() {
        assertThat(mFragment.getCategoryKey()).isEqualTo(CategoryKey.CATEGORY_NETWORK);
    }

    @Test
    public void testSearchIndexProvider_shouldIndexResource() {
    public void getXmlResourcesToIndex_shouldIncludeFragmentXml() {
        final List<SearchIndexableResource> indexRes =
                NetworkDashboardFragment.SEARCH_INDEX_DATA_PROVIDER.getXmlResourcesToIndex(
                    RuntimeEnvironment.application,
                        mContext,
                        true /* enabled */);

        assertThat(indexRes).isNotNull();
        assertThat(indexRes).hasSize(1);
        assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId());
    }

    @Test
    public void testSummaryProvider_hasMobileAndHotspot_shouldReturnMobileSummary() {
    public void summaryProviderSetListening_hasMobileAndHotspot_shouldReturnMobileSummary() {
        final MobileNetworkPreferenceController mobileNetworkPreferenceController =
                mock(MobileNetworkPreferenceController.class);
        final TetherPreferenceController tetherPreferenceController =
@@ -93,15 +85,11 @@ public class NetworkDashboardFragmentTest {

        provider.setListening(true);

        verify(mContext).getString(R.string.wifi_settings_title);
        verify(mContext).getString(R.string.network_dashboard_summary_data_usage);
        verify(mContext).getString(R.string.network_dashboard_summary_hotspot);
        verify(mContext).getString(R.string.network_dashboard_summary_mobile);
        verify(mContext, times(3)).getString(R.string.join_many_items_middle, null, null);
        verify(summaryLoader).setSummary(provider, "Wi\u2011Fi, mobile, data usage, and hotspot");
    }

    @Test
    public void testSummaryProvider_noMobileOrHotspot_shouldReturnSimpleSummary() {
    public void summaryProviderSetListening_noMobileOrHotspot_shouldReturnSimpleSummary() {
        final MobileNetworkPreferenceController mobileNetworkPreferenceController =
                mock(MobileNetworkPreferenceController.class);
        final TetherPreferenceController tetherPreferenceController =
@@ -121,8 +109,6 @@ public class NetworkDashboardFragmentTest {

        provider.setListening(true);

        verify(mContext).getString(R.string.wifi_settings_title);
        verify(mContext).getString(R.string.network_dashboard_summary_data_usage);
        verify(mContext).getString(R.string.join_many_items_middle, null, null);
        verify(summaryLoader).setSummary(provider, "Wi\u2011Fi and data usage");
    }
}