diff options
author | Yiqun Wu <yiqunw@google.com> | 2019-05-21 15:07:51 -0700 |
---|---|---|
committer | Yiqun Wu <yiqunw@google.com> | 2019-05-28 11:52:35 -0700 |
commit | 160cdab1bdbdba37ef0be3f8e4cf0a3739cb49f5 (patch) | |
tree | 2b74f442c9e4c6203504ff6380b20a5c6ab1a874 | |
parent | 2a27cbe11dcf3f5dd18208587e61618571c3e6d4 (diff) | |
download | platform_packages_apps_Car_Dialer-160cdab1bdbdba37ef0be3f8e4cf0a3739cb49f5.tar.gz platform_packages_apps_Car_Dialer-160cdab1bdbdba37ef0be3f8e4cf0a3739cb49f5.tar.bz2 platform_packages_apps_Car_Dialer-160cdab1bdbdba37ef0be3f8e4cf0a3739cb49f5.zip |
DO NOT MERGE: Shadow the AndroidViewModelFactory
Instead of shadowing the ViewModelProvider which may affect fragment
manager, we will just shadow the AndroidViewModelFactory.
Bug: 133147749
Test: mma
Change-Id: I2faaf40d622b23dcc1ca64081b6f64c717437885
12 files changed, 32 insertions, 51 deletions
diff --git a/tests/robotests/AndroidManifest.xml b/tests/robotests/AndroidManifest.xml deleted file mode 100644 index c20780c6..00000000 --- a/tests/robotests/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2018 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.car.dialer.robotests"> - <application/> - -</manifest> diff --git a/tests/robotests/config/robolectric.properties b/tests/robotests/config/robolectric.properties index 12e47bc3..fc4f8ca0 100644 --- a/tests/robotests/config/robolectric.properties +++ b/tests/robotests/config/robolectric.properties @@ -11,5 +11,4 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -manifest=packages/apps/Car/Dialer/AndroidManifest.xml sdk=NEWEST_SDK diff --git a/tests/robotests/src/com/android/car/dialer/FragmentTestActivity.java b/tests/robotests/src/com/android/car/dialer/FragmentTestActivity.java index 23441e3d..d4401264 100644 --- a/tests/robotests/src/com/android/car/dialer/FragmentTestActivity.java +++ b/tests/robotests/src/com/android/car/dialer/FragmentTestActivity.java @@ -34,6 +34,7 @@ public class FragmentTestActivity extends FragmentActivity implements @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setTheme(R.style.Theme_Dialer); setContentView(R.layout.test_activity); } diff --git a/tests/robotests/src/com/android/car/dialer/TestDialerApplication.java b/tests/robotests/src/com/android/car/dialer/TestDialerApplication.java index 1b2b31a1..4b3a4702 100644 --- a/tests/robotests/src/com/android/car/dialer/TestDialerApplication.java +++ b/tests/robotests/src/com/android/car/dialer/TestDialerApplication.java @@ -16,8 +16,8 @@ package com.android.car.dialer; -import static org.robolectric.Shadows.shadowOf; import static org.mockito.Mockito.mock; +import static org.robolectric.Shadows.shadowOf; import android.app.Application; import android.app.NotificationManager; diff --git a/tests/robotests/src/com/android/car/dialer/telecom/UiCallManagerTest.java b/tests/robotests/src/com/android/car/dialer/telecom/UiCallManagerTest.java index e9c24d4d..3fd93e8b 100644 --- a/tests/robotests/src/com/android/car/dialer/telecom/UiCallManagerTest.java +++ b/tests/robotests/src/com/android/car/dialer/telecom/UiCallManagerTest.java @@ -31,6 +31,7 @@ import android.net.Uri; import android.os.Bundle; import android.telecom.TelecomManager; +import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.R; import com.android.car.dialer.TestDialerApplication; @@ -41,13 +42,12 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowContextImpl; import org.robolectric.shadows.ShadowToast; -@RunWith(RobolectricTestRunner.class) +@RunWith(CarDialerRobolectricTestRunner.class) public class UiCallManagerTest { private static final String TEL_SCHEME = "tel"; diff --git a/tests/robotests/src/com/android/car/dialer/testutils/ShadowViewModelProvider.java b/tests/robotests/src/com/android/car/dialer/testutils/ShadowAndroidViewModelFactory.java index b1a27bb3..b1f3d688 100644 --- a/tests/robotests/src/com/android/car/dialer/testutils/ShadowViewModelProvider.java +++ b/tests/robotests/src/com/android/car/dialer/testutils/ShadowAndroidViewModelFactory.java @@ -16,6 +16,7 @@ package com.android.car.dialer.testutils; +import androidx.annotation.NonNull; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; @@ -28,23 +29,23 @@ import java.util.Map; /** * Shadow class for {@link ViewModelProvider}. */ -@Implements(ViewModelProvider.class) -public class ShadowViewModelProvider { +@Implements(ViewModelProvider.AndroidViewModelFactory.class) +public class ShadowAndroidViewModelFactory { - private static Map<Class, ViewModel> viewModelMap = new HashMap<>(); + private static final Map<Class, ViewModel> VIEW_MODEL_MAP = new HashMap<>(); /** * Adds class and view model pairs to the map. */ public static <T extends ViewModel> void add(Class<T> modelClass, T viewModel) { - viewModelMap.put(modelClass, viewModel); + VIEW_MODEL_MAP.put(modelClass, viewModel); } /** * Returns a ViewModel from the map. */ @Implementation - public <T extends ViewModel> T get(Class<T> modelClass) { - return (T) viewModelMap.get(modelClass); + public <T extends ViewModel> T create(@NonNull Class<T> modelClass) { + return (T) VIEW_MODEL_MAP.get(modelClass); } } diff --git a/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java index b046fe74..9eb10a76 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/activecall/OnGoingCallControllerBarFragmentTest.java @@ -40,7 +40,7 @@ import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; import com.android.car.dialer.telecom.InCallServiceImpl; import com.android.car.dialer.telecom.UiCallManager; -import com.android.car.dialer.testutils.ShadowViewModelProvider; +import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import org.junit.Before; import org.junit.Test; @@ -57,7 +57,7 @@ import org.robolectric.shadows.ShadowLooper; import java.util.ArrayList; import java.util.List; -@Config(shadows = {ShadowViewModelProvider.class}) +@Config(shadows = {ShadowAndroidViewModelFactory.class}) @RunWith(CarDialerRobolectricTestRunner.class) public class OnGoingCallControllerBarFragmentTest { private static final String CALL_STATE = "CALL_STATE"; @@ -214,7 +214,7 @@ public class OnGoingCallControllerBarFragmentTest { when(mMockInCallViewModel.getPrimaryCallDetail()).thenReturn(mock(LiveData.class)); when(mMockInCallViewModel.getCallStateDescription()).thenReturn(mock(LiveData.class)); when(mMockInCallViewModel.getPrimaryCallState()).thenReturn(mock(LiveData.class)); - ShadowViewModelProvider.add(InCallViewModel.class, mMockInCallViewModel); + ShadowAndroidViewModelFactory.add(InCallViewModel.class, mMockInCallViewModel); FragmentTestActivity fragmentTestActivity = Robolectric.buildActivity( FragmentTestActivity.class).create().start().resume().get(); diff --git a/tests/robotests/src/com/android/car/dialer/ui/activecall/RingingCallControllerBarFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/activecall/RingingCallControllerBarFragmentTest.java index d1ce0d0a..1d03a51a 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/activecall/RingingCallControllerBarFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/activecall/RingingCallControllerBarFragmentTest.java @@ -32,7 +32,7 @@ import androidx.lifecycle.MutableLiveData; import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; -import com.android.car.dialer.testutils.ShadowViewModelProvider; +import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import org.junit.Before; import org.junit.Test; @@ -43,7 +43,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; -@Config(shadows = {ShadowViewModelProvider.class}) +@Config(shadows = {ShadowAndroidViewModelFactory.class}) @RunWith(CarDialerRobolectricTestRunner.class) public class RingingCallControllerBarFragmentTest { @@ -63,7 +63,7 @@ public class RingingCallControllerBarFragmentTest { when(mMockInCallViewModel.getPrimaryCallDetail()).thenReturn(mock(LiveData.class)); when(mMockInCallViewModel.getCallStateDescription()).thenReturn(mock(LiveData.class)); when(mMockInCallViewModel.getPrimaryCallState()).thenReturn(mock(LiveData.class)); - ShadowViewModelProvider.add(InCallViewModel.class, mMockInCallViewModel); + ShadowAndroidViewModelFactory.add(InCallViewModel.class, mMockInCallViewModel); FragmentTestActivity fragmentTestActivity = Robolectric.buildActivity( FragmentTestActivity.class).create().start().resume().get(); diff --git a/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java index 4d5a482d..8463f573 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/calllog/CallHistoryFragmentTest.java @@ -33,7 +33,7 @@ import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; import com.android.car.dialer.livedata.CallHistoryLiveData; import com.android.car.dialer.telecom.UiCallManager; -import com.android.car.dialer.testutils.ShadowViewModelProvider; +import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import com.android.car.dialer.ui.common.entity.UiCallLog; import com.android.car.dialer.widget.CallTypeIconsView; import com.android.car.telephony.common.InMemoryPhoneBook; @@ -53,7 +53,7 @@ import org.robolectric.annotation.Config; import java.util.Arrays; import java.util.List; -@Config(shadows = {ShadowViewModelProvider.class}) +@Config(shadows = {ShadowAndroidViewModelFactory.class}) @RunWith(CarDialerRobolectricTestRunner.class) public class CallHistoryFragmentTest { private static final String PHONE_NUMBER = "6502530000"; @@ -86,7 +86,7 @@ public class CallHistoryFragmentTest { MutableLiveData<List<UiCallLog>> callLog = new MutableLiveData<>(); callLog.setValue(Arrays.asList(uiCallLog)); - ShadowViewModelProvider.add(CallHistoryViewModel.class, mMockCallHistoryViewModel); + ShadowAndroidViewModelFactory.add(CallHistoryViewModel.class, mMockCallHistoryViewModel); when(mMockCallHistoryViewModel.getCallHistory()).thenReturn(callLog); CallHistoryFragment callHistoryFragment = CallHistoryFragment.newInstance(); diff --git a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java index 26350686..ac15afea 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactDetailsFragmentTest.java @@ -33,7 +33,7 @@ import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; import com.android.car.dialer.telecom.UiCallManager; -import com.android.car.dialer.testutils.ShadowViewModelProvider; +import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneNumber; @@ -48,7 +48,7 @@ import org.robolectric.annotation.Config; import java.util.Arrays; -@Config(shadows = {ShadowViewModelProvider.class}, qualifiers = "h610dp") +@Config(shadows = {ShadowAndroidViewModelFactory.class}, qualifiers = "h610dp") @RunWith(CarDialerRobolectricTestRunner.class) public class ContactDetailsFragmentTest { private static final String DISPLAY_NAME = "NAME"; @@ -84,7 +84,8 @@ public class ContactDetailsFragmentTest { MutableLiveData<Contact> contactDetails = new MutableLiveData<>(); contactDetails.setValue(mMockContact); - ShadowViewModelProvider.add(ContactDetailsViewModel.class, mMockContactDetailsViewModel); + ShadowAndroidViewModelFactory.add(ContactDetailsViewModel.class, + mMockContactDetailsViewModel); when(mMockContactDetailsViewModel.getContactDetails(mMockContactLookupUri)).thenReturn( contactDetails); } diff --git a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java index 40131b59..d40a50bc 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/contact/ContactListFragmentTest.java @@ -35,7 +35,7 @@ import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; import com.android.car.dialer.telecom.UiCallManager; -import com.android.car.dialer.testutils.ShadowViewModelProvider; +import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneNumber; @@ -52,7 +52,7 @@ import org.robolectric.shadows.ShadowAlertDialog; import java.util.Arrays; import java.util.List; -@Config(shadows = {ShadowViewModelProvider.class}) +@Config(shadows = {ShadowAndroidViewModelFactory.class}) @RunWith(CarDialerRobolectricTestRunner.class) public class ContactListFragmentTest { private static final String RAW_NUMBNER = "6502530000"; @@ -81,12 +81,13 @@ public class ContactListFragmentTest { MutableLiveData<List<Contact>> contactList = new MutableLiveData<>(); contactList.setValue(Arrays.asList(mMockContact1, mMockContact2, mMockContact3)); - ShadowViewModelProvider.add(ContactListViewModel.class, mMockContactListViewModel); + ShadowAndroidViewModelFactory.add(ContactListViewModel.class, mMockContactListViewModel); when(mMockContactListViewModel.getAllContacts()).thenReturn(contactList); MutableLiveData<Contact> contactDetail = new MutableLiveData<>(); contactDetail.setValue(mMockContact1); - ShadowViewModelProvider.add(ContactDetailsViewModel.class, mMockContactDetailsViewModel); + ShadowAndroidViewModelFactory.add(ContactDetailsViewModel.class, + mMockContactDetailsViewModel); when(mMockContactDetailsViewModel.getContactDetails(any())).thenReturn(contactDetail); } diff --git a/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java b/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java index 947dcc02..04b2327b 100644 --- a/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java +++ b/tests/robotests/src/com/android/car/dialer/ui/favorite/FavoriteFragmentTest.java @@ -31,7 +31,7 @@ import com.android.car.dialer.CarDialerRobolectricTestRunner; import com.android.car.dialer.FragmentTestActivity; import com.android.car.dialer.R; import com.android.car.dialer.telecom.UiCallManager; -import com.android.car.dialer.testutils.ShadowViewModelProvider; +import com.android.car.dialer.testutils.ShadowAndroidViewModelFactory; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.PhoneNumber; @@ -47,7 +47,7 @@ import org.robolectric.annotation.Config; import java.util.Arrays; import java.util.List; -@Config(shadows = {ShadowViewModelProvider.class}) +@Config(shadows = {ShadowAndroidViewModelFactory.class}) @RunWith(CarDialerRobolectricTestRunner.class) public class FavoriteFragmentTest { private static final String RAW_NUMBER = "6502530000"; @@ -72,7 +72,7 @@ public class FavoriteFragmentTest { when(mMockPhoneNumber.getRawNumber()).thenReturn(RAW_NUMBER); MutableLiveData<List<Contact>> favoriteContacts = new MutableLiveData<>(); favoriteContacts.setValue(Arrays.asList(mMockContact)); - ShadowViewModelProvider.add(FavoriteViewModel.class, mMockFavoriteViewModel); + ShadowAndroidViewModelFactory.add(FavoriteViewModel.class, mMockFavoriteViewModel); when(mMockFavoriteViewModel.getFavoriteContacts()).thenReturn(favoriteContacts); mFavoriteFragment = FavoriteFragment.newInstance(); |