summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJuan Lang <juanlang@google.com>2017-06-16 08:38:02 -0700
committerJuan Lang <juanlang@google.com>2017-06-19 10:15:16 -0700
commite979201f94608dd6817e836a486c5d1d3510d05a (patch)
treef4c2f961c2532921a30bb76c3e982a090ff74b36 /tests
parent1df3cdae0d5a05731b2511ac4dc343c3446747a9 (diff)
downloadEmergencyInfo-e979201f94608dd6817e836a486c5d1d3510d05a.tar.gz
Rewrite EmergencyContactsPreferenceTest as a unit test.
The instrumentation test runner is deprecated. Rewriting the tests paves the way to migrating to the support library, which the new UX relies on. Bug: 30046624 Test: runtest --path packages/apps/EmergencyInfo/tests Change-Id: I73b820dc352713768a41e32713b02b4388b80452
Diffstat (limited to 'tests')
-rw-r--r--tests/instrumentation/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java177
-rw-r--r--tests/unit/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java123
2 files changed, 123 insertions, 177 deletions
diff --git a/tests/instrumentation/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java b/tests/instrumentation/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java
deleted file mode 100644
index ac4b1e08..00000000
--- a/tests/instrumentation/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.emergency.preferences;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.AlertDialog;
-import android.content.ContentResolver;
-import android.content.DialogInterface;
-import android.net.Uri;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceManager;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.view.View;
-
-import com.android.emergency.ContactTestUtils;
-import com.android.emergency.PreferenceKeys;
-import com.android.emergency.R;
-import com.android.emergency.edit.EditInfoActivity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tests for {@link EmergencyContactsPreference}.
- */
-@LargeTest
-public class EmergencyContactsPreferenceTest
- extends ActivityInstrumentationTestCase2<EditInfoActivity> {
- private PreferenceFragment mEditInfoFragment;
- private EmergencyContactsPreference mEmergencyContactsPreference;
- private ContentResolver mContentResolver;
-
- public EmergencyContactsPreferenceTest() {
- super(EditInfoActivity.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mEditInfoFragment = getActivity().getFragment();
-
- mEmergencyContactsPreference =
- (EmergencyContactsPreference) mEditInfoFragment
- .findPreference(PreferenceKeys.KEY_EMERGENCY_CONTACTS);
- try {
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mEmergencyContactsPreference.setEmergencyContacts(new ArrayList<Uri>());
- }
- });
- } catch (Throwable throwable) {
- fail("Should not throw exception: " + throwable.getMessage());
- }
-
- mContentResolver = getActivity().getContentResolver();
- }
-
- @Override
- protected void tearDown() throws Exception {
- PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit();
- super.tearDown();
- }
-
- public void testWidgetClick_positiveButton() throws Throwable {
- final String name = "Jane";
- final String phoneNumber = "456";
-
- final Uri emergencyPhoneUri =
- ContactTestUtils.createContact(mContentResolver, name, phoneNumber);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mEmergencyContactsPreference.addNewEmergencyContact(emergencyPhoneUri);
- }
- });
-
- assertThat(mEmergencyContactsPreference.getEmergencyContacts().size()).isEqualTo(1);
- assertThat(mEmergencyContactsPreference.getPreferenceCount()).isEqualTo(1);
- ContactPreference contactPreference = (ContactPreference)
- mEmergencyContactsPreference.getPreference(0);
-
- View contactPreferenceView = contactPreference.getView(null, null);
- assertThat(contactPreferenceView).isNotNull();
- final View deleteContactWidget = contactPreferenceView.findViewById(R.id.delete_contact);
- assertThat(deleteContactWidget.getVisibility()).isEqualTo(View.VISIBLE);
-
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- deleteContactWidget.performClick();
- }
- });
-
- getInstrumentation().waitForIdleSync();
- final AlertDialog removeContactDialog = contactPreference.getRemoveContactDialog();
- assertThat(removeContactDialog.isShowing()).isTrue();
-
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- removeContactDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
- }
- });
- getInstrumentation().waitForIdleSync();
-
- assertThat(mEmergencyContactsPreference.getEmergencyContacts()).isEmpty();
- assertThat(mEmergencyContactsPreference.getPreferenceCount()).isEqualTo(0);
-
- // Clean up the inserted contact
- assertThat(ContactTestUtils.deleteContact(mContentResolver, name, phoneNumber)).isTrue();
- }
-
- public void testWidgetClick_negativeButton() throws Throwable {
- final String name = "Jane";
- final String phoneNumber = "456";
-
- final Uri emergencyPhoneUri =
- ContactTestUtils.createContact(mContentResolver, name, phoneNumber);
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mEmergencyContactsPreference.addNewEmergencyContact(emergencyPhoneUri);
- }
- });
-
- assertThat(mEmergencyContactsPreference.getEmergencyContacts().size()).isEqualTo(1);
- assertThat(mEmergencyContactsPreference.getPreferenceCount()).isEqualTo(1);
- ContactPreference contactPreference = (ContactPreference)
- mEmergencyContactsPreference.getPreference(0);
-
- View contactPreferenceView = contactPreference.getView(null, null);
- assertThat(contactPreferenceView).isNotNull();
- final View deleteContactWidget = contactPreferenceView.findViewById(R.id.delete_contact);
- assertThat(deleteContactWidget.getVisibility()).isEqualTo(View.VISIBLE);
-
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- deleteContactWidget.performClick();
- }
- });
- getInstrumentation().waitForIdleSync();
-
- getInstrumentation().waitForIdleSync();
- final AlertDialog removeContactDialog = contactPreference.getRemoveContactDialog();
- assertThat(removeContactDialog.isShowing()).isTrue();
-
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- removeContactDialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
- }
- });
-
- assertThat(mEmergencyContactsPreference.getEmergencyContacts().size()).isEqualTo(1);
- assertThat(mEmergencyContactsPreference.getPreferenceCount()).isEqualTo(1);
-
- // Clean up the inserted contact
- assertThat(ContactTestUtils.deleteContact(mContentResolver, name, phoneNumber)).isTrue();
- }
-}
diff --git a/tests/unit/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java b/tests/unit/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java
new file mode 100644
index 00000000..f79964fc
--- /dev/null
+++ b/tests/unit/src/com/android/emergency/preferences/EmergencyContactsPreferenceTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.emergency.preferences;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Looper;
+import android.preference.PreferenceManager;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+import android.view.View;
+
+import com.android.emergency.ContactTestUtils;
+import com.android.emergency.PreferenceKeys;
+import com.android.emergency.R;
+import com.android.emergency.edit.EditInfoActivity;
+import com.android.emergency.edit.EditInfoFragment;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/** Unit tests for {@link EmergencyContactsPreference}. */
+@RunWith(AndroidJUnit4.class)
+public final class EmergencyContactsPreferenceTest {
+ private static final String NAME = "Jane";
+ private static final String PHONE_NUMBER = "456";
+
+ private Instrumentation mInstrumentation;
+ private Context mTargetContext;
+ private EmergencyContactsPreference mPreference;
+
+ @BeforeClass
+ public static void oneTimeSetup() {
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+ }
+
+ @Before
+ public void setUp() {
+ mInstrumentation = InstrumentationRegistry.getInstrumentation();
+ mTargetContext = mInstrumentation.getTargetContext();
+
+ // In case a previous test crashed or failed, clear any previous shared preference value.
+ PreferenceManager.getDefaultSharedPreferences(mTargetContext).edit().clear().commit();
+
+ // Create a contact that'll be used in each unit test.
+ final Uri contactUri = ContactTestUtils.createContact(
+ mTargetContext.getContentResolver(), NAME, PHONE_NUMBER);
+ PreferenceManager.getDefaultSharedPreferences(mTargetContext)
+ .edit().putString(PreferenceKeys.KEY_EMERGENCY_CONTACTS, contactUri.toString())
+ .commit();
+
+ mPreference = startActivityAndGetEmergencyContactsPreference();
+ mPreference.addNewEmergencyContact(contactUri);
+ }
+
+ @After
+ public void tearDown() {
+ // Clean up the inserted contact
+ assertThat(ContactTestUtils.deleteContact(
+ mTargetContext.getContentResolver(), NAME, PHONE_NUMBER)).isTrue();
+ PreferenceManager.getDefaultSharedPreferences(mTargetContext).edit().clear().commit();
+ }
+
+ @Test
+ public void testWidgetClick_positiveButton() {
+ assertThat(mPreference.getEmergencyContacts()).hasSize(1);
+ assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+
+ onView(withId(R.id.delete_contact)).perform(click());
+ onView(withText(R.string.remove)).perform(click());
+
+ assertThat(mPreference.getEmergencyContacts()).isEmpty();
+ assertThat(mPreference.getPreferenceCount()).isEqualTo(0);
+ }
+
+ @Test
+ public void testWidgetClick_negativeButton() {
+ assertThat(mPreference.getEmergencyContacts()).hasSize(1);
+ assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+
+ onView(withId(R.id.delete_contact)).perform(click());
+ onView(withText(android.R.string.cancel)).perform(click());
+
+ assertThat(mPreference.getEmergencyContacts()).hasSize(1);
+ assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+ }
+
+ private EmergencyContactsPreference startActivityAndGetEmergencyContactsPreference() {
+ final Intent editActivityIntent = new Intent(mTargetContext, EditInfoActivity.class);
+ EditInfoActivity activity =
+ (EditInfoActivity) mInstrumentation.startActivitySync(editActivityIntent);
+ EditInfoFragment fragment = (EditInfoFragment) activity.getFragment();
+
+ return (EmergencyContactsPreference) fragment.findPreference(
+ PreferenceKeys.KEY_EMERGENCY_CONTACTS);
+ }
+}