Merge "Implements the buttons layout for the extra defend" into tm-qpr-dev am: aa3262857c am: 939f2a9eed

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/19633714

Change-Id: I582c5cc6df9b9454013b4435d261c336fc4e7a4e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
YK Hung
2022-08-19 03:23:26 +00:00
committed by Automerger Merge Worker
13 changed files with 662 additions and 13 deletions

View File

@@ -41,7 +41,8 @@ public class BatteryDefenderDetectorTest {
mBatteryInfo.discharging = false;
mBatteryDefenderDetector = new BatteryDefenderDetector(mBatteryInfo);
mBatteryDefenderDetector = new BatteryDefenderDetector(
mBatteryInfo, /* extraDefend= */ false);
}
@Test

View File

@@ -17,13 +17,25 @@ package com.android.settings.fuelgauge.batterytip.tips;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.util.Log;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.CardPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import org.junit.Before;
@@ -33,6 +45,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowLog;
@RunWith(RobolectricTestRunner.class)
public class BatteryDefenderTipTest {
@@ -43,6 +56,8 @@ public class BatteryDefenderTipTest {
private MetricsFeatureProvider mMetricsFeatureProvider;
@Mock private BatteryTip mBatteryTip;
@Mock private Preference mPreference;
@Mock private CardPreference mCardPreference;
@Before
public void setUp() {
@@ -52,6 +67,9 @@ public class BatteryDefenderTipTest {
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
mContext = RuntimeEnvironment.application;
mBatteryDefenderTip = new BatteryDefenderTip(BatteryTip.StateType.NEW);
when(mPreference.getContext()).thenReturn(mContext);
when(mCardPreference.getContext()).thenReturn(mContext);
}
@Test
@@ -61,11 +79,19 @@ public class BatteryDefenderTipTest {
}
@Test
public void getSummary_showSummary() {
public void getSummary_notExtraDefended_showNonExtraDefendedSummary() {
assertThat(mBatteryDefenderTip.getSummary(mContext))
.isEqualTo(mContext.getString(R.string.battery_tip_limited_temporarily_summary));
}
@Test
public void getSummary_extraDefended_showExtraDefendedSummary() {
BatteryDefenderTip defenderTip = new BatteryDefenderTip(
BatteryTip.StateType.NEW, /* extraDefended= */ true);
assertThat(defenderTip.getSummary(mContext).toString()).isEqualTo("12%");
}
@Test
public void getIcon_showIcon() {
assertThat(mBatteryDefenderTip.getIconId())
@@ -80,4 +106,94 @@ public class BatteryDefenderTipTest {
verify(mMetricsFeatureProvider).action(mContext,
SettingsEnums.ACTION_BATTERY_DEFENDER_TIP, mBatteryTip.mState);
}
@Test
public void updatePreference_castFail_logErrorMessage() {
mBatteryDefenderTip.updatePreference(mPreference);
assertThat(getLastErrorLog()).isEqualTo("cast Preference to CardPreference failed");
}
@Test
public void updatePreference_shouldSetPrimaryButtonText() {
String expectedText = mContext.getString(R.string.battery_tip_charge_to_full_button);
mBatteryDefenderTip.updatePreference(mCardPreference);
verify(mCardPreference).setPrimaryButtonText(expectedText);
}
@Test
public void updatePreference_shouldSetSecondaryButtonText() {
String expected = mContext.getString(R.string.see_more);
mBatteryDefenderTip.updatePreference(mCardPreference);
verify(mCardPreference).setSecondaryButtonText(expected);
}
@Test
public void updatePreference_shouldSetSecondaryButtonVisible() {
mBatteryDefenderTip.updatePreference(mCardPreference);
verify(mCardPreference).setSecondaryButtonVisible(true);
}
@Test
public void updatePreference_whenCharging_setPrimaryButtonVisibleToBeTrue() {
fakeDeviceIsCharging(true);
mBatteryDefenderTip.updatePreference(mCardPreference);
verify(mCardPreference).setPrimaryButtonVisible(true);
}
@Test
public void updatePreference_whenNotCharging_setPrimaryButtonVisibleToBeFalse() {
fakeDeviceIsCharging(false);
mBatteryDefenderTip.updatePreference(mCardPreference);
verify(mCardPreference).setPrimaryButtonVisible(false);
}
@Test
public void updatePreference_whenGetChargingStatusFailed_setPrimaryButtonVisibleToBeFalse() {
fakeGetChargingStatusFailed();
mBatteryDefenderTip.updatePreference(mCardPreference);
verify(mCardPreference).setPrimaryButtonVisible(false);
}
private void fakeDeviceIsCharging(boolean charging) {
int charged = charging ? 1 : 0; // 1 means charging, 0:not charging
Intent batteryChangedIntent = new Intent(Intent.ACTION_BATTERY_CHANGED);
batteryChangedIntent.putExtra(BatteryManager.EXTRA_PLUGGED, charged);
Context mockContext = mock(Context.class);
when(mockContext.getString(anyInt())).thenReturn("fake_string");
when(mCardPreference.getContext()).thenReturn(mockContext);
when(mockContext.registerReceiver(eq(null), any(IntentFilter.class)))
.thenReturn(batteryChangedIntent);
}
private void fakeGetChargingStatusFailed() {
Context mockContext = mock(Context.class);
when(mockContext.getString(anyInt())).thenReturn("fake_string");
when(mCardPreference.getContext()).thenReturn(mockContext);
when(mockContext.registerReceiver(eq(null), any(IntentFilter.class))).thenReturn(null);
}
private String getLastErrorLog() {
return ShadowLog.getLogsForTag(BatteryDefenderTip.class.getSimpleName()).stream()
.filter(log -> log.type == Log.ERROR)
.reduce((first, second) -> second)
.orElse(createErrorLog("No Error Log"))
.msg;
}
private ShadowLog.LogItem createErrorLog(String msg) {
return new ShadowLog.LogItem(Log.ERROR, "tag", msg, null);
}
}