Populate new fields in modes created via Settings

Type and trigger description on creation; trigger description on update.

Bug: 317370174
Bug: 320997361
Test: atest ZenModeScheduleRuleSettingsTest ZenModeEventRuleSettingsTest
Change-Id: Idb1edcc8829b54ec85494966eb391e52012a5348
This commit is contained in:
Matías Hernández
2024-03-21 11:08:46 +01:00
parent 958d17bb69
commit a1d8044cbf
10 changed files with 145 additions and 20 deletions

View File

@@ -16,17 +16,26 @@
package com.android.settings.notification.zen;
import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Looper;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenModeConfig;
import androidx.fragment.app.FragmentActivity;
import androidx.test.core.app.ApplicationProvider;
@@ -34,6 +43,7 @@ import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -51,11 +61,15 @@ import java.util.List;
})
public class ZenModeEventRuleSettingsTest {
@Mock
private FragmentActivity mActivity;
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT);
@Mock
private FragmentActivity mActivity;
@Mock
private Intent mIntent;
@Mock
private ZenModeBackend mBackend;
private ZenModeEventRuleSettings mFragment;
private Context mContext;
@@ -92,6 +106,26 @@ public class ZenModeEventRuleSettingsTest {
//should not crash
}
@Test
@EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
public void updateEventRule_updatesConditionAndTriggerDescription() {
mFragment.setBackend(mBackend);
mFragment.mId = "id";
mFragment.mRule = new AutomaticZenRule.Builder("name", Uri.parse("condition")).build();
ZenModeConfig.EventInfo eventInfo = new ZenModeConfig.EventInfo();
eventInfo.calendarId = 1L;
eventInfo.calName = "My events";
mFragment.updateEventRule(eventInfo);
verify(mBackend).updateZenRule(eq("id"),
eq(new AutomaticZenRule.Builder(
"name",
ZenModeConfig.toEventConditionId(eventInfo))
.setTriggerDescription("My events")
.build()));
}
@Test
public void testNoDuplicateCalendars() {
List<ZenModeEventRuleSettings.CalendarInfo> calendarsList = new ArrayList<>();

View File

@@ -16,17 +16,26 @@
package com.android.settings.notification.zen;
import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Looper;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenModeConfig;
import androidx.fragment.app.FragmentActivity;
import androidx.test.core.app.ApplicationProvider;
@@ -34,25 +43,33 @@ import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowToast;
import java.util.Calendar;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {
com.android.settings.testutils.shadow.ShadowFragment.class,
})
public class ZenModeScheduleRuleSettingsTest {
@Mock
private FragmentActivity mActivity;
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT);
@Mock
private FragmentActivity mActivity;
@Mock
private Intent mIntent;
@Mock
private ZenModeBackend mBackend;
private ZenModeScheduleRuleSettings mFragment;
private Context mContext;
@@ -88,4 +105,25 @@ public class ZenModeScheduleRuleSettingsTest {
//should not crash
}
@Test
@EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
public void updateScheduleRule_updatesConditionAndTriggerDescription() {
mFragment.setBackend(mBackend);
mFragment.mId = "id";
mFragment.mRule = new AutomaticZenRule.Builder("name", Uri.parse("condition")).build();
ZenModeConfig.ScheduleInfo scheduleInfo = new ZenModeConfig.ScheduleInfo();
scheduleInfo.days = new int[] { Calendar.MONDAY };
scheduleInfo.startHour = 1;
scheduleInfo.endHour = 2;
mFragment.updateScheduleRule(scheduleInfo);
ArgumentCaptor<AutomaticZenRule> updatedRuleCaptor = ArgumentCaptor.forClass(
AutomaticZenRule.class);
verify(mBackend).updateZenRule(eq("id"), updatedRuleCaptor.capture());
assertThat(updatedRuleCaptor.getValue().getConditionId())
.isEqualTo(ZenModeConfig.toScheduleConditionId(scheduleInfo));
assertThat(updatedRuleCaptor.getValue().getTriggerDescription()).isNotEmpty();
}
}