Files
lawnchair/tests/multivalentTests/src/com/android/launcher3/AppWidgetsRestoredReceiverTest.kt
Uwais Ashraf 7a0150d02e Use script to auto-enable all tests that are currently working
Fix: 325088906
Test: presubmits passing, gradle robo run passing locally
Flag: NA
Change-Id: I481bfe9caeb8cc18b3e01ec8b7a58fb0eb36fdaa
2024-04-08 20:59:23 +00:00

172 lines
6.0 KiB
Kotlin

package com.android.launcher3
import android.appwidget.AppWidgetManager.ACTION_APPWIDGET_DELETED
import android.appwidget.AppWidgetManager.ACTION_APPWIDGET_HOST_RESTORED
import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_IDS
import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_OLD_IDS
import android.appwidget.AppWidgetManager.EXTRA_HOST_ID
import android.content.Intent
import android.platform.uiautomator_helpers.DeviceHelpers
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.launcher3.LauncherPrefs.Companion.APP_WIDGET_IDS
import com.android.launcher3.LauncherPrefs.Companion.OLD_APP_WIDGET_IDS
import com.android.launcher3.util.IntArray
import com.android.launcher3.util.LauncherModelHelper.TEST_PACKAGE
import com.android.launcher3.widget.LauncherWidgetHolder.APPWIDGET_HOST_ID
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
/** Tests for [AppWidgetsRestoredReceiver] */
@SmallTest
@RunWith(AndroidJUnit4::class)
class AppWidgetsRestoredReceiverTest {
private lateinit var launcherPrefs: LauncherPrefs
private lateinit var receiverUnderTest: AppWidgetsRestoredReceiver
@Before
fun setup() {
launcherPrefs = LauncherPrefs(DeviceHelpers.context)
receiverUnderTest = AppWidgetsRestoredReceiver()
}
@After
fun tearDown() {
launcherPrefs.remove(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)
}
@Test
fun `When AppWidgetsRestoredReceiver gets valid broadcast it sets old and new app widget ids`() {
// Given
val oldIds = intArrayOf(1, 2, 10)
val newIds = intArrayOf(10, 11, 12)
val expectedOldIds = IntArray.wrap(*oldIds).toConcatString()
val expectedNewIds = IntArray.wrap(*newIds).toConcatString()
val intent =
Intent().apply {
component = null
`package` = TEST_PACKAGE
action = ACTION_APPWIDGET_HOST_RESTORED
putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
putExtra(EXTRA_APPWIDGET_IDS, newIds)
putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
}
// When
receiverUnderTest.onReceive(DeviceHelpers.context, intent)
// Then
assertThat(launcherPrefs.get(OLD_APP_WIDGET_IDS)).isEqualTo(expectedOldIds)
assertThat(launcherPrefs.get(APP_WIDGET_IDS)).isEqualTo(expectedNewIds)
}
@Test
fun `AppWidgetsRestoredReceiver does not set widget ids when Intent action is invalid`() {
// Given
val oldIds = intArrayOf(1, 2, 10)
val newIds = intArrayOf(10, 11, 12)
val intent =
Intent().apply {
component = null
`package` = TEST_PACKAGE
action = ACTION_APPWIDGET_DELETED
putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
putExtra(EXTRA_APPWIDGET_IDS, newIds)
putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
}
// When
receiverUnderTest.onReceive(DeviceHelpers.context, intent)
// Then
assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
}
@Test
fun `AppWidgetsRestoredReceiver does not set widget ids when Intent host id is not Launcher`() {
// Given
val oldIds = intArrayOf(1, 2, 10)
val newIds = intArrayOf(10, 11, 12)
val intent =
Intent().apply {
component = null
`package` = TEST_PACKAGE
action = ACTION_APPWIDGET_HOST_RESTORED
putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
putExtra(EXTRA_APPWIDGET_IDS, newIds)
putExtra(EXTRA_HOST_ID, 999999999)
}
// When
receiverUnderTest.onReceive(DeviceHelpers.context, intent)
// Then
assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
}
@Test
fun `AppWidgetsRestoredReceiver does not set ids when new and old ids differ in length`() {
// Given
val oldIds = intArrayOf(10)
val newIds = intArrayOf(10, 11, 12)
val intent =
Intent().apply {
component = null
`package` = TEST_PACKAGE
action = ACTION_APPWIDGET_HOST_RESTORED
putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
putExtra(EXTRA_APPWIDGET_IDS, newIds)
putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
}
// When
receiverUnderTest.onReceive(DeviceHelpers.context, intent)
// Then
assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
}
@Test
fun `AppWidgetsRestoredReceiver does not set widget ids when old ids not set`() {
// Given
val newIds = intArrayOf(10, 11, 12)
val intent =
Intent().apply {
component = null
`package` = TEST_PACKAGE
action = ACTION_APPWIDGET_HOST_RESTORED
putExtra(EXTRA_APPWIDGET_IDS, newIds)
putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
}
// When
receiverUnderTest.onReceive(DeviceHelpers.context, intent)
// Then
assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
}
@Test
fun `AppWidgetsRestoredReceiver does not set widget ids when new ids not set`() {
// Given
val oldIds = intArrayOf(10, 11, 12)
val intent =
Intent().apply {
component = null
`package` = TEST_PACKAGE
action = ACTION_APPWIDGET_HOST_RESTORED
putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
}
// When
receiverUnderTest.onReceive(DeviceHelpers.context, intent)
// Then
assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
}
}