1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.settings.applications; 17 18 import static com.google.common.truth.Truth.assertThat; 19 20 import static org.mockito.Mockito.doReturn; 21 22 import android.app.AlarmManager; 23 import android.content.Context; 24 import android.os.UserHandle; 25 26 import androidx.test.ext.junit.runners.AndroidJUnit4; 27 28 import org.junit.Before; 29 import org.junit.Test; 30 import org.junit.runner.RunWith; 31 import org.mockito.Answers; 32 import org.mockito.Mock; 33 import org.mockito.MockitoAnnotations; 34 35 @RunWith(AndroidJUnit4.class) 36 public class AppStateAlarmsAndRemindersBridgeTest { 37 private static final String TEST_PACKAGE_1 = "com.example.test.1"; 38 private static final String TEST_PACKAGE_2 = "com.example.test.2"; 39 private static final int UID_1 = 12345; 40 private static final int UID_2 = 7654321; 41 42 @Mock 43 private AlarmManager mAlarmManager; 44 @Mock(answer = Answers.RETURNS_DEEP_STUBS) 45 private Context mContext; 46 47 @Before initMocks()48 public void initMocks() { 49 MockitoAnnotations.initMocks(this); 50 } 51 52 @Test shouldBeVisible_permissionRequestedIsTrue_isTrue()53 public void shouldBeVisible_permissionRequestedIsTrue_isTrue() { 54 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 55 true /* permissionRequested */, 56 true /* permissionGranted */) 57 .shouldBeVisible()).isTrue(); 58 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 59 true /* permissionRequested */, 60 false /* permissionGranted */) 61 .shouldBeVisible()).isTrue(); 62 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 63 false /* permissionRequested */, 64 true /* permissionGranted */) 65 .shouldBeVisible()).isFalse(); 66 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 67 false /* permissionRequested */, 68 false /* permissionGranted */) 69 .shouldBeVisible()).isFalse(); 70 } 71 72 @Test isAllowed_permissionGrantedIsTrue_isTrue()73 public void isAllowed_permissionGrantedIsTrue_isTrue() { 74 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 75 true /* permissionRequested */, 76 true /* permissionGranted */) 77 .isAllowed()).isTrue(); 78 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 79 true /* permissionRequested */, 80 false /* permissionGranted */) 81 .isAllowed()).isFalse(); 82 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 83 false /* permissionRequested */, 84 true /* permissionGranted */) 85 .isAllowed()).isTrue(); 86 assertThat(new AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState( 87 false /* permissionRequested */, 88 false /* permissionGranted */) 89 .isAllowed()).isFalse(); 90 } 91 92 @Test createPermissionState()93 public void createPermissionState() { 94 AppStateAlarmsAndRemindersBridge bridge = new AppStateAlarmsAndRemindersBridge(mContext, 95 null, null); 96 bridge.mAlarmManager = mAlarmManager; 97 bridge.mRequesterPackages = new String[]{TEST_PACKAGE_1, "some.other.package"}; 98 99 doReturn(false).when(mAlarmManager).hasScheduleExactAlarm(TEST_PACKAGE_1, 100 UserHandle.getUserId(UID_1)); 101 doReturn(true).when(mAlarmManager).hasScheduleExactAlarm(TEST_PACKAGE_2, 102 UserHandle.getUserId(UID_2)); 103 104 AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState state1 = 105 bridge.createPermissionState(TEST_PACKAGE_1, UID_1); 106 assertThat(state1.shouldBeVisible()).isTrue(); 107 assertThat(state1.isAllowed()).isFalse(); 108 109 AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState state2 = 110 bridge.createPermissionState(TEST_PACKAGE_2, UID_2); 111 assertThat(state2.shouldBeVisible()).isFalse(); 112 assertThat(state2.isAllowed()).isTrue(); 113 } 114 } 115