1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of 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, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.settings; 18 19 import static org.mockito.Mockito.doReturn; 20 import static org.mockito.Mockito.never; 21 import static org.mockito.Mockito.spy; 22 import static org.mockito.Mockito.verify; 23 import static org.mockito.Mockito.when; 24 25 import android.content.ContentResolver; 26 import android.content.Context; 27 import android.media.RingtoneManager; 28 import android.net.Uri; 29 30 import androidx.test.core.app.ApplicationProvider; 31 import androidx.test.ext.junit.runners.AndroidJUnit4; 32 33 import org.junit.Before; 34 import org.junit.Test; 35 import org.junit.runner.RunWith; 36 import org.mockito.Mock; 37 import org.mockito.MockitoAnnotations; 38 39 /** Unittest for DefaultRingtonePreference. */ 40 @RunWith(AndroidJUnit4.class) 41 public class DefaultRingtonePreferenceTest { 42 43 private DefaultRingtonePreference mDefaultRingtonePreference; 44 45 @Mock 46 private ContentResolver mContentResolver; 47 @Mock 48 private Uri mRingtoneUri; 49 50 @Before setUp()51 public void setUp() { 52 MockitoAnnotations.initMocks(this); 53 54 Context context = spy(ApplicationProvider.getApplicationContext()); 55 doReturn(mContentResolver).when(context).getContentResolver(); 56 57 mDefaultRingtonePreference = spy(new DefaultRingtonePreference(context, null /* attrs */)); 58 doReturn(context).when(mDefaultRingtonePreference).getContext(); 59 when(mDefaultRingtonePreference.getRingtoneType()) 60 .thenReturn(RingtoneManager.TYPE_RINGTONE); 61 mDefaultRingtonePreference.setUserId(1); 62 mDefaultRingtonePreference.mUserContext = context; 63 } 64 65 @Test onSaveRingtone_nullMimeType_shouldNotSetRingtone()66 public void onSaveRingtone_nullMimeType_shouldNotSetRingtone() { 67 when(mContentResolver.getType(mRingtoneUri)).thenReturn(null); 68 69 mDefaultRingtonePreference.onSaveRingtone(mRingtoneUri); 70 71 verify(mDefaultRingtonePreference, never()).setActualDefaultRingtoneUri(mRingtoneUri); 72 } 73 74 @Test onSaveRingtone_notAudioMimeType_shouldNotSetRingtone()75 public void onSaveRingtone_notAudioMimeType_shouldNotSetRingtone() { 76 when(mContentResolver.getType(mRingtoneUri)).thenReturn("text/plain"); 77 78 mDefaultRingtonePreference.onSaveRingtone(mRingtoneUri); 79 80 verify(mDefaultRingtonePreference, never()).setActualDefaultRingtoneUri(mRingtoneUri); 81 } 82 } 83