The new About > Account behavior

- Change the display content of the summary while multiple accounts.
- Goto the Passwords & accounts page when users click Account item.

Fixes: 290593956
Test: atest BrandedAccountPreferenceControllerTest
Change-Id: Iae32803076d86455f52f2ffd278e06995161adfe
This commit is contained in:
Sunny Shao
2023-09-05 10:10:09 +08:00
parent 1d7a5e125b
commit b44fb93aa8
3 changed files with 64 additions and 17 deletions

View File

@@ -17,7 +17,6 @@
package com.android.settings.deviceinfo;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -26,6 +25,9 @@ import android.accounts.Account;
import android.content.Context;
import android.content.res.Resources;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -46,17 +48,21 @@ public class BrandedAccountPreferenceControllerTest {
private Context mContext;
private FakeFeatureFactory mFakeFeatureFactory;
private PreferenceScreen mScreen;
private Preference mPreference;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
when(mContext.getResources()).thenReturn(mResources);
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
mScreen = new PreferenceManager(mContext).createPreferenceScreen(mContext);
mPreference = new Preference(mContext);
}
@Test
public void isAvailable_configOn_noAccount_off() {
when(mContext.getResources()).thenReturn(mResources);
final int boolId = ResourcesUtils.getResourcesId(
ApplicationProvider.getApplicationContext(), "bool",
"config_show_branded_account_in_device_info");
@@ -69,6 +75,7 @@ public class BrandedAccountPreferenceControllerTest {
@Test
public void isAvailable_accountIsAvailable_on() {
when(mContext.getResources()).thenReturn(mResources);
final int boolId = ResourcesUtils.getResourcesId(
ApplicationProvider.getApplicationContext(), "bool",
"config_show_branded_account_in_device_info");
@@ -84,6 +91,7 @@ public class BrandedAccountPreferenceControllerTest {
@Test
public void isAvailable_configOff_hasAccount_off() {
when(mContext.getResources()).thenReturn(mResources);
final int boolId = ResourcesUtils.getResourcesId(
ApplicationProvider.getApplicationContext(), "bool",
"config_show_branded_account_in_device_info");
@@ -96,4 +104,42 @@ public class BrandedAccountPreferenceControllerTest {
assertThat(controller.isAvailable()).isFalse();
}
/**
* Test displayPreference has one account.
*/
@Test
public void displayPreference_hasOneAccount_showAccount() {
when(mFakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
.thenReturn(new Account[]{new Account("teresaikeda@gmail.com",
"com.google")});
mPreference.setKey("test_key");
mScreen.addPreference(mPreference);
final BrandedAccountPreferenceController controller =
new BrandedAccountPreferenceController(mContext, "test_key");
controller.displayPreference(mScreen);
assertThat(mPreference.getSummary()).isEqualTo("teresaikeda@gmail.com");
}
/**
* Test displayPreference has two accounts.
*/
@Test
public void displayPreference_hasTwoAccounts_showTwoAccountSummary() {
when(mFakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
.thenReturn(new Account[]{new Account("teresa@gmail.com", "com.google"),
new Account("reno@gmail.com", "com.google") });
mPreference.setKey("test_key");
mScreen.addPreference(mPreference);
final BrandedAccountPreferenceController controller =
new BrandedAccountPreferenceController(mContext, "test_key");
controller.displayPreference(mScreen);
assertThat(mPreference.getSummary()).isEqualTo("2 accounts");
}
}