1950665abafe4cca4102fc477614570c29debf855Brandon Maxwell/*
2950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * Copyright (C) 2015 The Android Open Source Project
3950665abafe4cca4102fc477614570c29debf855Brandon Maxwell *
4950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * Licensed under the Apache License, Version 2.0 (the "License");
5950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * you may not use this file except in compliance with the License.
6950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * You may obtain a copy of the License at
7950665abafe4cca4102fc477614570c29debf855Brandon Maxwell *
8950665abafe4cca4102fc477614570c29debf855Brandon Maxwell *      http://www.apache.org/licenses/LICENSE-2.0
9950665abafe4cca4102fc477614570c29debf855Brandon Maxwell *
10950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * Unless required by applicable law or agreed to in writing, software
11950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * distributed under the License is distributed on an "AS IS" BASIS,
12950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * See the License for the specific language governing permissions and
14950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * limitations under the License.
15950665abafe4cca4102fc477614570c29debf855Brandon Maxwell */
16950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
17950665abafe4cca4102fc477614570c29debf855Brandon Maxwellpackage com.android.contacts.common.preference;
18950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
19950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.content.Context;
20950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.content.SharedPreferences;
21950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.content.res.Resources;
22950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.test.AndroidTestCase;
23ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwellimport android.test.InstrumentationTestCase;
24950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.test.suitebuilder.annotation.MediumTest;
25950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
26950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport com.android.contacts.common.model.account.AccountWithDataSet;
27950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
28950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport junit.framework.Assert;
29950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
30950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport org.mockito.Mock;
31950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport org.mockito.Mockito;
32950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport org.mockito.MockitoAnnotations;
33950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
34950665abafe4cca4102fc477614570c29debf855Brandon Maxwell@MediumTest
35ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwellpublic class ContactsPreferencesTest extends InstrumentationTestCase {
36950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
37950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    private static final String ACCOUNT_KEY = "ACCOUNT_KEY";
38950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
39950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    @Mock private Context mContext;
40950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    @Mock private Resources mResources;
41950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    @Mock private SharedPreferences mSharedPreferences;
42950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
43950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    private ContactsPreferences mContactsPreferences;
44950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
45950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    @Override
46950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void setUp() throws Exception {
47950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        super.setUp();
48ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwell        System.setProperty("dexmaker.dexcache",
49ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwell                getInstrumentation().getTargetContext().getCacheDir().getPath());
50950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        MockitoAnnotations.initMocks(this);
51950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
52950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mContext.getResources()).thenReturn(mResources);
53950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getString(Mockito.anyInt()))
54950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                .thenReturn(ACCOUNT_KEY); // contact_editor_default_account_key
55950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
56950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mContext.getSharedPreferences(Mockito.anyString(), Mockito.anyInt()))
57950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                .thenReturn(mSharedPreferences);
58950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mSharedPreferences.contains(ContactsPreferences.SORT_ORDER_KEY))
59950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                .thenReturn(true);
60950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mSharedPreferences.contains(ContactsPreferences.DISPLAY_ORDER_KEY))
61950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                .thenReturn(true);
62950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
63950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        mContactsPreferences = new ContactsPreferences(mContext);
64950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
65950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
66950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void testGetSortOrderDefault() {
67950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
68950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                false, // R.bool.config_sort_order_user_changeable
69950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                true // R.bool.config_default_sort_order_primary
70950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        );
71950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
72950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getSortOrder());
73950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
74950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
75950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void testGetSortOrder() {
76950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
77950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                true // R.bool.config_sort_order_user_changeable
78950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        );
79950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY),
80950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY);
81950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
82950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getSortOrder());
83950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
84950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
85950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void testGetDisplayOrderDefault() {
86950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
87950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                false, // R.bool.config_display_order_user_changeable
88950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                true // R.bool.config_default_display_order_primary
89950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        );
90950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
91950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getDisplayOrder());
92950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
93950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
94950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void testGetDisplayOrder() {
95950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
96950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                true // R.bool.config_display_order_user_changeable
97950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        );
98950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY),
99950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
100950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
101950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getDisplayOrder());
102950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
103950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
104950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void testRefreshSortOrder() throws InterruptedException {
105950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
106950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                true // R.bool.config_sort_order_user_changeable
107950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        );
108950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY),
109950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY,
110950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                ContactsPreferences.SORT_ORDER_ALTERNATIVE);
111950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
112950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
113950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getSortOrder());
114950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        mContactsPreferences.refreshValue(ContactsPreferences.SORT_ORDER_KEY);
115950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
116950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.SORT_ORDER_ALTERNATIVE,
117950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getSortOrder());
118950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
119950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
120950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void testRefreshDisplayOrder() throws InterruptedException {
121950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
122950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                true // R.bool.config_display_order_user_changeable
123950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        );
124950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY),
125950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
126950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
127950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
128950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
129950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getDisplayOrder());
130950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
131950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
132950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE,
133950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                mContactsPreferences.getDisplayOrder());
134950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
135950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
136950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    public void testRefreshDefaultAccount() throws InterruptedException {
137950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
138950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                true // R.bool.config_default_account_user_changeable
139950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        );
140950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
141950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString()))
142950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                .thenReturn(new AccountWithDataSet("name1", "type1", "dataset1").stringify(),
143950665abafe4cca4102fc477614570c29debf855Brandon Maxwell                        new AccountWithDataSet("name2", "type2", "dataset2").stringify());
144950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
145950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals("name1", mContactsPreferences.getDefaultAccount());
146950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        mContactsPreferences.refreshValue(ACCOUNT_KEY);
147950665abafe4cca4102fc477614570c29debf855Brandon Maxwell
148950665abafe4cca4102fc477614570c29debf855Brandon Maxwell        Assert.assertEquals("name2", mContactsPreferences.getDefaultAccount());
149950665abafe4cca4102fc477614570c29debf855Brandon Maxwell    }
150950665abafe4cca4102fc477614570c29debf855Brandon Maxwell}
151