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