From 30c890c4579b6b6476a923707819b84f2ff541ed Mon Sep 17 00:00:00 2001 From: Christian Sadilek Date: Wed, 28 Jul 2021 20:42:41 -0400 Subject: [PATCH] Issue #20531: Fix intermittent test failures in DefaultQuickSettingsControllerTest --- .../DefaultQuickSettingsControllerTest.kt | 77 ++++++++++--------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/app/src/test/java/org/mozilla/fenix/settings/quicksettings/DefaultQuickSettingsControllerTest.kt b/app/src/test/java/org/mozilla/fenix/settings/quicksettings/DefaultQuickSettingsControllerTest.kt index b777c6001..296ef71cf 100644 --- a/app/src/test/java/org/mozilla/fenix/settings/quicksettings/DefaultQuickSettingsControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/settings/quicksettings/DefaultQuickSettingsControllerTest.kt @@ -29,8 +29,10 @@ import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.support.test.mock import mozilla.components.support.test.robolectric.testContext import org.junit.After +import org.junit.Assert.assertArrayEquals import org.junit.Assert.assertEquals import org.junit.Assert.assertSame +import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -72,15 +74,6 @@ class DefaultQuickSettingsControllerTest { @MockK(relaxed = true) private lateinit var addNewTab: TabsUseCases.AddNewTabUseCase - @MockK(relaxed = true) - private lateinit var requestPermissions: (Array) -> Unit - - @MockK(relaxed = true) - private lateinit var displayPermissions: () -> Unit - - @MockK(relaxed = true) - private lateinit var dismiss: () -> Unit - private lateinit var controller: DefaultQuickSettingsController @Before @@ -90,25 +83,7 @@ class DefaultQuickSettingsControllerTest { tab = createTab("https://mozilla.org") browserStore = BrowserStore(BrowserState(tabs = listOf(tab))) sitePermissions = SitePermissions(origin = "", savedAt = 123) - - controller = spyk( - DefaultQuickSettingsController( - context = context, - quickSettingsStore = store, - browserStore = browserStore, - sessionId = tab.id, - ioScope = coroutinesScope, - navController = navController, - sitePermissions = sitePermissions, - settings = appSettings, - permissionStorage = permissionStorage, - reload = reload, - addNewTab = addNewTab, - requestRuntimePermissions = requestPermissions, - displayPermissions = displayPermissions, - dismiss = dismiss - ) - ) + controller = spyk(createController()) } @After @@ -118,11 +93,12 @@ class DefaultQuickSettingsControllerTest { @Test fun `handlePermissionsShown should delegate to an injected parameter`() { - controller.handlePermissionsShown() + var displayPermissionsInvoked = false + createController(displayPermissions = { + displayPermissionsInvoked = true + }).handlePermissionsShown() - verify { - displayPermissions() - } + assertTrue(displayPermissionsInvoked) } @Test @@ -176,9 +152,8 @@ class DefaultQuickSettingsControllerTest { permissionStorage = permissionStorage, reload = reload, addNewTab = addNewTab, - requestRuntimePermissions = requestPermissions, - displayPermissions = displayPermissions, - dismiss = dismiss + displayPermissions = {}, + dismiss = {} ) every { websitePermission.phoneFeature } returns PhoneFeature.CAMERA @@ -250,9 +225,14 @@ class DefaultQuickSettingsControllerTest { fun `handleAndroidPermissionRequest should request from the injected callback`() { val testPermissions = arrayOf("TestPermission") - controller.handleAndroidPermissionRequest(testPermissions) + var requestRuntimePermissionsInvoked = false + createController(requestPermissions = { + assertArrayEquals(testPermissions, it) + requestRuntimePermissionsInvoked = true + } + ).handleAndroidPermissionRequest(testPermissions) - verify { requestPermissions(testPermissions) } + assertTrue(requestRuntimePermissionsInvoked) } @Test @@ -280,4 +260,27 @@ class DefaultQuickSettingsControllerTest { reload(tab.id) } } + + private fun createController( + requestPermissions: (Array) -> Unit = { _ -> }, + displayPermissions: () -> Unit = { }, + dismiss: () -> Unit = { } + ): DefaultQuickSettingsController { + return DefaultQuickSettingsController( + context = context, + quickSettingsStore = store, + browserStore = browserStore, + sessionId = tab.id, + ioScope = coroutinesScope, + navController = navController, + sitePermissions = sitePermissions, + settings = appSettings, + permissionStorage = permissionStorage, + reload = reload, + addNewTab = addNewTab, + requestRuntimePermissions = requestPermissions, + displayPermissions = displayPermissions, + dismiss = dismiss + ) + } }