Follow config overlay's order of aspect ratio options
Fix flaky UserAspectRatioAppsPageProviderTest by using advanceUntilIdle to make sure all coroutines are finished before asserting. Bug: 325911424 Test: atest UserAspectRatioDetailsTest (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:32815ad699448c5c5b1f38df6d2d2a881d4251c1) Merged-In: I83e9a7f31536c1a006789722b0310f3364d14337 Change-Id: I83e9a7f31536c1a006789722b0310f3364d14337
This commit is contained in:
committed by
Cherrypicker Worker
parent
a6f283382a
commit
a0f573a35e
@@ -16,16 +16,19 @@
|
||||
|
||||
package com.android.settings.applications.appcompat;
|
||||
|
||||
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_3_2;
|
||||
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_APP_DEFAULT;
|
||||
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN;
|
||||
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET;
|
||||
|
||||
import static com.android.settings.applications.AppInfoBase.ARG_PACKAGE_NAME;
|
||||
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_HEADER_BUTTONS;
|
||||
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_PREF_3_2;
|
||||
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_PREF_DEFAULT;
|
||||
import static com.android.settings.applications.appcompat.UserAspectRatioDetails.KEY_PREF_FULLSCREEN;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
@@ -98,6 +101,31 @@ public class UserAspectRatioDetailsTest {
|
||||
mMetricsFeatureProvider = featureFactory.metricsFeatureProvider;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOrderOfOptionsFollowsConfig() {
|
||||
doReturn(true).when(mUserAspectRatioManager)
|
||||
.hasAspectRatioOption(anyInt(), anyString());
|
||||
doReturn(0).when(mUserAspectRatioManager)
|
||||
.getUserMinAspectRatioOrder(USER_MIN_ASPECT_RATIO_3_2);
|
||||
doReturn(1).when(mUserAspectRatioManager)
|
||||
.getUserMinAspectRatioOrder(USER_MIN_ASPECT_RATIO_FULLSCREEN);
|
||||
doReturn(2).when(mUserAspectRatioManager)
|
||||
.getUserMinAspectRatioOrder(USER_MIN_ASPECT_RATIO_UNSET);
|
||||
rule.getScenario().onActivity(a -> doReturn(a).when(mFragment).getActivity());
|
||||
final Bundle args = new Bundle();
|
||||
args.putString(ARG_PACKAGE_NAME, anyString());
|
||||
mFragment.setArguments(args);
|
||||
mFragment.onCreate(Bundle.EMPTY);
|
||||
|
||||
final int topOfList = mFragment.findPreference(KEY_HEADER_BUTTONS).getOrder();
|
||||
|
||||
assertTrue(topOfList < mFragment.findPreference(KEY_PREF_3_2).getOrder());
|
||||
assertTrue(mFragment.findPreference(KEY_PREF_3_2).getOrder()
|
||||
< mFragment.findPreference(KEY_PREF_FULLSCREEN).getOrder());
|
||||
assertTrue(mFragment.findPreference(KEY_PREF_FULLSCREEN).getOrder()
|
||||
< mFragment.findPreference(KEY_PREF_DEFAULT).getOrder());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRadioButtonClicked_prefChange_shouldStopActivity() throws RemoteException {
|
||||
doReturn(USER_MIN_ASPECT_RATIO_UNSET).when(mFragment)
|
||||
|
||||
@@ -32,7 +32,11 @@ import com.android.settingslib.spa.testutils.FakeNavControllerWrapper
|
||||
import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
|
||||
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.test.StandardTestDispatcher
|
||||
import kotlinx.coroutines.test.TestScope
|
||||
import kotlinx.coroutines.test.advanceUntilIdle
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
@@ -45,6 +49,8 @@ import org.junit.runner.RunWith
|
||||
class UserAspectRatioAppsPageProviderTest {
|
||||
@get:Rule
|
||||
val composeTestRule = createComposeRule()
|
||||
private val testDispatcher = StandardTestDispatcher()
|
||||
private val testScope = TestScope(testDispatcher)
|
||||
|
||||
private val context: Context = ApplicationProvider.getApplicationContext()
|
||||
private val fakeNavControllerWrapper = FakeNavControllerWrapper()
|
||||
@@ -137,33 +143,37 @@ class UserAspectRatioAppsPageProviderTest {
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
@Test
|
||||
fun aspectRatioAppListModel_getSummaryDefault() {
|
||||
val summary = getSummary(USER_MIN_ASPECT_RATIO_UNSET)
|
||||
fun aspectRatioAppListModel_getSummaryDefault() = testScope.runTest {
|
||||
val summary = setSummary(USER_MIN_ASPECT_RATIO_UNSET)
|
||||
advanceUntilIdle()
|
||||
|
||||
assertThat(summary).isEqualTo(context.getString(R.string.user_aspect_ratio_app_default))
|
||||
assertThat(summary()).isEqualTo(context.getString(R.string.user_aspect_ratio_app_default))
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
@Test
|
||||
fun aspectRatioAppListModel_getSummaryWhenSplitScreen() {
|
||||
val summary = getSummary(USER_MIN_ASPECT_RATIO_SPLIT_SCREEN)
|
||||
fun aspectRatioAppListModel_getSummaryWhenSplitScreen() = testScope.runTest {
|
||||
val summary = setSummary(USER_MIN_ASPECT_RATIO_SPLIT_SCREEN)
|
||||
advanceUntilIdle()
|
||||
|
||||
assertThat(summary).isEqualTo(context.getString(R.string.user_aspect_ratio_half_screen))
|
||||
assertThat(summary()).isEqualTo(context.getString(R.string.user_aspect_ratio_half_screen))
|
||||
}
|
||||
|
||||
private fun getSummary(userOverride: Int): String {
|
||||
val listModel = UserAspectRatioAppListModel(context)
|
||||
private fun setSummary(userOverride: Int): () -> String {
|
||||
val listModel = UserAspectRatioAppListModel(context, testDispatcher)
|
||||
val record = UserAspectRatioAppListItemModel(
|
||||
app = APP,
|
||||
userOverride = userOverride,
|
||||
suggested = false,
|
||||
canDisplay = true,
|
||||
)
|
||||
lateinit var summary: () -> String
|
||||
composeTestRule.setContent {
|
||||
summary = listModel.getSummary(option = 0,
|
||||
record = UserAspectRatioAppListItemModel(
|
||||
app = APP,
|
||||
userOverride = userOverride,
|
||||
suggested = false,
|
||||
canDisplay = true,
|
||||
))
|
||||
summary = listModel.getSummary(option = 0, record = record)
|
||||
}
|
||||
return summary()
|
||||
return summary
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user