From 721ad2edfb54849e62d77ac1b90fdd62bf37bb24 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 5 May 2020 11:12:29 -0400 Subject: [PATCH] Make TileQueryHelperTest less flaky Remove creation of a real HotspotTile and instead use a mock and verify things in order. This fixed test shows that a not available tile has its spec set before it's destroyed. Fixes: 155744376 Test: atest TileQueryHelperTest Change-Id: Icdc98e2e4550427815900ac6fee12c7a15bd5dc7 --- .../qs/customize/TileQueryHelperTest.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java index 72a65034922c1..53ef866608673 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java @@ -23,10 +23,10 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -41,6 +41,7 @@ import android.content.pm.ServiceInfo; import android.provider.Settings; import android.service.quicksettings.Tile; import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; import android.text.TextUtils; import android.util.ArraySet; @@ -50,10 +51,6 @@ import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSTileHost; -import com.android.systemui.qs.logging.QSLogger; -import com.android.systemui.qs.tiles.HotspotTile; -import com.android.systemui.statusbar.policy.DataSaverController; -import com.android.systemui.statusbar.policy.HotspotController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -63,6 +60,7 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.ArgumentCaptor; import org.mockito.Captor; +import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -73,6 +71,7 @@ import java.util.Set; @SmallTest @RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper public class TileQueryHelperTest extends SysuiTestCase { private static final String CURRENT_TILES = "wifi,dnd,nfc"; private static final String ONLY_STOCK_TILES = "wifi,dnd"; @@ -99,8 +98,6 @@ public class TileQueryHelperTest extends SysuiTestCase { private QSTileHost mQSTileHost; @Mock private PackageManager mPackageManager; - @Mock - private QSLogger mQSLogger; @Captor private ArgumentCaptor> mCaptor; @@ -112,8 +109,8 @@ public class TileQueryHelperTest extends SysuiTestCase { @Before public void setup() { MockitoAnnotations.initMocks(this); + mContext.setMockPackageManager(mPackageManager); - when(mQSTileHost.getQSLogger()).thenReturn(mQSLogger); mState = new QSTile.State(); doAnswer(invocation -> { @@ -279,11 +276,10 @@ public class TileQueryHelperTest extends SysuiTestCase { } @Test - public void testQueryTiles_notAvailableDestroyed_isNotNullSpec() { - HotspotController mockHC = mock(HotspotController.class); - DataSaverController mockDSC = mock(DataSaverController.class); - when(mockHC.isHotspotSupported()).thenReturn(false); - HotspotTile t = new HotspotTile(mQSTileHost, mockHC, mockDSC); + public void testQueryTiles_notAvailableDestroyed_tileSpecIsSet() { + Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.QS_TILES, null); + + QSTile t = mock(QSTile.class); when(mQSTileHost.createTile("hotspot")).thenReturn(t); mContext.getOrCreateTestableResources().addOverride(R.string.quick_settings_tiles_stock, @@ -292,6 +288,8 @@ public class TileQueryHelperTest extends SysuiTestCase { mTileQueryHelper.queryTiles(mQSTileHost); FakeExecutor.exhaustExecutors(mMainExecutor, mBgExecutor); - verify(mQSLogger).logTileDestroyed(eq("hotspot"), anyString()); + InOrder verifier = inOrder(t); + verifier.verify(t).setTileSpec("hotspot"); + verifier.verify(t).destroy(); } }