1 /*
2  * Copyright (C) 2020 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 
17 package com.android.keyguard;
18 
19 import static org.mockito.Mockito.verify;
20 
21 import android.test.suitebuilder.annotation.SmallTest;
22 import android.testing.AndroidTestingRunner;
23 
24 import com.android.systemui.SysuiTestCase;
25 import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
26 import com.android.systemui.shared.system.smartspace.SmartspaceTransitionController;
27 import com.android.systemui.statusbar.phone.DozeParameters;
28 import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
29 import com.android.systemui.statusbar.policy.ConfigurationController;
30 import com.android.systemui.statusbar.policy.KeyguardStateController;
31 
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.ArgumentCaptor;
36 import org.mockito.Captor;
37 import org.mockito.Mock;
38 import org.mockito.MockitoAnnotations;
39 
40 @SmallTest
41 @RunWith(AndroidTestingRunner.class)
42 public class KeyguardStatusViewControllerTest extends SysuiTestCase {
43 
44     @Mock
45     private KeyguardStatusView mKeyguardStatusView;
46     @Mock
47     private KeyguardSliceViewController mKeyguardSliceViewController;
48     @Mock
49     private KeyguardClockSwitchController mKeyguardClockSwitchController;
50     @Mock
51     private KeyguardStateController mKeyguardStateController;
52     @Mock
53     private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
54     @Mock
55     ConfigurationController mConfigurationController;
56     @Mock
57     DozeParameters mDozeParameters;
58     @Mock
59     KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
60     @Mock
61     SmartspaceTransitionController mSmartSpaceTransitionController;
62     @Mock
63     UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
64     @Captor
65     private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardUpdateMonitorCallbackCaptor;
66 
67     private KeyguardStatusViewController mController;
68 
69     @Before
setup()70     public void setup() {
71         MockitoAnnotations.initMocks(this);
72 
73         mController = new KeyguardStatusViewController(
74                 mKeyguardStatusView,
75                 mKeyguardSliceViewController,
76                 mKeyguardClockSwitchController,
77                 mKeyguardStateController,
78                 mKeyguardUpdateMonitor,
79                 mConfigurationController,
80                 mDozeParameters,
81                 mKeyguardUnlockAnimationController,
82                 mSmartSpaceTransitionController,
83                 mUnlockedScreenOffAnimationController);
84     }
85 
86     @Test
dozeTimeTick_updatesSlice()87     public void dozeTimeTick_updatesSlice() {
88         mController.dozeTimeTick();
89         verify(mKeyguardSliceViewController).refresh();
90     }
91 
92     @Test
dozeTimeTick_updatesClock()93     public void dozeTimeTick_updatesClock() {
94         mController.dozeTimeTick();
95         verify(mKeyguardClockSwitchController).refresh();
96     }
97 
98     @Test
timeFormatUpdateNotifiesClockSwitchController()99     public void timeFormatUpdateNotifiesClockSwitchController() {
100         mController.onViewAttached();
101 
102         verify(mKeyguardUpdateMonitor).registerCallback(
103                 mKeyguardUpdateMonitorCallbackCaptor.capture());
104 
105         mKeyguardUpdateMonitorCallbackCaptor.getValue().onTimeFormatChanged("");
106         verify(mKeyguardClockSwitchController).refreshFormat();
107     }
108 
109     @Test
userChangeNotifiesClockSwitchController()110     public void userChangeNotifiesClockSwitchController() {
111         mController.onViewAttached();
112 
113         verify(mKeyguardUpdateMonitor).registerCallback(
114                 mKeyguardUpdateMonitorCallbackCaptor.capture());
115 
116         mKeyguardUpdateMonitorCallbackCaptor.getValue().onUserSwitchComplete(0);
117         verify(mKeyguardClockSwitchController).refreshFormat();
118     }
119 }
120