1fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang/*
2fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * Copyright (C) 2017 The Android Open Source Project
3fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang *
4fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
5fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * you may not use this file except in compliance with the License.
6fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * You may obtain a copy of the License at
7fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang *
8fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
9fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang *
10fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * Unless required by applicable law or agreed to in writing, software
11fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
12fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * See the License for the specific language governing permissions and
14fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang * limitations under the License.
15fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang */
16fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
17fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangpackage com.android.settingslib;
18fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
19fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
20fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.content.Context;
21fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.support.v7.preference.Preference;
22fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.support.v7.preference.PreferenceViewHolder;
23fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.view.View;
24fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.widget.TextView;
25fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
26fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.junit.Before;
27fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.junit.Test;
28fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.junit.runner.RunWith;
29fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.mockito.Mock;
30fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.mockito.MockitoAnnotations;
31fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.robolectric.annotation.Config;
32fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
33fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport static org.mockito.Mockito.RETURNS_DEEP_STUBS;
34fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport static org.mockito.Mockito.mock;
35fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport static org.mockito.Mockito.never;
36fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport static org.mockito.Mockito.verify;
37fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport static org.mockito.Mockito.when;
38fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
39fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang@RunWith(SettingLibRobolectricTestRunner.class)
40fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
41fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangpublic class RestrictedPreferenceHelperTest {
42fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
43fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
44fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Mock
45fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private Context mContext;
46fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Mock
47fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private Preference mPreference;
48fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
49fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private PreferenceViewHolder mViewHolder;
50fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private RestrictedPreferenceHelper mHelper;
51fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
52fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Before
53fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    public void setUp() {
54fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        MockitoAnnotations.initMocks(this);
5581d53516abaf15f8443f715b96ab35c71202c28cFilip Pavlis        mViewHolder = PreferenceViewHolder.createInstanceForTests(mock(View.class));
56fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper = new RestrictedPreferenceHelper(mContext, mPreference, null);
57fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    }
58fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
59fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Test
60fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    public void bindPreference_disabled_shouldDisplayDisabledSummary() {
61fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        final TextView summaryView = mock(TextView.class, RETURNS_DEEP_STUBS);
62fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(mViewHolder.itemView.findViewById(android.R.id.summary))
63fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn(summaryView);
64fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(summaryView.getContext().getText(R.string.disabled_by_admin_summary_text))
65fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn("test");
66fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
67fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.useAdminDisabledSummary(true);
68fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.setDisabledByAdmin(new RestrictedLockUtils.EnforcedAdmin());
69fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.onBindViewHolder(mViewHolder);
70fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
71fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView).setText("test");
72fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView, never()).setVisibility(View.GONE);
73fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    }
74fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
75fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Test
76fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    public void bindPreference_notDisabled_shouldNotHideSummary() {
77fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        final TextView summaryView = mock(TextView.class, RETURNS_DEEP_STUBS);
78fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(mViewHolder.itemView.findViewById(android.R.id.summary))
79fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn(summaryView);
80fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(summaryView.getContext().getText(R.string.disabled_by_admin_summary_text))
81fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn("test");
82fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(summaryView.getText()).thenReturn("test");
83fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
84fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.useAdminDisabledSummary(true);
85fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.setDisabledByAdmin(null);
86fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.onBindViewHolder(mViewHolder);
87fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
88fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView).setText(null);
89fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView, never()).setVisibility(View.GONE);
90fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    }
91fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang}
92