1a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen/* 2a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * Copyright (C) 2016 The Android Open Source Project 3a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * 4a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * you may not use this file except in compliance with the License. 6a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * You may obtain a copy of the License at 7a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * 8a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * http://www.apache.org/licenses/LICENSE-2.0 9a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * 10a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * Unless required by applicable law or agreed to in writing, software 11a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * distributed under the License is distributed on an "AS IS" BASIS, 12a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * See the License for the specific language governing permissions and 14a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen * limitations under the License 15a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen */ 16a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenpackage com.android.settings.datausage; 17a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 18a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport android.content.Context; 19a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport android.content.DialogInterface; 20a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport android.content.SharedPreferences; 21a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport android.os.Bundle; 22a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport android.support.v7.preference.PreferenceManager; 239f1e911759dc6fedaac9fa65afb79f6a93022bf4Andrew Sappersteinimport com.android.settings.testutils.SettingsRobolectricTestRunner; 24a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport com.android.settings.TestConfig; 25a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport org.junit.Before; 26a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport org.junit.Test; 27a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport org.junit.runner.RunWith; 28a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport org.mockito.Mock; 29a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport org.mockito.MockitoAnnotations; 30a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport org.robolectric.RuntimeEnvironment; 31a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport org.robolectric.annotation.Config; 32a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 33a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport static junit.framework.Assert.assertFalse; 34a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport static junit.framework.Assert.assertTrue; 35a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport static org.mockito.Matchers.anyLong; 36a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport static org.mockito.Mockito.never; 37a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport static org.mockito.Mockito.verify; 38a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenimport static org.mockito.Mockito.when; 39a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 40f86905ed50f7a5543edb1b7425e0fa2db985de1cSalvador Martinez@RunWith(SettingsRobolectricTestRunner.class) 41a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 42a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chenpublic class BillingCycleSettingsTest { 43a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 44a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen private static final int LIMIT_BYTES = 123; 45a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 46a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen @Mock 47a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen BillingCycleSettings mMockBillingCycleSettings; 48a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen BillingCycleSettings.ConfirmLimitFragment mConfirmLimitFragment; 49a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen @Mock 50a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen PreferenceManager mMockPreferenceManager; 51a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen SharedPreferences mSharedPreferences; 52a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 53a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen @Before 54a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen public void setUp() { 55a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen MockitoAnnotations.initMocks(this); 56a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen mConfirmLimitFragment = new BillingCycleSettings.ConfirmLimitFragment(); 57a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen mConfirmLimitFragment.setTargetFragment(mMockBillingCycleSettings, 0); 58a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen mSharedPreferences = RuntimeEnvironment.application.getSharedPreferences( 59a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen "testSharedPreferences", Context.MODE_PRIVATE); 60a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen when(mMockBillingCycleSettings.getPreferenceManager()).thenReturn(mMockPreferenceManager); 61a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen when(mMockPreferenceManager.getSharedPreferences()).thenReturn(mSharedPreferences); 62a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen final Bundle args = new Bundle(); 63a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen args.putLong(BillingCycleSettings.ConfirmLimitFragment.EXTRA_LIMIT_BYTES, LIMIT_BYTES); 64a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen mConfirmLimitFragment.setArguments(args); 65a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen mSharedPreferences.edit().putBoolean( 66a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen BillingCycleSettings.KEY_SET_DATA_LIMIT, false).apply(); 67a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen } 68a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 69a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen @Test 70a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen public void testDataUsageLimit_shouldNotBeSetOnCancel() { 71a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen mConfirmLimitFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE); 72a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 73a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen assertFalse(mSharedPreferences.getBoolean(BillingCycleSettings.KEY_SET_DATA_LIMIT, true)); 74a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen verify(mMockBillingCycleSettings, never()).setPolicyLimitBytes(anyLong()); 75a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen } 76a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 77a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen @Test 78a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen public void testDataUsageLimit_shouldBeSetOnConfirmation() { 79a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen mConfirmLimitFragment.onClick(null, DialogInterface.BUTTON_POSITIVE); 80a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen 81a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen assertTrue(mSharedPreferences.getBoolean(BillingCycleSettings.KEY_SET_DATA_LIMIT, false)); 82a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen verify(mMockBillingCycleSettings).setPolicyLimitBytes(LIMIT_BYTES); 83a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen } 84a88733aed81a08afd3404ca1609ab4f86d9bec2cStephen Chen}