Loading src/com/android/settings/accounts/AccountSyncSettings.java +10 −2 Original line number Diff line number Diff line Loading @@ -42,12 +42,14 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.widget.EntityHeaderController; import com.android.settingslib.widget.FooterPreference; import com.google.android.collect.Lists; Loading Loading @@ -458,8 +460,7 @@ public class AccountSyncSettings extends AccountPreferenceBase { syncPref.setChecked(oneTimeSyncMode || syncEnabled); } if (syncIsFailing) { mFooterPreferenceMixin.createFooterPreference() .setTitle(R.string.sync_is_failing); createFooterPreference(); } } Loading Loading @@ -552,4 +553,11 @@ public class AccountSyncSettings extends AccountPreferenceBase { | DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_TIME); } @VisibleForTesting void createFooterPreference() { final FooterPreference footerPreference = new FooterPreference(getActivity()); footerPreference.setTitle(R.string.sync_is_failing); getPreferenceScreen().addPreference(footerPreference); } } tests/robotests/src/com/android/settings/accounts/AccountHeaderPreferenceControllerTest.java +2 −12 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.accounts.AuthenticatorHelper; import com.android.settings.testutils.shadow.ShadowAuthenticationHelper; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.widget.LayoutPreference; Loading @@ -48,11 +48,9 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @RunWith(RobolectricTestRunner.class) @Config(shadows = AccountHeaderPreferenceControllerTest.ShadowAuthenticatorHelper.class) @Config(shadows = ShadowAuthenticationHelper.class) public class AccountHeaderPreferenceControllerTest { @Mock Loading Loading @@ -109,12 +107,4 @@ public class AccountHeaderPreferenceControllerTest { assertThat(label).isEqualTo(account.name); } @Implements(AuthenticatorHelper.class) public static class ShadowAuthenticatorHelper { @Implementation protected void onAccountsUpdated(Account[] accounts) { } } } tests/robotests/src/com/android/settings/accounts/AccountSyncSettingsTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settings.accounts; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; Loading @@ -24,7 +26,9 @@ import android.content.Context; import android.os.UserHandle; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import com.android.settings.testutils.shadow.ShadowAuthenticationHelper; import com.android.settings.testutils.shadow.ShadowContentResolver; import org.junit.After; Loading @@ -33,6 +37,7 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.androidx.fragment.FragmentController; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) Loading @@ -57,4 +62,18 @@ public class AccountSyncSettingsTest { settings.onPreferenceTreeClick(preference); // no crash } @Test @Config(shadows = {ShadowAuthenticationHelper.class}) public void createFooterPreference_shouldReturnFooter() { final AccountSyncSettings settings = FragmentController.of(new AccountSyncSettings()) .create() .get(); settings.createFooterPreference(); final Preference footer = settings.getPreferenceScreen().findPreference( "footer_preference"); assertThat(footer).isNotNull(); } } tests/robotests/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceControllerTest.java +6 −53 Original line number Diff line number Diff line Loading @@ -16,19 +16,12 @@ package com.android.settings.accounts; import static com.android.settings.accounts.TopLevelAccountEntryPreferenceControllerTest .ShadowAuthenticationHelper.LABELS; import static com.android.settings.accounts.TopLevelAccountEntryPreferenceControllerTest .ShadowAuthenticationHelper.TYPES; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.os.UserHandle; import android.text.TextUtils; import com.android.settings.R; import com.android.settingslib.accounts.AuthenticatorHelper; import com.android.settings.testutils.shadow.ShadowAuthenticationHelper; import org.junit.After; import org.junit.Before; Loading @@ -37,21 +30,22 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.annotation.Resetter; @RunWith(RobolectricTestRunner.class) @Config(shadows = {TopLevelAccountEntryPreferenceControllerTest.ShadowAuthenticationHelper.class}) @Config(shadows = {ShadowAuthenticationHelper.class}) public class TopLevelAccountEntryPreferenceControllerTest { private TopLevelAccountEntryPreferenceController mController; private Context mContext; private String[] LABELS; private String[] TYPES; @Before public void setUp() { mContext = RuntimeEnvironment.application; mController = new TopLevelAccountEntryPreferenceController(mContext, "test_key"); LABELS = ShadowAuthenticationHelper.getLabels(); TYPES = ShadowAuthenticationHelper.getTypes(); } @After Loading @@ -60,7 +54,6 @@ public class TopLevelAccountEntryPreferenceControllerTest { } @Test public void updateSummary_hasAccount_shouldDisplayUpTo3AccountTypes() { assertThat(mController.getSummary()) .isEqualTo(LABELS[0] + ", " + LABELS[1] + ", and " + LABELS[2]); Loading @@ -83,44 +76,4 @@ public class TopLevelAccountEntryPreferenceControllerTest { // should only show the 2 accounts with labels assertThat(mController.getSummary()).isEqualTo(LABELS[0] + " and " + LABELS[1]); } @Implements(AuthenticatorHelper.class) public static class ShadowAuthenticationHelper { static final String[] TYPES = {"type1", "type2", "type3", "type4"}; static final String[] LABELS = {"LABEL1", "LABEL2", "LABEL3", "LABEL4"}; private static String[] sEnabledAccount = TYPES; protected void __constructor__(Context context, UserHandle userHandle, AuthenticatorHelper.OnAccountsUpdateListener listener) { } private static void setEnabledAccount(String[] enabledAccount) { sEnabledAccount = enabledAccount; } @Resetter public static void reset() { sEnabledAccount = TYPES; } @Implementation protected String[] getEnabledAccountTypes() { return sEnabledAccount; } @Implementation protected CharSequence getLabelForType(Context context, final String accountType) { if (TextUtils.equals(accountType, TYPES[0])) { return LABELS[0]; } else if (TextUtils.equals(accountType, TYPES[1])) { return LABELS[1]; } else if (TextUtils.equals(accountType, TYPES[2])) { return LABELS[2]; } else if (TextUtils.equals(accountType, TYPES[3])) { return LABELS[3]; } return null; } } } tests/robotests/src/com/android/settings/testutils/shadow/ShadowAuthenticationHelper.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.testutils.shadow; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.text.TextUtils; import com.android.settingslib.accounts.AuthenticatorHelper; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.annotation.Resetter; @Implements(AuthenticatorHelper.class) public class ShadowAuthenticationHelper { static final String[] TYPES = {"type1", "type2", "type3", "type4"}; static final String[] LABELS = {"LABEL1", "LABEL2", "LABEL3", "LABEL4"}; private static String[] sEnabledAccount = TYPES; protected void __constructor__(Context context, UserHandle userHandle, AuthenticatorHelper.OnAccountsUpdateListener listener) { } public static void setEnabledAccount(String[] enabledAccount) { sEnabledAccount = enabledAccount; } @Resetter public static void reset() { sEnabledAccount = TYPES; } @Implementation protected String[] getEnabledAccountTypes() { return sEnabledAccount; } @Implementation protected CharSequence getLabelForType(Context context, final String accountType) { if (TextUtils.equals(accountType, TYPES[0])) { return LABELS[0]; } else if (TextUtils.equals(accountType, TYPES[1])) { return LABELS[1]; } else if (TextUtils.equals(accountType, TYPES[2])) { return LABELS[2]; } else if (TextUtils.equals(accountType, TYPES[3])) { return LABELS[3]; } return null; } @Implementation protected Drawable getDrawableForType(Context context, final String accountType) { return context.getPackageManager().getDefaultActivityIcon(); } public static String[] getTypes() { return TYPES; } public static String[] getLabels() { return LABELS; } } Loading
src/com/android/settings/accounts/AccountSyncSettings.java +10 −2 Original line number Diff line number Diff line Loading @@ -42,12 +42,14 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.widget.EntityHeaderController; import com.android.settingslib.widget.FooterPreference; import com.google.android.collect.Lists; Loading Loading @@ -458,8 +460,7 @@ public class AccountSyncSettings extends AccountPreferenceBase { syncPref.setChecked(oneTimeSyncMode || syncEnabled); } if (syncIsFailing) { mFooterPreferenceMixin.createFooterPreference() .setTitle(R.string.sync_is_failing); createFooterPreference(); } } Loading Loading @@ -552,4 +553,11 @@ public class AccountSyncSettings extends AccountPreferenceBase { | DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_TIME); } @VisibleForTesting void createFooterPreference() { final FooterPreference footerPreference = new FooterPreference(getActivity()); footerPreference.setTitle(R.string.sync_is_failing); getPreferenceScreen().addPreference(footerPreference); } }
tests/robotests/src/com/android/settings/accounts/AccountHeaderPreferenceControllerTest.java +2 −12 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.accounts.AuthenticatorHelper; import com.android.settings.testutils.shadow.ShadowAuthenticationHelper; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.widget.LayoutPreference; Loading @@ -48,11 +48,9 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @RunWith(RobolectricTestRunner.class) @Config(shadows = AccountHeaderPreferenceControllerTest.ShadowAuthenticatorHelper.class) @Config(shadows = ShadowAuthenticationHelper.class) public class AccountHeaderPreferenceControllerTest { @Mock Loading Loading @@ -109,12 +107,4 @@ public class AccountHeaderPreferenceControllerTest { assertThat(label).isEqualTo(account.name); } @Implements(AuthenticatorHelper.class) public static class ShadowAuthenticatorHelper { @Implementation protected void onAccountsUpdated(Account[] accounts) { } } }
tests/robotests/src/com/android/settings/accounts/AccountSyncSettingsTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settings.accounts; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; Loading @@ -24,7 +26,9 @@ import android.content.Context; import android.os.UserHandle; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import com.android.settings.testutils.shadow.ShadowAuthenticationHelper; import com.android.settings.testutils.shadow.ShadowContentResolver; import org.junit.After; Loading @@ -33,6 +37,7 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.androidx.fragment.FragmentController; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) Loading @@ -57,4 +62,18 @@ public class AccountSyncSettingsTest { settings.onPreferenceTreeClick(preference); // no crash } @Test @Config(shadows = {ShadowAuthenticationHelper.class}) public void createFooterPreference_shouldReturnFooter() { final AccountSyncSettings settings = FragmentController.of(new AccountSyncSettings()) .create() .get(); settings.createFooterPreference(); final Preference footer = settings.getPreferenceScreen().findPreference( "footer_preference"); assertThat(footer).isNotNull(); } }
tests/robotests/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceControllerTest.java +6 −53 Original line number Diff line number Diff line Loading @@ -16,19 +16,12 @@ package com.android.settings.accounts; import static com.android.settings.accounts.TopLevelAccountEntryPreferenceControllerTest .ShadowAuthenticationHelper.LABELS; import static com.android.settings.accounts.TopLevelAccountEntryPreferenceControllerTest .ShadowAuthenticationHelper.TYPES; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.os.UserHandle; import android.text.TextUtils; import com.android.settings.R; import com.android.settingslib.accounts.AuthenticatorHelper; import com.android.settings.testutils.shadow.ShadowAuthenticationHelper; import org.junit.After; import org.junit.Before; Loading @@ -37,21 +30,22 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.annotation.Resetter; @RunWith(RobolectricTestRunner.class) @Config(shadows = {TopLevelAccountEntryPreferenceControllerTest.ShadowAuthenticationHelper.class}) @Config(shadows = {ShadowAuthenticationHelper.class}) public class TopLevelAccountEntryPreferenceControllerTest { private TopLevelAccountEntryPreferenceController mController; private Context mContext; private String[] LABELS; private String[] TYPES; @Before public void setUp() { mContext = RuntimeEnvironment.application; mController = new TopLevelAccountEntryPreferenceController(mContext, "test_key"); LABELS = ShadowAuthenticationHelper.getLabels(); TYPES = ShadowAuthenticationHelper.getTypes(); } @After Loading @@ -60,7 +54,6 @@ public class TopLevelAccountEntryPreferenceControllerTest { } @Test public void updateSummary_hasAccount_shouldDisplayUpTo3AccountTypes() { assertThat(mController.getSummary()) .isEqualTo(LABELS[0] + ", " + LABELS[1] + ", and " + LABELS[2]); Loading @@ -83,44 +76,4 @@ public class TopLevelAccountEntryPreferenceControllerTest { // should only show the 2 accounts with labels assertThat(mController.getSummary()).isEqualTo(LABELS[0] + " and " + LABELS[1]); } @Implements(AuthenticatorHelper.class) public static class ShadowAuthenticationHelper { static final String[] TYPES = {"type1", "type2", "type3", "type4"}; static final String[] LABELS = {"LABEL1", "LABEL2", "LABEL3", "LABEL4"}; private static String[] sEnabledAccount = TYPES; protected void __constructor__(Context context, UserHandle userHandle, AuthenticatorHelper.OnAccountsUpdateListener listener) { } private static void setEnabledAccount(String[] enabledAccount) { sEnabledAccount = enabledAccount; } @Resetter public static void reset() { sEnabledAccount = TYPES; } @Implementation protected String[] getEnabledAccountTypes() { return sEnabledAccount; } @Implementation protected CharSequence getLabelForType(Context context, final String accountType) { if (TextUtils.equals(accountType, TYPES[0])) { return LABELS[0]; } else if (TextUtils.equals(accountType, TYPES[1])) { return LABELS[1]; } else if (TextUtils.equals(accountType, TYPES[2])) { return LABELS[2]; } else if (TextUtils.equals(accountType, TYPES[3])) { return LABELS[3]; } return null; } } }
tests/robotests/src/com/android/settings/testutils/shadow/ShadowAuthenticationHelper.java 0 → 100644 +80 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.testutils.shadow; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.text.TextUtils; import com.android.settingslib.accounts.AuthenticatorHelper; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.annotation.Resetter; @Implements(AuthenticatorHelper.class) public class ShadowAuthenticationHelper { static final String[] TYPES = {"type1", "type2", "type3", "type4"}; static final String[] LABELS = {"LABEL1", "LABEL2", "LABEL3", "LABEL4"}; private static String[] sEnabledAccount = TYPES; protected void __constructor__(Context context, UserHandle userHandle, AuthenticatorHelper.OnAccountsUpdateListener listener) { } public static void setEnabledAccount(String[] enabledAccount) { sEnabledAccount = enabledAccount; } @Resetter public static void reset() { sEnabledAccount = TYPES; } @Implementation protected String[] getEnabledAccountTypes() { return sEnabledAccount; } @Implementation protected CharSequence getLabelForType(Context context, final String accountType) { if (TextUtils.equals(accountType, TYPES[0])) { return LABELS[0]; } else if (TextUtils.equals(accountType, TYPES[1])) { return LABELS[1]; } else if (TextUtils.equals(accountType, TYPES[2])) { return LABELS[2]; } else if (TextUtils.equals(accountType, TYPES[3])) { return LABELS[3]; } return null; } @Implementation protected Drawable getDrawableForType(Context context, final String accountType) { return context.getPackageManager().getDefaultActivityIcon(); } public static String[] getTypes() { return TYPES; } public static String[] getLabels() { return LABELS; } }