101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang/* 201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * Copyright (C) 2017 The Android Open Source Project 301ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * 401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * you may not use this file except in compliance with the License. 601ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * You may obtain a copy of the License at 701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * 801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 901ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * 1001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * Unless required by applicable law or agreed to in writing, software 1101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 1201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1301ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * See the License for the specific language governing permissions and 1401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang * limitations under the License. 1501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang */ 1601ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 1701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangpackage com.android.settings.print; 1801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 1901ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport static org.mockito.Mockito.mock; 2001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport static org.mockito.Mockito.verify; 2101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport static org.mockito.Mockito.when; 2201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 2301ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport android.app.Activity; 2401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport android.content.res.Resources; 25206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhangimport android.print.PrintJob; 26206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhangimport android.print.PrintJobInfo; 2701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport android.print.PrintManager; 2801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport android.printservice.PrintServiceInfo; 2901ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 3001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport com.android.settings.R; 3101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport com.android.settings.TestConfig; 3201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport com.android.settings.dashboard.SummaryLoader; 339f1e911759dc6fedaac9fa65afb79f6a93022bf4Andrew Sappersteinimport com.android.settings.testutils.SettingsRobolectricTestRunner; 3401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 3501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport org.junit.Before; 3601ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport org.junit.Test; 3701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport org.junit.runner.RunWith; 3801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport org.mockito.Mock; 39206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhangimport org.mockito.Mockito; 4001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport org.mockito.MockitoAnnotations; 4101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport org.robolectric.annotation.Config; 4201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 43206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhangimport java.util.ArrayList; 4401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangimport java.util.List; 4501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 4601ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 4701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang@RunWith(SettingsRobolectricTestRunner.class) 4801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 4901ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhangpublic class PrintSettingsFragmentTest { 5001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 5101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang @Mock 5201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang private PrintSettingsFragment.PrintSummaryProvider.PrintManagerWrapper mPrintManager; 5301ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang @Mock 5401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang private Activity mActivity; 5501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang @Mock 5601ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang private Resources mRes; 5701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang @Mock 5801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang private SummaryLoader mSummaryLoader; 5901ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang private SummaryLoader.SummaryProvider mSummaryProvider; 6001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 6101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang @Before 6201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang public void setUp() { 6301ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang MockitoAnnotations.initMocks(this); 6401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang when(mActivity.getResources()).thenReturn(mRes); 6501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang mSummaryProvider = new PrintSettingsFragment.PrintSummaryProvider(mActivity, mSummaryLoader, 6601ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang mPrintManager); 6701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang } 6801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 6901ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang @Test 70206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang public void testSummary_hasActiveJob_shouldSetSummaryToNumberOfJobs() { 71206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang final List<PrintJob> printJobs = new ArrayList<>(); 72206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang final PrintJob job = mock(PrintJob.class, Mockito.RETURNS_DEEP_STUBS); 73206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang printJobs.add(job); 74206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang when(job.getInfo().getState()).thenReturn(PrintJobInfo.STATE_STARTED); 75206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang when(mPrintManager.getPrintJobs()).thenReturn(printJobs); 76206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang 77206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang mSummaryProvider.setListening(true); 78206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang 79206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang verify(mRes).getQuantityString(R.plurals.print_jobs_summary, 1, 1); 80206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang } 81206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang 82206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang @Test 8301ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang public void testSummary_shouldSetSummaryToNumberOfPrintServices() { 8401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang final List<PrintServiceInfo> printServices = mock(List.class); 8501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang when(printServices.isEmpty()).thenReturn(false); 8601ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang when(printServices.size()).thenReturn(2); 8701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang // 2 services 88c5f4120484386fe841f1123cff96f806e56e111eDoris Ling when(mPrintManager.getPrintServices(PrintManager.ENABLED_SERVICES)) 89206b774f79716ad6c02e5f5c5066d3eea7e72bf8Fan Zhang .thenReturn(printServices); 9001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 9101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang mSummaryProvider.setListening(true); 9201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 9301ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang verify(mRes).getQuantityString(R.plurals.print_settings_summary, 2, 2); 9401ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 9501ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang // No service 96c5f4120484386fe841f1123cff96f806e56e111eDoris Ling when(mPrintManager.getPrintServices(PrintManager.ENABLED_SERVICES)).thenReturn(null); 9701ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 9801ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang mSummaryProvider.setListening(true); 9901ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang 10001ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang verify(mActivity).getString(R.string.print_settings_summary_no_service); 10101ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang } 10201ece62faa6bfc05b6a344a9069896b2f5097242Fan Zhang} 103