Convert ContactPreferenceTest to a robolectric test.
Robolectric tests are much faster than instrumentation tests.
Test: make RunEmergencyInfoRoboTests
Change-Id: If02515a0bbc40c46a05955a299d95b221b9049c2
diff --git a/src/com/android/emergency/preferences/ContactPreference.java b/src/com/android/emergency/preferences/ContactPreference.java
index 8cdb057..ebe1dea 100644
--- a/src/com/android/emergency/preferences/ContactPreference.java
+++ b/src/com/android/emergency/preferences/ContactPreference.java
@@ -54,6 +54,7 @@
private static final String TAG = "ContactPreference";
+ private final ContactFactory mContactFactory;
private EmergencyContactManager.Contact mContact;
@Nullable private RemoveContactPreferenceListener mRemoveContactPreferenceListener;
@Nullable private AlertDialog mRemoveContactDialog;
@@ -69,11 +70,37 @@
}
/**
+ * Interface for getting a contact for a phone number Uri.
+ */
+ public interface ContactFactory {
+ /**
+ * Gets a {@link EmergencyContactManager.Contact} for a phone {@link Uri}.
+ *
+ * @param context The context to use.
+ * @param phoneUri The phone uri.
+ * @return a contact for the given phone uri.
+ */
+ EmergencyContactManager.Contact getContact(Context context, Uri phoneUri);
+ }
+
+ /**
* Instantiates a ContactPreference that displays an emergency contact, taking in a Context and
* the Uri.
*/
public ContactPreference(Context context, @NonNull Uri phoneUri) {
+ this(context, phoneUri, new ContactFactory() {
+ @Override
+ public EmergencyContactManager.Contact getContact(Context context, Uri phoneUri) {
+ return EmergencyContactManager.getContact(context, phoneUri);
+ }
+ });
+ }
+
+ @VisibleForTesting
+ public ContactPreference(Context context, @NonNull Uri phoneUri,
+ @NonNull ContactFactory contactFactory) {
super(context);
+ mContactFactory = contactFactory;
setOrder(DEFAULT_ORDER);
setPhoneUri(phoneUri);
@@ -87,7 +114,7 @@
mRemoveContactDialog != null) {
mRemoveContactDialog.dismiss();
}
- mContact = EmergencyContactManager.getContact(getContext(), phoneUri);
+ mContact = mContactFactory.getContact(getContext(), phoneUri);
setTitle(mContact.getName());
setKey(mContact.getPhoneUri().toString());