Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 721ad2ed authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

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
parent 5ef61d2f
Loading
Loading
Loading
Loading
+12 −14
Original line number Original line Diff line number Diff line
@@ -23,10 +23,10 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.times;
@@ -41,6 +41,7 @@ import android.content.pm.ServiceInfo;
import android.provider.Settings;
import android.provider.Settings;
import android.service.quicksettings.Tile;
import android.service.quicksettings.Tile;
import android.testing.AndroidTestingRunner;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.ArraySet;


@@ -50,10 +51,6 @@ import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.QSTileHost;
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.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.util.time.FakeSystemClock;


@@ -63,6 +60,7 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Captor;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoAnnotations;


@@ -73,6 +71,7 @@ import java.util.Set;


@SmallTest
@SmallTest
@RunWith(AndroidTestingRunner.class)
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class TileQueryHelperTest extends SysuiTestCase {
public class TileQueryHelperTest extends SysuiTestCase {
    private static final String CURRENT_TILES = "wifi,dnd,nfc";
    private static final String CURRENT_TILES = "wifi,dnd,nfc";
    private static final String ONLY_STOCK_TILES = "wifi,dnd";
    private static final String ONLY_STOCK_TILES = "wifi,dnd";
@@ -99,8 +98,6 @@ public class TileQueryHelperTest extends SysuiTestCase {
    private QSTileHost mQSTileHost;
    private QSTileHost mQSTileHost;
    @Mock
    @Mock
    private PackageManager mPackageManager;
    private PackageManager mPackageManager;
    @Mock
    private QSLogger mQSLogger;
    @Captor
    @Captor
    private ArgumentCaptor<List<TileQueryHelper.TileInfo>> mCaptor;
    private ArgumentCaptor<List<TileQueryHelper.TileInfo>> mCaptor;


@@ -112,8 +109,8 @@ public class TileQueryHelperTest extends SysuiTestCase {
    @Before
    @Before
    public void setup() {
    public void setup() {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);

        mContext.setMockPackageManager(mPackageManager);
        mContext.setMockPackageManager(mPackageManager);
        when(mQSTileHost.getQSLogger()).thenReturn(mQSLogger);


        mState = new QSTile.State();
        mState = new QSTile.State();
        doAnswer(invocation -> {
        doAnswer(invocation -> {
@@ -279,11 +276,10 @@ public class TileQueryHelperTest extends SysuiTestCase {
    }
    }


    @Test
    @Test
    public void testQueryTiles_notAvailableDestroyed_isNotNullSpec() {
    public void testQueryTiles_notAvailableDestroyed_tileSpecIsSet() {
        HotspotController mockHC = mock(HotspotController.class);
        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.QS_TILES, null);
        DataSaverController mockDSC = mock(DataSaverController.class);

        when(mockHC.isHotspotSupported()).thenReturn(false);
        QSTile t = mock(QSTile.class);
        HotspotTile t = new HotspotTile(mQSTileHost, mockHC, mockDSC);
        when(mQSTileHost.createTile("hotspot")).thenReturn(t);
        when(mQSTileHost.createTile("hotspot")).thenReturn(t);


        mContext.getOrCreateTestableResources().addOverride(R.string.quick_settings_tiles_stock,
        mContext.getOrCreateTestableResources().addOverride(R.string.quick_settings_tiles_stock,
@@ -292,6 +288,8 @@ public class TileQueryHelperTest extends SysuiTestCase {
        mTileQueryHelper.queryTiles(mQSTileHost);
        mTileQueryHelper.queryTiles(mQSTileHost);


        FakeExecutor.exhaustExecutors(mMainExecutor, mBgExecutor);
        FakeExecutor.exhaustExecutors(mMainExecutor, mBgExecutor);
        verify(mQSLogger).logTileDestroyed(eq("hotspot"), anyString());
        InOrder verifier = inOrder(t);
        verifier.verify(t).setTileSpec("hotspot");
        verifier.verify(t).destroy();
    }
    }
}
}