From 47328cc97b861efc078b17079178e90794fba4c2 Mon Sep 17 00:00:00 2001 From: Syaoran Kuo Date: Fri, 23 Apr 2021 15:25:13 +0800 Subject: [PATCH] Adjuest battery saver component test for new logic 1. Remove 1 case for spec change. 2. Change UI finding for switch on/off button. Test: atest com.android.settings.fuelgauge.batterysaver.BatterySaverButtonPreferenceControllerComponentTest Bug: 185750890 Change-Id: I0612d31b351db8622ac705b46eae1a448bfb3273 --- ...ttonPreferenceControllerComponentTest.java | 69 ++++++------------- 1 file changed, 22 insertions(+), 47 deletions(-) diff --git a/tests/componenttests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerComponentTest.java b/tests/componenttests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerComponentTest.java index 30fcbf58404..8946fc15927 100644 --- a/tests/componenttests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerComponentTest.java +++ b/tests/componenttests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerComponentTest.java @@ -19,24 +19,26 @@ package com.android.settings.fuelgauge.batterysaver; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assert_; +import android.app.Activity; import android.app.Instrumentation; import android.content.Context; import android.content.Intent; import android.os.PowerManager; import android.provider.Settings; import android.util.Log; -import android.widget.Button; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import androidx.test.core.app.ActivityScenario; +import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; -import com.android.settings.R; import com.android.settings.Settings.BatterySaverSettingsActivity; +import com.android.settings.SettingsPreferenceFragment; import com.android.settings.testutils.AdbUtils; -import com.android.settings.testutils.UiUtils; import org.junit.After; import org.junit.Before; @@ -49,11 +51,10 @@ import org.junit.runner.RunWith; public class BatterySaverButtonPreferenceControllerComponentTest { private static final String TAG = BatterySaverButtonPreferenceControllerComponentTest.class.getSimpleName(); - private Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation(); - private PowerManager mManager = + private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation(); + private final PowerManager mManager = (PowerManager) mInstrumentation.getTargetContext().getSystemService( Context.POWER_SERVICE); - @Rule public ActivityScenarioRule rule = new ActivityScenarioRule<>( new Intent( @@ -66,55 +67,28 @@ public class BatterySaverButtonPreferenceControllerComponentTest { mInstrumentation.getUiAutomation().executeShellCommand("settings get global low_power 0"); } + private BatterySaverButtonPreferenceController get_battery_saver_controller(Activity activity) { + BatterySaverButtonPreferenceController controller = + new BatterySaverButtonPreferenceController( + ApplicationProvider.getApplicationContext(), "battery_saver"); + Fragment f = + ((FragmentActivity) activity).getSupportFragmentManager().getFragments().get(0); + controller.displayPreference(((SettingsPreferenceFragment) f).getPreferenceScreen()); + return controller; + } + @Test public void test_check_battery_saver_button() throws Exception { ActivityScenario scenario = rule.getScenario(); scenario.onActivity(activity -> { - final Button button = activity.findViewById(R.id.state_on_button); - UiUtils.waitUntilCondition(3000, () -> button.isEnabled()); - button.callOnClick(); + BatterySaverButtonPreferenceController controller = + get_battery_saver_controller(activity); + controller.setChecked(true); checkPowerSaverMode(true); - Button offButton = activity.findViewById(R.id.state_off_button); - offButton.callOnClick(); + controller.setChecked(false); checkPowerSaverMode(false); }); - - //Ideally, we should be able to also create BatteryTipPreferenceController and verify that - //it is showing battery saver on. Unfortunately, that part of code is tightly coupled with - //UI, and it's not possible to retrieve that string without reaching very deep into the - //codes and become very tightly coupled with any future changes. That is not what component - //tests should do, so either we'll need to do this through UI with another ActivityScenario, - //or the code needs to be refactored to be less coupled with UI. - } - - @Test - public void test_battery_saver_button_changes_when_framework_setting_change() throws Exception { - ActivityScenario scenario = rule.getScenario(); - scenario.onActivity(activity -> { - Button buttonOn = activity.findViewById(R.id.state_on_button); - Button buttonOff = activity.findViewById(R.id.state_off_button); - assertThat(buttonOn.isVisibleToUser()).isEqualTo(true); - assertThat(buttonOff.isVisibleToUser()).isEqualTo(false); - }); - - mManager.setPowerSaveModeEnabled(true); - scenario.recreate(); - scenario.onActivity(activity -> { - Button buttonOn = activity.findViewById(R.id.state_on_button); - Button buttonOff = activity.findViewById(R.id.state_off_button); - assertThat(buttonOn.isVisibleToUser()).isEqualTo(false); - assertThat(buttonOff.isVisibleToUser()).isEqualTo(true); - }); - - mManager.setPowerSaveModeEnabled(false); - scenario.recreate(); - scenario.onActivity(activity -> { - Button buttonOn = activity.findViewById(R.id.state_on_button); - Button buttonOff = activity.findViewById(R.id.state_off_button); - assertThat(buttonOn.isVisibleToUser()).isEqualTo(true); - assertThat(buttonOff.isVisibleToUser()).isEqualTo(false); - }); } @After @@ -140,4 +114,5 @@ public class BatterySaverButtonPreferenceControllerComponentTest { //Check through manager assertThat(mManager.isPowerSaveMode() == enabled).isTrue(); } + }