Fixes ContactLoaderTests.
The tests require an AccountTypeManager to work.
Add a way to support this in the ContactsMockContext and inject a mock
in the setUp of this test.
Bug: 5162385
Change-Id: I36c14845396ab6eeba212b5f6b7098785e71d86b
diff --git a/src/com/android/contacts/ContactLoader.java b/src/com/android/contacts/ContactLoader.java
index ceaa246..b49a357 100644
--- a/src/com/android/contacts/ContactLoader.java
+++ b/src/com/android/contacts/ContactLoader.java
@@ -1117,7 +1117,7 @@
final ContentValues entityValues = entity.getEntityValues();
final String type = entityValues.getAsString(RawContacts.ACCOUNT_TYPE);
final String dataSet = entityValues.getAsString(RawContacts.DATA_SET);
- final AccountType accountType = AccountTypeManager.getInstance(context ).getAccountType(
+ final AccountType accountType = AccountTypeManager.getInstance(context).getAccountType(
type, dataSet);
final String serviceName = accountType.getViewContactNotifyServiceClassName();
final String resPackageName = accountType.resPackageName;
diff --git a/tests/src/com/android/contacts/ContactLoaderTest.java b/tests/src/com/android/contacts/ContactLoaderTest.java
index a731f24..3560ce1 100644
--- a/tests/src/com/android/contacts/ContactLoaderTest.java
+++ b/tests/src/com/android/contacts/ContactLoaderTest.java
@@ -16,7 +16,12 @@
package com.android.contacts;
+import com.android.contacts.model.AccountType;
+import com.android.contacts.model.AccountWithDataSet;
+import com.android.contacts.model.BaseAccountType;
+import com.android.contacts.test.InjectedServices;
import com.android.contacts.tests.mocks.ContactsMockContext;
+import com.android.contacts.tests.mocks.MockAccountTypeManager;
import com.android.contacts.tests.mocks.MockContentProvider;
import android.content.ContentUris;
@@ -36,18 +41,31 @@
*/
@LargeTest
public class ContactLoaderTest extends LoaderTestCase {
- ContactsMockContext mMockContext;
- MockContentProvider mContactsProvider;
+ private ContactsMockContext mMockContext;
+ private MockContentProvider mContactsProvider;
@Override
protected void setUp() throws Exception {
super.setUp();
mMockContext = new ContactsMockContext(getContext());
mContactsProvider = mMockContext.getContactsProvider();
+
+ InjectedServices services = new InjectedServices();
+ AccountType accountType = new BaseAccountType();
+ accountType.accountType = "mockAccountType";
+
+ AccountWithDataSet account =
+ new AccountWithDataSet("mockAccountName", "mockAccountType", null);
+
+ mMockContext.setMockAccountTypeManager(
+ new MockAccountTypeManager(
+ new AccountType[] { accountType }, new AccountWithDataSet[] { account }));
}
@Override
protected void tearDown() throws Exception {
+ mMockContext = null;
+ mContactsProvider = null;
super.tearDown();
}
diff --git a/tests/src/com/android/contacts/tests/mocks/ContactsMockContext.java b/tests/src/com/android/contacts/tests/mocks/ContactsMockContext.java
index 93ea4f4..2f959f4 100644
--- a/tests/src/com/android/contacts/tests/mocks/ContactsMockContext.java
+++ b/tests/src/com/android/contacts/tests/mocks/ContactsMockContext.java
@@ -16,6 +16,8 @@
package com.android.contacts.tests.mocks;
+import com.android.contacts.model.AccountTypeManager;
+
import android.content.ContentResolver;
import android.content.Context;
import android.content.ContextWrapper;
@@ -32,13 +34,11 @@
* to mock content providers.
*/
public class ContactsMockContext extends ContextWrapper {
-
- private static final String TAG = "ContactsMockContext";
-
private ContactsMockPackageManager mPackageManager;
private MockContentResolver mContentResolver;
private MockContentProvider mContactsProvider;
private MockContentProvider mSettingsProvider;
+ private MockAccountTypeManager mMockAccountTypeManager;
private Intent mIntentForStartActivity;
public ContactsMockContext(Context base) {
@@ -53,6 +53,10 @@
mContentResolver.addProvider(Settings.AUTHORITY, mSettingsProvider);
}
+ public void setMockAccountTypeManager(MockAccountTypeManager mockAccountTypeManager) {
+ mMockAccountTypeManager = mockAccountTypeManager;
+ }
+
@Override
public ContentResolver getContentResolver() {
return mContentResolver;
@@ -93,4 +97,12 @@
mContactsProvider.verify();
mSettingsProvider.verify();
}
+
+ @Override
+ public Object getSystemService(String name) {
+ if (AccountTypeManager.ACCOUNT_TYPE_SERVICE.equals(name)) {
+ return mMockAccountTypeManager;
+ }
+ return super.getSystemService(name);
+ }
}