2 * Copyright (C) 2019 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.settings.privacy;
19 import static com.google.common.truth.Truth.assertThat;
21 import static org.mockito.ArgumentMatchers.any;
22 import static org.mockito.Mockito.spy;
23 import static org.mockito.Mockito.verify;
24 import static org.mockito.Mockito.when;
26 import android.content.Context;
27 import android.content.pm.UserInfo;
28 import android.os.Bundle;
29 import android.os.UserManager;
30 import android.permission.PermissionControllerManager;
31 import android.view.View;
32 import android.view.accessibility.AccessibilityManager;
34 import com.android.internal.widget.LockPatternUtils;
35 import com.android.settings.testutils.FakeFeatureFactory;
36 import com.android.settings.testutils.shadow.ShadowPermissionControllerManager;
37 import com.android.settings.testutils.shadow.ShadowUserManager;
39 import org.junit.Before;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 import org.mockito.Mock;
43 import org.mockito.MockitoAnnotations;
44 import org.robolectric.RobolectricTestRunner;
45 import org.robolectric.RuntimeEnvironment;
46 import org.robolectric.annotation.Config;
47 import org.robolectric.shadow.api.Shadow;
48 import org.robolectric.shadows.ShadowAccessibilityManager;
49 import org.robolectric.shadows.androidx.fragment.FragmentController;
51 import java.util.ArrayList;
54 @RunWith(RobolectricTestRunner.class)
55 @Config(shadows = {ShadowUserManager.class, ShadowPermissionControllerManager.class})
56 public class PrivacyDashboardFragmentTest {
59 private LockPatternUtils mLockPatternUtils;
61 private PermissionControllerManager mPCM;
63 private Context mContext;
64 private PrivacyDashboardFragment mFragment;
68 MockitoAnnotations.initMocks(this);
69 mContext = RuntimeEnvironment.application;
70 final UserManager userManager = mContext.getSystemService(UserManager.class);
71 final ShadowUserManager shadowUserManager = Shadow.extract(userManager);
72 final ShadowAccessibilityManager accessibilityManager = Shadow.extract(
73 AccessibilityManager.getInstance(mContext));
74 accessibilityManager.setEnabledAccessibilityServiceList(new ArrayList<>());
75 shadowUserManager.addProfile(new UserInfo(123, null, 0));
76 when(FakeFeatureFactory.setupForTest().securityFeatureProvider.getLockPatternUtils(
77 any(Context.class))).thenReturn(mLockPatternUtils);
78 mFragment = spy(FragmentController.of(new PrivacyDashboardFragment())
79 .create().start().get());
83 public void onViewCreated_shouldSetActionBarShadowAnimation() {
84 mFragment.onViewCreated(new View(mContext), new Bundle());
86 assertThat(mFragment.getActivity().getActionBar().getElevation()).isEqualTo(0.f);
90 public void onViewCreated_shouldInitLinearProgressBar() {
91 mFragment.onViewCreated(new View(mContext), new Bundle());
93 verify(mFragment).initLoadingBar();
97 public void updateLinearProgressbar_isVisible_shouldShowProgressBar() {
98 mFragment.setLoadingEnabled(true /* enabled */);
100 assertThat(mFragment.mProgressHeader.getVisibility()).isEqualTo(View.VISIBLE);
101 assertThat(mFragment.mProgressAnimation.getVisibility()).isEqualTo(View.VISIBLE);
105 public void updateLinearProgressbar_isInVisible_shouldHideProgressBar() {
106 mFragment.setLoadingEnabled(false /* enabled */);
108 assertThat(mFragment.mProgressHeader.getVisibility()).isEqualTo(View.INVISIBLE);
109 assertThat(mFragment.mProgressAnimation.getVisibility()).isEqualTo(View.INVISIBLE);