Add "device is muted/vibrate, click to turn on" conditions
Bug: 76022431 Test: robotests Change-Id: I89b71f99fa5ef866028912183ad04b053213bb0d
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.dashboard.conditional;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.AudioManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
public class AbnormalRingerConditionBaseTest {
|
||||
|
||||
@Mock
|
||||
private ConditionManager mConditionManager;
|
||||
|
||||
private Context mContext;
|
||||
private TestCondition mCondition;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
when(mConditionManager.getContext()).thenReturn(mContext);
|
||||
mCondition = new TestCondition(mConditionManager);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void newInstance_shouldMonitorRingerStateChangeBroadcast() {
|
||||
final Intent broadcast1 = new Intent("foo.bar.action");
|
||||
final Intent broadcast2 = new Intent(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION);
|
||||
|
||||
mContext.sendBroadcast(broadcast1);
|
||||
assertThat(mCondition.mRefreshCalled).isFalse();
|
||||
|
||||
mContext.sendBroadcast(broadcast2);
|
||||
assertThat(mCondition.mRefreshCalled).isTrue();
|
||||
}
|
||||
|
||||
private static class TestCondition extends AbnormalRingerConditionBase {
|
||||
private boolean mRefreshCalled;
|
||||
|
||||
TestCondition(ConditionManager manager) {
|
||||
super(manager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshState() {
|
||||
mRefreshCalled = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsConstant() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getTitle() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.dashboard.conditional;
|
||||
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowAudioManager;
|
||||
import com.android.settings.testutils.shadow.ShadowNotificationManager;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadow.api.Shadow;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(shadows = {ShadowNotificationManager.class, ShadowAudioManager.class})
|
||||
public class RingerMutedConditionTest {
|
||||
private static final String TAG = "RingerMutedConditionTest";
|
||||
@Mock
|
||||
private ConditionManager mConditionManager;
|
||||
|
||||
private Context mContext;
|
||||
private ShadowNotificationManager mNotificationManager;
|
||||
private ShadowAudioManager mAudioManager;
|
||||
private RingerMutedCondition mCondition;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mAudioManager = Shadow.extract(mContext.getSystemService(Context.AUDIO_SERVICE));
|
||||
mNotificationManager = Shadow.extract(
|
||||
mContext.getSystemService(NotificationManager.class));
|
||||
when(mConditionManager.getContext()).thenReturn(mContext);
|
||||
mCondition = spy(new RingerMutedCondition(mConditionManager));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyText() {
|
||||
assertThat(mCondition.getTitle()).isEqualTo(
|
||||
mContext.getText(R.string.condition_device_muted_title));
|
||||
assertThat(mCondition.getSummary()).isEqualTo(
|
||||
mContext.getText(R.string.condition_device_muted_summary));
|
||||
assertThat(mCondition.getActions()[0]).isEqualTo(
|
||||
mContext.getText(R.string.condition_device_muted_action_turn_on_sound));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void refreshState_zenModeOn_shouldNotActivate() {
|
||||
mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_SILENT);
|
||||
mNotificationManager.setZenMode(Settings.Global.ZEN_MODE_NO_INTERRUPTIONS, null, TAG);
|
||||
|
||||
mCondition.refreshState();
|
||||
|
||||
verify(mCondition).setActive(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void refreshState_zenModeOff_shouldActivate() {
|
||||
mAudioManager.setRingerModeInternal(AudioManager.RINGER_MODE_SILENT);
|
||||
mNotificationManager.setZenMode(Settings.Global.ZEN_MODE_OFF, null, TAG);
|
||||
|
||||
mCondition.refreshState();
|
||||
|
||||
verify(mCondition).setActive(true);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.dashboard.conditional;
|
||||
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
public class RingerVibrateConditionTest {
|
||||
@Mock
|
||||
private ConditionManager mConditionManager;
|
||||
|
||||
private Context mContext;
|
||||
private RingerVibrateCondition mCondition;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
when(mConditionManager.getContext()).thenReturn(mContext);
|
||||
mCondition = new RingerVibrateCondition(mConditionManager);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyText() {
|
||||
assertThat(mCondition.getTitle()).isEqualTo(
|
||||
mContext.getText(R.string.condition_device_vibrate_title));
|
||||
assertThat(mCondition.getSummary()).isEqualTo(
|
||||
mContext.getText(R.string.condition_device_vibrate_summary));
|
||||
assertThat(mCondition.getActions()[0]).isEqualTo(
|
||||
mContext.getText(R.string.condition_device_muted_action_turn_on_sound));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user