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