18e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler/*
28e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler * Copyright (C) 2017 The Android Open Source Project
38e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler *
48e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
58e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler * except in compliance with the License. You may obtain a copy of the License at
68e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler *
78e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler *      http://www.apache.org/licenses/LICENSE-2.0
88e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler *
98e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler * Unless required by applicable law or agreed to in writing, software distributed under the
108e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
118e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler * KIND, either express or implied. See the License for the specific language governing
128e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler * permissions and limitations under the License.
138e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler */
148e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler
158e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerpackage com.android.systemui.util;
168e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler
178e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport static org.junit.Assert.assertEquals;
188e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport static org.junit.Assert.assertNull;
198e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport static org.junit.Assert.assertTrue;
208e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport static org.mockito.Matchers.eq;
218e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport static org.mockito.Mockito.mock;
228e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport static org.mockito.Mockito.verify;
238e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport static org.mockito.Mockito.when;
248e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler
258e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport android.app.Notification;
268e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport android.app.NotificationChannel;
278e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport android.app.NotificationManager;
288e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport android.content.Context;
298e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport android.support.test.runner.AndroidJUnit4;
308e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport android.test.suitebuilder.annotation.SmallTest;
318e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport android.util.ArraySet;
328e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport com.android.systemui.SysuiTestCase;
338e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport com.android.systemui.util.NotificationChannels;
348e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport org.junit.Before;
358e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport org.junit.Test;
368e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport org.junit.runner.RunWith;
378e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport org.mockito.ArgumentCaptor;
388e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler
398e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport java.util.Arrays;
408e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport java.util.List;
418e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerimport java.util.Set;
428e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler
438e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler@SmallTest
448e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler@RunWith(AndroidJUnit4.class)
458e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandlerpublic class ChannelsTest extends SysuiTestCase {
468e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler    private final NotificationManager mMockNotificationManager = mock(NotificationManager.class);
478e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler
488e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler    @Before
498e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler    public void setup() throws Exception {
508e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        mContext.addMockSystemService(Context.NOTIFICATION_SERVICE, mMockNotificationManager);
518e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler    }
528e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler
538e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler    @Test
548e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler    public void testChannelSetup() {
558e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        Set<String> ALL_CHANNELS = new ArraySet<>(Arrays.asList(
568e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler                NotificationChannels.ALERTS,
578e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler                NotificationChannels.SCREENSHOTS,
581dc93bc407540561ebba1cc007073ab9c71d7a4eGeoffrey Pitsch                NotificationChannels.STORAGE,
591dc93bc407540561ebba1cc007073ab9c71d7a4eGeoffrey Pitsch                NotificationChannels.GENERAL
608e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        ));
618e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        NotificationChannels.createAll(mContext);
628e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        ArgumentCaptor<List> captor = ArgumentCaptor.forClass(List.class);
638e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        verify(mMockNotificationManager).createNotificationChannels(captor.capture());
648e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        final List<NotificationChannel> list = captor.getValue();
658e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        assertEquals(ALL_CHANNELS.size(), list.size());
668e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler        list.forEach((chan) -> assertTrue(ALL_CHANNELS.contains(chan.getId())));
678e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler    }
688e032e15e6b1b6a2f44fd3d5063ee83f45d71189Dan Sandler}
69