150c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol/* 250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * Copyright (C) 2016 The Android Open Source Project 350c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * 450c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * Licensed under the Apache License, Version 2.0 (the "License"); 550c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * you may not use this file except in compliance with the License. 650c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * You may obtain a copy of the License at 750c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * 850c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * http://www.apache.org/licenses/LICENSE-2.0 950c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * 1050c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * Unless required by applicable law or agreed to in writing, software 1150c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * distributed under the License is distributed on an "AS IS" BASIS, 1250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1350c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * See the License for the specific language governing permissions and 1450c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol * limitations under the License. 1550c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol */ 1650c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolpackage com.android.emergency.edit; 1750c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 18124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyolimport android.app.AlertDialog; 1950c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolimport android.app.Fragment; 20124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyolimport android.content.Context; 21124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyolimport android.content.DialogInterface; 220ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyolimport android.net.Uri; 23124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyolimport android.os.PowerManager; 2409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport android.preference.PreferenceManager; 2550c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolimport android.test.ActivityInstrumentationTestCase2; 260ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyolimport android.test.suitebuilder.annotation.LargeTest; 2750c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolimport android.util.Pair; 2850c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 290ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyolimport com.android.emergency.ContactTestUtils; 3050c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolimport com.android.emergency.PreferenceKeys; 31f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyolimport com.android.emergency.R; 3250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolimport com.android.emergency.preferences.EmergencyContactsPreference; 33f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyolimport com.android.emergency.preferences.EmergencyEditTextPreference; 34f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyolimport com.android.emergency.preferences.EmergencyListPreference; 35f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyolimport com.android.emergency.preferences.NameAutoCompletePreference; 3650c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 3750c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolimport java.util.ArrayList; 380ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyolimport java.util.List; 3950c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 4050c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol/** 41f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol * Tests for {@link EditInfoActivity}. 4250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol */ 430ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol@LargeTest 4450c09e01cc69adcea152f15f537077d14b4311d9mariagpuyolpublic class EditInfoActivityTest extends ActivityInstrumentationTestCase2<EditInfoActivity> { 4550c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol private ArrayList<Pair<String, Fragment>> mFragments; 4650c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol private EditEmergencyInfoFragment mEditEmergencyInfoFragment; 4750c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol private EditEmergencyContactsFragment mEditEmergencyContactsFragment; 48124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol private PowerManager.WakeLock mKeepScreenOnWakeLock; 4950c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 5050c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol public EditInfoActivityTest() { 5150c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol super(EditInfoActivity.class); 5250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol } 5350c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 5450c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol @Override 5550c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol protected void setUp() throws Exception { 560ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol super.setUp(); 57f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit(); 58124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol forceScreenOn(); 59f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol 6050c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol mFragments = getActivity().getFragments(); 6150c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol mEditEmergencyInfoFragment = (EditEmergencyInfoFragment) mFragments.get(0).second; 6250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol mEditEmergencyContactsFragment = (EditEmergencyContactsFragment) mFragments.get(1).second; 6350c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol } 6450c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 650ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol @Override 660ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol protected void tearDown() throws Exception { 670ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit(); 68124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol releaseScreenOn(); 690ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol super.tearDown(); 700ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol } 710ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol 7250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol public void testTwoFragments() { 7350c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol assertEquals(2, mFragments.size()); 7450c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol } 7550c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 760ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol public void testInitialState() { 7750c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol for (String key : PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO) { 7850c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol assertNotNull(mEditEmergencyInfoFragment.findPreference(key)); 7950c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol } 8050c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol EmergencyContactsPreference emergencyContactsPreference = 8150c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol (EmergencyContactsPreference) mEditEmergencyContactsFragment 8250c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol .findPreference(PreferenceKeys.KEY_EMERGENCY_CONTACTS); 8350c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol assertNotNull(emergencyContactsPreference); 8450c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol assertEquals(0, emergencyContactsPreference.getPreferenceCount()); 8550c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol } 8650c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol 87f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol public void testClearAllPreferences () throws Throwable { 88124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol EditInfoActivity editInfoActivity = getActivity(); 89f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol final NameAutoCompletePreference namePreference = 90f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol (NameAutoCompletePreference) mEditEmergencyInfoFragment 91f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol .findPreference(PreferenceKeys.KEY_NAME); 92f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol final EmergencyEditTextPreference addressPreference = 93f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 94f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol .findPreference(PreferenceKeys.KEY_ADDRESS); 95f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol final EmergencyListPreference bloodTypePreference = 96f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol (EmergencyListPreference) mEditEmergencyInfoFragment 97f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol .findPreference(PreferenceKeys.KEY_BLOOD_TYPE); 98f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol final EmergencyEditTextPreference allergiesPreference = 99f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 100f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol .findPreference(PreferenceKeys.KEY_ALLERGIES); 101f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol final EmergencyEditTextPreference medicationsPreference = 102f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 103f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol .findPreference(PreferenceKeys.KEY_MEDICATIONS); 104f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol final EmergencyEditTextPreference medicalConditionsPreference = 105f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 106f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol .findPreference(PreferenceKeys.KEY_MEDICAL_CONDITIONS); 107f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol final EmergencyListPreference organDonorPreference = 108f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol (EmergencyListPreference) mEditEmergencyInfoFragment 109f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol .findPreference(PreferenceKeys.KEY_ORGAN_DONOR); 110f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol 1110ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol final EmergencyContactsPreference emergencyContactsPreference = 1120ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol (EmergencyContactsPreference) mEditEmergencyContactsFragment 1130ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol .findPreference(PreferenceKeys.KEY_EMERGENCY_CONTACTS); 1140ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol final Uri contactUri = ContactTestUtils 115124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .createContact(editInfoActivity.getContentResolver(), "Michael", "789"); 1160ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol final List<Uri> emergencyContacts = new ArrayList<>(); 1170ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol emergencyContacts.add(contactUri); 1180ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol 119f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol runTestOnUiThread(new Runnable() { 120f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol @Override 121f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol public void run() { 122f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol namePreference.setText("John"); 123f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol addressPreference.setText("Home"); 124f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol bloodTypePreference.setValue("A+"); 125f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol allergiesPreference.setText("Peanuts"); 126f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol medicationsPreference.setText("Aspirin"); 127f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol medicalConditionsPreference.setText("Asthma"); 128f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol organDonorPreference.setValue("Yes"); 1290ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol emergencyContactsPreference.setEmergencyContacts(emergencyContacts); 130f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol } 131f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol }); 132f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol 133124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol String unknownName = editInfoActivity.getResources().getString(R.string.unknown_name); 1346372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol String unknownAddress = editInfoActivity.getResources().getString(R.string.unknown_address); 135f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol String unknownBloodType = 136124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol editInfoActivity.getResources().getString(R.string.unknown_blood_type); 137f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol String unknownAllergies = 138124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol editInfoActivity.getResources().getString(R.string.unknown_allergies); 139f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol String unknownMedications = 140124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol editInfoActivity.getResources().getString(R.string.unknown_medications); 141f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol String unknownMedicalConditions = 142124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol editInfoActivity.getResources().getString(R.string.unknown_medical_conditions); 143f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol String unknownOrganDonor = 144124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol editInfoActivity.getResources().getString(R.string.unknown_organ_donor); 145f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol 146f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol assertNotSame(unknownName, namePreference.getSummary()); 147f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol assertNotSame(unknownAddress, addressPreference.getSummary()); 148f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol assertNotSame(unknownBloodType, bloodTypePreference.getSummary()); 149f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol assertNotSame(unknownAllergies, allergiesPreference.getSummary()); 150f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol assertNotSame(unknownMedications, medicationsPreference.getSummary()); 151f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol assertNotSame(unknownMedicalConditions, medicalConditionsPreference.getSummary()); 152f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol assertNotSame(unknownOrganDonor, organDonorPreference.getSummary()); 1530ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol assertEquals(1, emergencyContactsPreference.getEmergencyContacts().size()); 1540ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol assertEquals(1, emergencyContactsPreference.getPreferenceCount()); 155f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol 156124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol EditInfoActivity.ClearAllDialogFragment clearAllDialogFragment = 157124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.ClearAllDialogFragment) editInfoActivity.getFragmentManager() 158124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_CLEAR_ALL_DIALOG); 159124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertNull(clearAllDialogFragment); 1606ff1b25abb591e4c9d69ccc4f2719305aed74cc8mariagpuyol editInfoActivity.getMenu().performIdentifierAction(R.id.action_clear_all, 0 /* flags */); 161124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol getInstrumentation().waitForIdleSync(); 162124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol final EditInfoActivity.ClearAllDialogFragment clearAllDialogFragmentAfterwards = 163124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.ClearAllDialogFragment) editInfoActivity.getFragmentManager() 164124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_CLEAR_ALL_DIALOG); 165124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 166124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertTrue(clearAllDialogFragmentAfterwards.getDialog().isShowing()); 167124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 168f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol runTestOnUiThread(new Runnable() { 169f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol @Override 170f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol public void run() { 171124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol ((AlertDialog) clearAllDialogFragmentAfterwards.getDialog()) 172124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .getButton(DialogInterface.BUTTON_POSITIVE) 173124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .performClick(); 174f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol } 175f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol }); 176f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol getInstrumentation().waitForIdleSync(); 177f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol 1786372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(mFragments, editInfoActivity.getFragments()); 1796372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol 1806372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol // After clearing all the preferences, onCreate is called for both fragments. 1816372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol // This makes the preferences point to old ones. Here we load what the user 1826372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol // is seeing 1836372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final NameAutoCompletePreference namePreferenceAfterClear = 1846372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (NameAutoCompletePreference) mEditEmergencyInfoFragment 1856372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_NAME); 1866372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final EmergencyEditTextPreference addressPreferenceAfterClear = 1876372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 1886372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_ADDRESS); 1896372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final EmergencyListPreference bloodTypePreferenceAfterClear = 1906372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (EmergencyListPreference) mEditEmergencyInfoFragment 1916372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_BLOOD_TYPE); 1926372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final EmergencyEditTextPreference allergiesPreferenceAfterClear = 1936372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 1946372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_ALLERGIES); 1956372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final EmergencyEditTextPreference medicationsPreferenceAfterClear = 1966372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 1976372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_MEDICATIONS); 1986372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final EmergencyEditTextPreference medicalConditionsPreferenceAfterClear = 1996372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (EmergencyEditTextPreference) mEditEmergencyInfoFragment 2006372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_MEDICAL_CONDITIONS); 2016372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final EmergencyListPreference organDonorPreferenceAfterClear = 2026372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (EmergencyListPreference) mEditEmergencyInfoFragment 2036372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_ORGAN_DONOR); 2046372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol 2056372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol final EmergencyContactsPreference emergencyContactsPreferenceAfterClear = 2066372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol (EmergencyContactsPreference) mEditEmergencyContactsFragment 2076372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol .findPreference(PreferenceKeys.KEY_EMERGENCY_CONTACTS); 2086372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol 2096372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(unknownName, namePreferenceAfterClear.getSummary()); 2106372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(unknownAddress, addressPreferenceAfterClear.getSummary()); 2116372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(unknownBloodType, bloodTypePreferenceAfterClear.getSummary().toString()); 2126372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(unknownAllergies, allergiesPreferenceAfterClear.getSummary()); 2136372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(unknownMedications, medicationsPreferenceAfterClear.getSummary()); 2146372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(unknownMedicalConditions, medicalConditionsPreferenceAfterClear.getSummary()); 2156372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(unknownOrganDonor, organDonorPreferenceAfterClear.getSummary()); 2166372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(0, emergencyContactsPreferenceAfterClear.getEmergencyContacts().size()); 2176372b471c4d447c54c77e6a21c47a29ee6cedec2mariagpuyol assertEquals(0, emergencyContactsPreferenceAfterClear.getPreferenceCount()); 218f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol 2190ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol assertTrue(ContactTestUtils 2200ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol .deleteContact(getActivity().getContentResolver(), "Michael", "789")); 221f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol } 222124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 223124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void testWarningDialog_onPauseAndResume() throws Throwable { 224124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol final EditInfoActivity.WarningDialogFragment dialog = 225124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.WarningDialogFragment) getActivity().getFragmentManager() 226124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_WARNING_DIALOG); 227124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertTrue(dialog.getDialog().isShowing()); 228124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 229124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol onPause(); 230124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol onResume(); 231124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 232124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol final EditInfoActivity.WarningDialogFragment dialogAfterOnResume = 233124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.WarningDialogFragment) getActivity().getFragmentManager() 234124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_WARNING_DIALOG); 235124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertTrue(dialogAfterOnResume.getDialog().isShowing()); 236124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 237124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 238124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void testWarningDialog_negativeButton() throws Throwable { 239124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol EditInfoActivity activity = getActivity(); 240124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol final EditInfoActivity.WarningDialogFragment dialogFragment = 241124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.WarningDialogFragment) activity.getFragmentManager() 242124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_WARNING_DIALOG); 243124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertNotNull(dialogFragment.getActivity()); 244124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertTrue(dialogFragment.getDialog().isShowing()); 245124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol runTestOnUiThread(new Runnable() { 246124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol @Override 247124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void run() { 248124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol ((AlertDialog) dialogFragment.getDialog()) 249124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .getButton(DialogInterface.BUTTON_NEGATIVE) 250124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .performClick(); 251124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 252124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol }); 253124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol getInstrumentation().waitForIdleSync(); 254124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 255124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertNull(dialogFragment.getDialog()); 256124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 257124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 258124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void testWarningDialog_positiveButton() throws Throwable { 259124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol EditInfoActivity activity = getActivity(); 260124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol final EditInfoActivity.WarningDialogFragment dialogFragment = 261124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.WarningDialogFragment) activity.getFragmentManager() 262124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_WARNING_DIALOG); 263124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertTrue(dialogFragment.getDialog().isShowing()); 264124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 265124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol runTestOnUiThread(new Runnable() { 266124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol @Override 267124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void run() { 268124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol ((AlertDialog) dialogFragment.getDialog()) 269124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .getButton(DialogInterface.BUTTON_POSITIVE) 270124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .performClick(); 271124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 272124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol }); 273124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol getInstrumentation().waitForIdleSync(); 274124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertNull(dialogFragment.getDialog()); 275124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 276124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol onPause(); 277124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol onResume(); 278124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 279124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol EditInfoActivity.WarningDialogFragment dialogAfterOnResume = 280124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.WarningDialogFragment) getActivity().getFragmentManager() 281124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_WARNING_DIALOG); 282124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertNull(dialogAfterOnResume); 283124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 284124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 285124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void testWarningDialogTimer_overOneDayAgo() throws Throwable { 286124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol EditInfoActivity activity = getActivity(); 287124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol final EditInfoActivity.WarningDialogFragment dialogFragment = 288124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.WarningDialogFragment) activity.getFragmentManager() 289124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_WARNING_DIALOG); 290124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol runTestOnUiThread(new Runnable() { 291124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol @Override 292124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void run() { 293124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol ((AlertDialog) dialogFragment.getDialog()) 294124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .getButton(DialogInterface.BUTTON_POSITIVE) 295124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .performClick(); 296124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 297124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol }); 298124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol getInstrumentation().waitForIdleSync(); 299124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 300124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol onPause(); 301124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol // Manually make the last consent be a bit over a day ago 302124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol long overOneDayAgoMs = System.currentTimeMillis() - EditInfoActivity.ONE_DAY_MS - 60_000; 303124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol PreferenceManager.getDefaultSharedPreferences(activity).edit() 304124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .putLong(EditInfoActivity.KEY_LAST_CONSENT_TIME_MS, 305124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol overOneDayAgoMs).commit(); 306124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol onResume(); 307124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 308124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol EditInfoActivity.WarningDialogFragment dialogAfterOnResume = 309124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (EditInfoActivity.WarningDialogFragment) getActivity().getFragmentManager() 310124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol .findFragmentByTag(EditInfoActivity.TAG_WARNING_DIALOG); 311124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol assertTrue(dialogAfterOnResume.getDialog().isShowing()); 312124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 313124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 314124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol private void onPause() throws Throwable { 315124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol runTestOnUiThread(new Runnable() { 316124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol @Override 317124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void run() { 318124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol getInstrumentation().callActivityOnPause(getActivity()); 319124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 320124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol }); 321124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 322124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 323124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol private void onResume() throws Throwable { 324124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol runTestOnUiThread(new Runnable() { 325124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol @Override 326124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol public void run() { 327124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol getInstrumentation().callActivityOnResume(getActivity()); 328124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 329124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol }); 330124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol getInstrumentation().waitForIdleSync(); 331124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 332124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 333124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol private void forceScreenOn() { 334124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol int levelAndFlags = PowerManager.FULL_WAKE_LOCK 335124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol | PowerManager.ON_AFTER_RELEASE 336124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol | PowerManager.ACQUIRE_CAUSES_WAKEUP; 337124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol PowerManager powerManager = 338124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE); 339124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol mKeepScreenOnWakeLock = powerManager.newWakeLock(levelAndFlags, "EditEmergencyInfo"); 340124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol mKeepScreenOnWakeLock.setReferenceCounted(false); 341124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol mKeepScreenOnWakeLock.acquire(); 342124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 343124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol 344124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol private void releaseScreenOn() { 345124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol mKeepScreenOnWakeLock.release(); 346124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol } 34750c09e01cc69adcea152f15f537077d14b4311d9mariagpuyol} 348