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
205c50dc11b857dfdc265a4e0aa80fd7d17a62e7f6James Lemieuximport static org.mockito.Mockito.RETURNS_DEEP_STUBS;
215c50dc11b857dfdc265a4e0aa80fd7d17a62e7f6James Lemieuximport static org.mockito.Mockito.mock;
225c50dc11b857dfdc265a4e0aa80fd7d17a62e7f6James Lemieuximport static org.mockito.Mockito.never;
235c50dc11b857dfdc265a4e0aa80fd7d17a62e7f6James Lemieuximport static org.mockito.Mockito.verify;
245c50dc11b857dfdc265a4e0aa80fd7d17a62e7f6James Lemieuximport static org.mockito.Mockito.when;
255c50dc11b857dfdc265a4e0aa80fd7d17a62e7f6James Lemieux
26fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.content.Context;
27fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.support.v7.preference.Preference;
28fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.support.v7.preference.PreferenceViewHolder;
29fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.view.View;
30fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport android.widget.TextView;
31fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
32fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.junit.Before;
33fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.junit.Test;
34fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.junit.runner.RunWith;
35fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.mockito.Mock;
36fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangimport org.mockito.MockitoAnnotations;
37fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
384ca9ebd5d355b72eb6076b5cce68968ea9d794c3Tony Mantler@RunWith(SettingsLibRobolectricTestRunner.class)
39fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhangpublic class RestrictedPreferenceHelperTest {
40fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
41fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Mock
42fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private Context mContext;
43fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Mock
44fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private Preference mPreference;
45fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
46fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private PreferenceViewHolder mViewHolder;
47fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    private RestrictedPreferenceHelper mHelper;
48fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
49fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Before
50fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    public void setUp() {
51fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        MockitoAnnotations.initMocks(this);
5281d53516abaf15f8443f715b96ab35c71202c28cFilip Pavlis        mViewHolder = PreferenceViewHolder.createInstanceForTests(mock(View.class));
53fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper = new RestrictedPreferenceHelper(mContext, mPreference, null);
54fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    }
55fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
56fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Test
57fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    public void bindPreference_disabled_shouldDisplayDisabledSummary() {
58fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        final TextView summaryView = mock(TextView.class, RETURNS_DEEP_STUBS);
59fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(mViewHolder.itemView.findViewById(android.R.id.summary))
60fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn(summaryView);
61fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(summaryView.getContext().getText(R.string.disabled_by_admin_summary_text))
62fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn("test");
63fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
64fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.useAdminDisabledSummary(true);
65fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.setDisabledByAdmin(new RestrictedLockUtils.EnforcedAdmin());
66fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.onBindViewHolder(mViewHolder);
67fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
68fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView).setText("test");
69fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView, never()).setVisibility(View.GONE);
70fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    }
71fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
72fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    @Test
73fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    public void bindPreference_notDisabled_shouldNotHideSummary() {
74fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        final TextView summaryView = mock(TextView.class, RETURNS_DEEP_STUBS);
75fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(mViewHolder.itemView.findViewById(android.R.id.summary))
76fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn(summaryView);
77fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(summaryView.getContext().getText(R.string.disabled_by_admin_summary_text))
78fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang                .thenReturn("test");
79fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        when(summaryView.getText()).thenReturn("test");
80fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
81fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.useAdminDisabledSummary(true);
82fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.setDisabledByAdmin(null);
83fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        mHelper.onBindViewHolder(mViewHolder);
84fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang
85fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView).setText(null);
86fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang        verify(summaryView, never()).setVisibility(View.GONE);
87fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang    }
88fdfc88faef4d722b7ae09d8acd7a57a511b3eb72Fan Zhang}
89