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