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