1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 17package com.android.storagemanager.deletionhelper; 18 19import android.content.Context; 20import com.android.storagemanager.testing.StorageManagerRobolectricTestRunner; 21import com.android.storagemanager.testing.TestingConstants; 22import org.junit.Test; 23import org.junit.runner.RunWith; 24import org.mockito.Mock; 25import org.mockito.MockitoAnnotations; 26import org.robolectric.annotation.Config; 27import org.robolectric.shadows.ShadowApplication; 28 29 30import java.util.concurrent.TimeUnit; 31 32import static android.content.DialogInterface.BUTTON_NEGATIVE; 33import static com.google.common.truth.Truth.assertThat; 34import static org.mockito.Mockito.when; 35import static org.robolectric.util.FragmentTestUtil.startFragment; 36 37@RunWith(StorageManagerRobolectricTestRunner.class) 38@Config(manifest= TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION) 39public class StorageManagerUpsellDialogTest { 40 @Mock 41 StorageManagerUpsellDialog.Clock mClock; 42 43 @Test 44 public void testNoThanksMaximumShownTimes() { 45 MockitoAnnotations.initMocks(this); 46 final Context context = ShadowApplication.getInstance().getApplicationContext(); 47 StorageManagerUpsellDialog fragment = StorageManagerUpsellDialog.newInstance(0); 48 fragment.setClock(mClock); 49 50 assertThat(StorageManagerUpsellDialog.shouldShow(context, TimeUnit.DAYS.toMillis(90))) 51 .isTrue(); 52 53 startFragment(fragment); 54 fragment.onClick(null, BUTTON_NEGATIVE); 55 when(mClock.currentTimeMillis()).thenReturn(TimeUnit.DAYS.toMillis(90 * 2)); 56 assertThat(StorageManagerUpsellDialog.shouldShow(context, TimeUnit.DAYS.toMillis(90 * 2))) 57 .isTrue(); 58 59 startFragment(fragment); 60 fragment.onClick(null, BUTTON_NEGATIVE); 61 when(mClock.currentTimeMillis()).thenReturn(TimeUnit.DAYS.toMillis(90 * 3)); 62 assertThat(StorageManagerUpsellDialog.shouldShow(context, TimeUnit.DAYS.toMillis(90 * 3))) 63 .isTrue(); 64 65 startFragment(fragment); 66 fragment.onClick(null, BUTTON_NEGATIVE); 67 when(mClock.currentTimeMillis()).thenReturn(TimeUnit.DAYS.toMillis(90 * 4)); 68 assertThat(StorageManagerUpsellDialog.shouldShow(context, TimeUnit.DAYS.toMillis(90 * 4))) 69 .isTrue(); 70 71 startFragment(fragment); 72 fragment.onClick(null, BUTTON_NEGATIVE); 73 when(mClock.currentTimeMillis()).thenReturn(TimeUnit.DAYS.toMillis(90 * 5)); 74 assertThat(StorageManagerUpsellDialog.shouldShow(context, TimeUnit.DAYS.toMillis(90 * 5))) 75 .isFalse(); 76 } 77} 78