• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.contacts.common.preference;
18 
19 import android.content.Context;
20 import android.content.SharedPreferences;
21 import android.content.res.Resources;
22 import android.test.AndroidTestCase;
23 import android.test.InstrumentationTestCase;
24 import android.test.suitebuilder.annotation.MediumTest;
25 
26 import com.android.contacts.common.model.account.AccountWithDataSet;
27 
28 import junit.framework.Assert;
29 
30 import org.mockito.Mock;
31 import org.mockito.Mockito;
32 import org.mockito.MockitoAnnotations;
33 
34 @MediumTest
35 public class ContactsPreferencesTest extends InstrumentationTestCase {
36 
37     private static final String ACCOUNT_KEY = "ACCOUNT_KEY";
38 
39     @Mock private Context mContext;
40     @Mock private Resources mResources;
41     @Mock private SharedPreferences mSharedPreferences;
42 
43     private ContactsPreferences mContactsPreferences;
44 
45     @Override
setUp()46     public void setUp() throws Exception {
47         super.setUp();
48         System.setProperty("dexmaker.dexcache",
49                 getInstrumentation().getTargetContext().getCacheDir().getPath());
50         MockitoAnnotations.initMocks(this);
51 
52         Mockito.when(mContext.getResources()).thenReturn(mResources);
53         Mockito.when(mResources.getString(Mockito.anyInt()))
54                 .thenReturn(ACCOUNT_KEY); // contact_editor_default_account_key
55 
56         Mockito.when(mContext.getSharedPreferences(Mockito.anyString(), Mockito.anyInt()))
57                 .thenReturn(mSharedPreferences);
58         Mockito.when(mSharedPreferences.contains(ContactsPreferences.SORT_ORDER_KEY))
59                 .thenReturn(true);
60         Mockito.when(mSharedPreferences.contains(ContactsPreferences.DISPLAY_ORDER_KEY))
61                 .thenReturn(true);
62 
63         mContactsPreferences = new ContactsPreferences(mContext);
64     }
65 
testGetSortOrderDefault()66     public void testGetSortOrderDefault() {
67         Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
68                 false, // R.bool.config_sort_order_user_changeable
69                 true // R.bool.config_default_sort_order_primary
70         );
71         Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
72                 mContactsPreferences.getSortOrder());
73     }
74 
testGetSortOrder()75     public void testGetSortOrder() {
76         Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
77                 true // R.bool.config_sort_order_user_changeable
78         );
79         Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY),
80                 Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY);
81         Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
82                 mContactsPreferences.getSortOrder());
83     }
84 
testGetDisplayOrderDefault()85     public void testGetDisplayOrderDefault() {
86         Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
87                 false, // R.bool.config_display_order_user_changeable
88                 true // R.bool.config_default_display_order_primary
89         );
90         Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
91                 mContactsPreferences.getDisplayOrder());
92     }
93 
testGetDisplayOrder()94     public void testGetDisplayOrder() {
95         Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
96                 true // R.bool.config_display_order_user_changeable
97         );
98         Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY),
99                 Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
100         Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
101                 mContactsPreferences.getDisplayOrder());
102     }
103 
testRefreshSortOrder()104     public void testRefreshSortOrder() throws InterruptedException {
105         Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
106                 true // R.bool.config_sort_order_user_changeable
107         );
108         Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY),
109                 Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY,
110                 ContactsPreferences.SORT_ORDER_ALTERNATIVE);
111 
112         Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY,
113                 mContactsPreferences.getSortOrder());
114         mContactsPreferences.refreshValue(ContactsPreferences.SORT_ORDER_KEY);
115 
116         Assert.assertEquals(ContactsPreferences.SORT_ORDER_ALTERNATIVE,
117                 mContactsPreferences.getSortOrder());
118     }
119 
testRefreshDisplayOrder()120     public void testRefreshDisplayOrder() throws InterruptedException {
121         Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
122                 true // R.bool.config_display_order_user_changeable
123         );
124         Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY),
125                 Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
126                 ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
127 
128         Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
129                 mContactsPreferences.getDisplayOrder());
130         mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
131 
132         Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE,
133                 mContactsPreferences.getDisplayOrder());
134     }
135 
testRefreshDefaultAccount()136     public void testRefreshDefaultAccount() throws InterruptedException {
137         Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
138                 true // R.bool.config_default_account_user_changeable
139         );
140 
141         Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString()))
142                 .thenReturn(new AccountWithDataSet("name1", "type1", "dataset1").stringify(),
143                         new AccountWithDataSet("name2", "type2", "dataset2").stringify());
144 
145         Assert.assertEquals("name1", mContactsPreferences.getDefaultAccount());
146         mContactsPreferences.refreshValue(ACCOUNT_KEY);
147 
148         Assert.assertEquals("name2", mContactsPreferences.getDefaultAccount());
149     }
150 }
151