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

Commit 030b126e authored by avipul's avatar avipul
Browse files

Fixes unit tests for ContactsPreferences

Also, makes PhoneticNameDisplay preference configurable.

Test:
Auotomated test is added to verify PhoneticNameDisplay preference in
ContactPreference.

Manually tested by changing the
config_phonetic_name_display_user_changeable.
False to removed the option from settings.
True to display the option in Settings.

Bug: 35811420
Change-Id: I395ed4a3539c90d8aa1731d1590930481ae31097
parent 365a5f75
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -43,6 +43,9 @@
    <!-- If true, the default sort order is primary (i.e. by given name) -->
    <!-- If true, the default sort order is primary (i.e. by given name) -->
    <bool name="config_default_display_order_primary">true</bool>
    <bool name="config_default_display_order_primary">true</bool>


    <!-- If true, an option is shown in Display Options UI to choose a phonetic name display preference -->
    <bool name="config_phonetic_name_display_user_changeable">true</bool>

    <!-- If true, phonetic name fields are not visible when empty -->
    <!-- If true, phonetic name fields are not visible when empty -->
    <bool name="config_default_hide_phonetic_name_if_empty">true</bool>
    <bool name="config_default_hide_phonetic_name_if_empty">true</bool>


+12 −0
Original line number Original line Diff line number Diff line
@@ -177,6 +177,11 @@ public class ContactsPreferences implements OnSharedPreferenceChangeListener {
        }
        }
    }
    }


    public boolean isPhoneticNameDisplayPreferenceChangeable() {
        return mContext.getResources().getBoolean(
                R.bool.config_phonetic_name_display_user_changeable);
    }

    public void setPhoneticNameDisplayPreference(int phoneticNameDisplayPreference) {
    public void setPhoneticNameDisplayPreference(int phoneticNameDisplayPreference) {
        mPhoneticNameDisplayPreference = phoneticNameDisplayPreference;
        mPhoneticNameDisplayPreference = phoneticNameDisplayPreference;
        final Editor editor = mPreferences.edit();
        final Editor editor = mPreferences.edit();
@@ -186,6 +191,9 @@ public class ContactsPreferences implements OnSharedPreferenceChangeListener {
    }
    }


    public int getPhoneticNameDisplayPreference() {
    public int getPhoneticNameDisplayPreference() {
        if (!isPhoneticNameDisplayPreferenceChangeable()) {
            return getDefaultPhoneticNameDisplayPreference();
        }
        if (mPhoneticNameDisplayPreference == PREFERENCE_UNASSIGNED) {
        if (mPhoneticNameDisplayPreference == PREFERENCE_UNASSIGNED) {
            mPhoneticNameDisplayPreference = mPreferences.getInt(PHONETIC_NAME_DISPLAY_KEY,
            mPhoneticNameDisplayPreference = mPreferences.getInt(PHONETIC_NAME_DISPLAY_KEY,
                    getDefaultPhoneticNameDisplayPreference());
                    getDefaultPhoneticNameDisplayPreference());
@@ -281,6 +289,7 @@ public class ContactsPreferences implements OnSharedPreferenceChangeListener {
        // listener was unregistered.
        // listener was unregistered.
        mDisplayOrder = PREFERENCE_UNASSIGNED;
        mDisplayOrder = PREFERENCE_UNASSIGNED;
        mSortOrder = PREFERENCE_UNASSIGNED;
        mSortOrder = PREFERENCE_UNASSIGNED;
        mPhoneticNameDisplayPreference = PREFERENCE_UNASSIGNED;
        mDefaultAccount = null;
        mDefaultAccount = null;


        mPreferences.registerOnSharedPreferenceChangeListener(this);
        mPreferences.registerOnSharedPreferenceChangeListener(this);
@@ -319,6 +328,9 @@ public class ContactsPreferences implements OnSharedPreferenceChangeListener {
        } else if (SORT_ORDER_KEY.equals(key)) {
        } else if (SORT_ORDER_KEY.equals(key)) {
            mSortOrder = PREFERENCE_UNASSIGNED;
            mSortOrder = PREFERENCE_UNASSIGNED;
            mSortOrder = getSortOrder();
            mSortOrder = getSortOrder();
        } else if (PHONETIC_NAME_DISPLAY_KEY.equals(key)) {
            mPhoneticNameDisplayPreference = PREFERENCE_UNASSIGNED;
            mPhoneticNameDisplayPreference = getPhoneticNameDisplayPreference();
        } else if (mDefaultAccountKey.equals(key)) {
        } else if (mDefaultAccountKey.equals(key)) {
            mDefaultAccount = null;
            mDefaultAccount = null;
            mDefaultAccount = getDefaultAccount();
            mDefaultAccount = getDefaultAccount();
+5 −0
Original line number Original line Diff line number Diff line
@@ -83,6 +83,7 @@ public class DisplayOptionsPreferenceFragment extends PreferenceFragment
    private static final String KEY_EXPORT = "export";
    private static final String KEY_EXPORT = "export";
    private static final String KEY_MY_INFO = "myInfo";
    private static final String KEY_MY_INFO = "myInfo";
    private static final String KEY_SORT_ORDER = "sortOrder";
    private static final String KEY_SORT_ORDER = "sortOrder";
    private static final String KEY_PHONETIC_NAME_DISPLAY = "phoneticNameDisplay";


    private static final int LOADER_PROFILE = 0;
    private static final int LOADER_PROFILE = 0;
    private static final int LOADER_ACCOUNTS = 1;
    private static final int LOADER_ACCOUNTS = 1;
@@ -269,6 +270,10 @@ public class DisplayOptionsPreferenceFragment extends PreferenceFragment
            getPreferenceScreen().removePreference(findPreference(KEY_SORT_ORDER));
            getPreferenceScreen().removePreference(findPreference(KEY_SORT_ORDER));
        }
        }


        if (!resources.getBoolean(R.bool.config_phonetic_name_display_user_changeable)) {
            getPreferenceScreen().removePreference(findPreference(KEY_PHONETIC_NAME_DISPLAY));
        }

        if (HelpUtils.isHelpAndFeedbackAvailable()) {
        if (HelpUtils.isHelpAndFeedbackAvailable()) {
            getPreferenceScreen().removePreference(findPreference(KEY_ABOUT));
            getPreferenceScreen().removePreference(findPreference(KEY_ABOUT));
        }
        }
+39 −0
Original line number Original line Diff line number Diff line
@@ -61,6 +61,8 @@ public class ContactsPreferencesTest extends InstrumentationTestCase {
                .thenReturn(true);
                .thenReturn(true);
        Mockito.when(mSharedPreferences.contains(ContactsPreferences.DISPLAY_ORDER_KEY))
        Mockito.when(mSharedPreferences.contains(ContactsPreferences.DISPLAY_ORDER_KEY))
                .thenReturn(true);
                .thenReturn(true);
        Mockito.when(mSharedPreferences.contains(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY))
                .thenReturn(true);


        InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
        InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            @Override
@@ -108,6 +110,43 @@ public class ContactsPreferencesTest extends InstrumentationTestCase {
                mContactsPreferences.getDisplayOrder());
                mContactsPreferences.getDisplayOrder());
    }
    }


    public void testGetPhoneticNameDisplayDefault() {
        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
                false, // R.bool.config_phonetic_name_display_user_changeable
                true // R.bool.config_default_hide_phonetic_name_if_empty
        );
        Assert.assertEquals(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
                mContactsPreferences.getPhoneticNameDisplayPreference());
    }

    public void testGetPhoneticNameDisplay() {
        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
                true // R.bool.config_phonetic_name_display_user_changeable
        );
        Mockito.when(mSharedPreferences.getInt(
                Mockito.eq(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY),
                Mockito.anyInt())).thenReturn(PhoneticNameDisplayPreference.HIDE_IF_EMPTY);
        Assert.assertEquals(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
                mContactsPreferences.getPhoneticNameDisplayPreference());
    }

    public void testRefreshPhoneticNameDisplay() throws InterruptedException {
        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
                true // R.bool.config_phonetic_name_display_user_changeable
        );
        Mockito.when(mSharedPreferences.getInt(
                Mockito.eq(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY),
                Mockito.anyInt())).thenReturn(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
                PhoneticNameDisplayPreference.SHOW_ALWAYS);

        Assert.assertEquals(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
                mContactsPreferences.getPhoneticNameDisplayPreference());
        mContactsPreferences.refreshValue(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY);

        Assert.assertEquals(PhoneticNameDisplayPreference.SHOW_ALWAYS,
                mContactsPreferences.getPhoneticNameDisplayPreference());
    }

    public void testRefreshSortOrder() throws InterruptedException {
    public void testRefreshSortOrder() throws InterruptedException {
        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
                true // R.bool.config_sort_order_user_changeable
                true // R.bool.config_sort_order_user_changeable