Merge "Update the summary for DND conditional"

This commit is contained in:
TreeHugger Robot
2019-02-15 15:42:35 +00:00
committed by Android (Google) Code Review
4 changed files with 96 additions and 15 deletions

View File

@@ -16,13 +16,22 @@
package com.android.settings.homepage.contextualcards.conditional;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.app.NotificationManager;
import android.content.Context;
import android.service.notification.ZenModeConfig;
import com.android.settings.R;
import com.android.settings.homepage.contextualcards.ContextualCard;
import com.android.settings.testutils.shadow.ShadowNotificationManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -30,7 +39,10 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
@Config(shadows = ShadowNotificationManager.class)
@RunWith(RobolectricTestRunner.class)
public class DndConditionalCardControllerTest {
@@ -38,12 +50,14 @@ public class DndConditionalCardControllerTest {
private ConditionManager mConditionManager;
private Context mContext;
private DndConditionCardController mController;
private ShadowNotificationManager mNotificationManager;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mController = new DndConditionCardController(mContext, mConditionManager);
mNotificationManager = Shadow.extract(mContext.getSystemService(NotificationManager.class));
}
@Test
@@ -55,4 +69,58 @@ public class DndConditionalCardControllerTest {
eq(DndConditionCardController.DND_FILTER));
verify(mContext).unregisterReceiver(any(DndConditionCardController.Receiver.class));
}
@Test
public void buildContextualCard_allSoundsMuted_shouldHavePhoneMutedSummary() {
mNotificationManager.setZenModeConfig(getMutedAllConfig());
final ContextualCard card = mController.buildContextualCard();
assertThat(card.getSummaryText()).isEqualTo(
mContext.getString(R.string.condition_zen_summary_phone_muted));
}
@Test
public void buildContextualCard_allowSomeSounds_shouldHaveWittExceptionsSummary() {
mNotificationManager.setZenModeConfig(getCustomConfig());
final ContextualCard card = mController.buildContextualCard();
assertThat(card.getSummaryText()).isEqualTo(
mContext.getString(R.string.condition_zen_summary_with_exceptions));
}
private ZenModeConfig getCustomConfig() {
final ZenModeConfig config = new ZenModeConfig();
// Some sounds allowed
config.allowAlarms = true;
config.allowMedia = false;
config.allowSystem = false;
config.allowCalls = true;
config.allowRepeatCallers = true;
config.allowMessages = false;
config.allowReminders = false;
config.allowEvents = false;
config.areChannelsBypassingDnd = false;
config.allowCallsFrom = ZenModeConfig.SOURCE_ANYONE;
config.allowMessagesFrom = ZenModeConfig.SOURCE_ANYONE;
config.suppressedVisualEffects = 0;
return config;
}
private ZenModeConfig getMutedAllConfig() {
final ZenModeConfig config = new ZenModeConfig();
// No sounds allowed
config.allowAlarms = false;
config.allowMedia = false;
config.allowSystem = false;
config.allowCalls = false;
config.allowRepeatCallers = false;
config.allowMessages = false;
config.allowReminders = false;
config.allowEvents = false;
config.areChannelsBypassingDnd = false;
config.suppressedVisualEffects = 0;
return config;
}
}

View File

@@ -18,6 +18,7 @@ package com.android.settings.testutils.shadow;
import android.app.NotificationManager;
import android.net.Uri;
import android.service.notification.ZenModeConfig;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
@@ -26,6 +27,7 @@ import org.robolectric.annotation.Implements;
public class ShadowNotificationManager {
private int mZenMode;
private ZenModeConfig mZenModeConfig;
@Implementation
protected void setZenMode(int mode, Uri conditionId, String reason) {
@@ -36,4 +38,13 @@ public class ShadowNotificationManager {
protected int getZenMode() {
return mZenMode;
}
@Implementation
public ZenModeConfig getZenModeConfig() {
return mZenModeConfig;
}
public void setZenModeConfig(ZenModeConfig config) {
mZenModeConfig = config;
}
}