Reduce flaky of AppNotificationPreferenceTest

Bug: 355413226
Flag: EXEMPT test only
Test: atest AppNotificationPreferenceTest
Change-Id: I1dfe4c5ae764941acb78e8fad52518963d1dad74
This commit is contained in:
Chaohui Wang
2024-08-09 05:32:39 +00:00
parent eb79f88253
commit 7380359520

View File

@@ -20,8 +20,8 @@ import android.content.Context
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertIsNotEnabled import androidx.compose.ui.test.assertIsNotEnabled
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.onRoot import androidx.compose.ui.test.onRoot
@@ -34,36 +34,35 @@ import com.android.settings.applications.appinfo.AppInfoDashboardFragment
import com.android.settings.notification.app.AppNotificationSettings import com.android.settings.notification.app.AppNotificationSettings
import com.android.settings.spa.notification.IAppNotificationRepository import com.android.settings.spa.notification.IAppNotificationRepository
import com.android.settingslib.spa.testutils.delay import com.android.settingslib.spa.testutils.delay
import com.android.settingslib.spa.testutils.waitUntilExists
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.MockitoSession import org.mockito.MockitoSession
import org.mockito.Spy
import org.mockito.quality.Strictness import org.mockito.quality.Strictness
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class AppNotificationPreferenceTest { class AppNotificationPreferenceTest {
@get:Rule @get:Rule val composeTestRule = createComposeRule()
val composeTestRule = createComposeRule()
private lateinit var mockSession: MockitoSession private lateinit var mockSession: MockitoSession
@Spy
private val context: Context = ApplicationProvider.getApplicationContext() private val context: Context = ApplicationProvider.getApplicationContext()
private val repository = object : IAppNotificationRepository { private val repository =
override fun getNotificationSummary(app: ApplicationInfo) = SUMMARY object : IAppNotificationRepository {
} override fun getNotificationSummary(app: ApplicationInfo) = SUMMARY
}
@Before @Before
fun setUp() { fun setUp() {
mockSession = ExtendedMockito.mockitoSession() mockSession =
.initMocks(this) ExtendedMockito.mockitoSession()
.mockStatic(AppInfoDashboardFragment::class.java) .mockStatic(AppInfoDashboardFragment::class.java)
.strictness(Strictness.LENIENT) .strictness(Strictness.LENIENT)
.startMocking() .startMocking()
} }
@After @After
@@ -75,25 +74,26 @@ class AppNotificationPreferenceTest {
fun title_displayed() { fun title_displayed() {
setContent(APP) setContent(APP)
composeTestRule.onNodeWithText(context.getString(R.string.notifications_label)) composeTestRule.waitUntilExists(hasText(context.getString(R.string.notifications_label)))
.assertIsDisplayed()
} }
@Test @Test
fun summary_displayed() { fun summary_displayed() {
setContent(APP) setContent(APP)
composeTestRule.onNodeWithText(SUMMARY).assertIsDisplayed() composeTestRule.waitUntilExists(hasText(SUMMARY))
} }
@Test @Test
fun whenNotInstalled_disable() { fun whenNotInstalled_disable() {
setContent(ApplicationInfo().apply { setContent(
packageName = PACKAGE_NAME ApplicationInfo().apply {
uid = UID packageName = PACKAGE_NAME
}) uid = UID
})
composeTestRule.onNodeWithText(context.getString(R.string.notifications_label)) composeTestRule
.onNodeWithText(context.getString(R.string.notifications_label))
.assertIsNotEnabled() .assertIsNotEnabled()
} }
@@ -125,11 +125,12 @@ class AppNotificationPreferenceTest {
private companion object { private companion object {
const val PACKAGE_NAME = "package.name" const val PACKAGE_NAME = "package.name"
const val UID = 123 const val UID = 123
val APP = ApplicationInfo().apply { val APP =
packageName = PACKAGE_NAME ApplicationInfo().apply {
uid = UID packageName = PACKAGE_NAME
flags = ApplicationInfo.FLAG_INSTALLED uid = UID
} flags = ApplicationInfo.FLAG_INSTALLED
}
const val SUMMARY = "Summary" const val SUMMARY = "Summary"
} }
} }