CollapsedStatusBarFragmentTest.java revision 60033fc07023c617e22629b919180054a7ccb11c
1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5 * except in compliance with the License. You may obtain a copy of the License at
6 *
7 *      http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11 * KIND, either express or implied. See the License for the specific language governing
12 * permissions and limitations under the License.
13 */
14
15package com.android.systemui.statusbar.phone;
16
17import static org.junit.Assert.assertEquals;
18import static org.mockito.Matchers.eq;
19import static org.mockito.Mockito.atLeast;
20import static org.mockito.Mockito.mock;
21import static org.mockito.Mockito.when;
22
23import android.app.StatusBarManager;
24import android.view.View;
25import android.view.ViewPropertyAnimator;
26
27import com.android.systemui.R;
28import android.testing.AndroidTestingRunner;
29
30import com.android.systemui.SysuiBaseFragmentTest;
31import com.android.systemui.statusbar.CommandQueue;
32import com.android.systemui.tuner.TunerService;
33import android.testing.TestableLooper.RunWithLooper;
34
35import org.junit.Before;
36import org.junit.runner.RunWith;
37import org.junit.Test;
38import org.mockito.Mockito;
39
40@RunWith(AndroidTestingRunner.class)
41@RunWithLooper(setAsMainLooper = true)
42public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
43
44    private NotificationIconAreaController mMockNotificiationAreaController;
45    private View mNotificationAreaInner;
46
47    public CollapsedStatusBarFragmentTest() {
48        super(CollapsedStatusBarFragment.class);
49    }
50
51    @Before
52    public void setup() {
53        mSysuiContext.putComponent(CommandQueue.class, mock(CommandQueue.class));
54        mSysuiContext.putComponent(StatusBar.class, mock(StatusBar.class));
55        mSysuiContext.putComponent(TunerService.class, mock(TunerService.class));
56        injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
57        mMockNotificiationAreaController = mock(NotificationIconAreaController.class);
58        mNotificationAreaInner = mock(View.class);
59        when(mNotificationAreaInner.animate()).thenReturn(mock(ViewPropertyAnimator.class));
60        when(mMockNotificiationAreaController.getNotificationInnerAreaView()).thenReturn(
61                mNotificationAreaInner);
62    }
63
64    @Test
65    public void testDisableNone() throws Exception {
66        mFragments.dispatchResume();
67        processAllMessages();
68
69        CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
70        fragment.initNotificationIconArea(mMockNotificiationAreaController);
71        fragment.disable(0, 0, false);
72
73        assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
74                .getVisibility());
75    }
76
77    @Test
78    public void testDisableSystemInfo() throws Exception {
79        mFragments.dispatchResume();
80        processAllMessages();
81
82        CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
83        fragment.initNotificationIconArea(mMockNotificiationAreaController);
84        fragment.disable(StatusBarManager.DISABLE_SYSTEM_INFO, 0, false);
85
86        assertEquals(View.INVISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
87                .getVisibility());
88
89        fragment.disable(0, 0, false);
90
91        assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
92                .getVisibility());
93    }
94
95    @Test
96    public void testDisableNotifications() throws Exception {
97        mFragments.dispatchResume();
98        processAllMessages();
99
100        CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
101        fragment.initNotificationIconArea(mMockNotificiationAreaController);
102        fragment.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false);
103
104        Mockito.verify(mNotificationAreaInner).setVisibility(eq(View.INVISIBLE));
105
106        fragment.disable(0, 0, false);
107
108        Mockito.verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE));
109    }
110}
111