119: Update AGP and Compose r=msfjarvis a=msfjarvis

bors r+
🤖

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
bors[bot] 2021-02-25 14:26:09 +00:00 committed by GitHub
commit b174c20faf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 28 additions and 143 deletions

View file

@ -5,11 +5,10 @@ on:
branches: branches:
- staging - staging
- trying - trying
- develop
jobs: jobs:
test-pr: test-pr:
runs-on: ubuntu-latest runs-on: macOS-latest
steps: steps:
- uses: actions/setup-java@d202f5dbf7256730fb690ec59f6381650114feb2 - uses: actions/setup-java@d202f5dbf7256730fb690ec59f6381650114feb2
with: with:
@ -22,16 +21,16 @@ jobs:
with: with:
arguments: test --stacktrace arguments: test --stacktrace
- name: Run instrumentation tests # - name: Run instrumentation tests
uses: reactivecircus/android-emulator-runner@08b092e904025fada32a01b711af1e7ff7b7a4a3 # uses: reactivecircus/android-emulator-runner@08b092e904025fada32a01b711af1e7ff7b7a4a3
with: # with:
api-level: 23 # api-level: 23
target: default # target: default
script: | # script: |
adb shell settings put global animator_duration_scale 0 # adb shell settings put global animator_duration_scale 0
adb shell settings put global transition_animation_scale 0 # adb shell settings put global transition_animation_scale 0
adb shell settings put global window_animation_scale 0 # adb shell settings put global window_animation_scale 0
./gradlew :app:connectedDebugAndroidTest # ./gradlew :app:connectedDebugAndroidTest
- name: (Fail-only) upload test report - name: (Fail-only) upload test report
if: failure() if: failure()

View file

@ -1,115 +0,0 @@
package dev.msfjarvis.lobsters
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.test.assertContentDescriptionEquals
import androidx.compose.ui.test.assertCountEquals
import androidx.compose.ui.test.assertHasClickAction
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertIsNotSelected
import androidx.compose.ui.test.assertIsSelected
import androidx.compose.ui.test.assertTextEquals
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onChildAt
import androidx.compose.ui.test.onChildren
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import dev.msfjarvis.lobsters.ui.main.LobstersBottomNav
import dev.msfjarvis.lobsters.ui.navigation.Destination
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
import org.junit.Before
import org.junit.Rule
import org.junit.Test
class BottomNavigationLayoutTest {
@get:Rule
val composeTestRule = createComposeRule()
@Before
fun setUp() {
composeTestRule.setContent {
LobstersTheme {
var mutableDestination by remember { mutableStateOf(Destination.startDestination) }
LobstersBottomNav(
currentDestination = mutableDestination,
navigateToDestination = { mutableDestination = it },
jumpToIndex = {}
)
}
}
}
@Test
fun bottomNavItemCountTest() {
// Test to make sure total items are equal to enum objects present in Destination
composeTestRule.onNodeWithTag("LobstersBottomNav")
.assertExists()
.assertIsDisplayed()
.onChildren()
.assertCountEquals(Destination.values().size)
}
@Test
fun bottomNavItemTest() {
// Check hottest BottomNavItem is rendered correctly
composeTestRule.onNodeWithTag("LobstersBottomNav")
.assertExists()
.assertIsDisplayed()
.onChildAt(0)
.assertTextEquals("Hottest")
.assertContentDescriptionEquals("Hottest")
.assertHasClickAction()
// Check saved BottomNavItem is rendered correctly
composeTestRule.onNodeWithTag("LobstersBottomNav")
.assertExists()
.assertIsDisplayed()
.onChildAt(1)
.assertTextEquals("Saved")
.assertContentDescriptionEquals("Saved")
.assertHasClickAction()
}
@Test
fun bottomNavItemSelectedTest() {
// Check hottest BottomNav item is selected
composeTestRule.onNodeWithTag("LobstersBottomNav")
.assertExists()
.assertIsDisplayed()
.onChildAt(0)
.assertIsSelected()
.assertTextEquals("Hottest")
// Check saved BottomNav item is not selected
composeTestRule.onNodeWithTag("LobstersBottomNav")
.assertExists()
.assertIsDisplayed()
.onChildAt(1)
.assertIsNotSelected()
// Select the saved BottomNav item
composeTestRule.onNodeWithTag("LobstersBottomNav")
.onChildAt(1)
.performClick()
// Check hottest BottomNav item is not selected
composeTestRule.onNodeWithTag("LobstersBottomNav")
.assertExists()
.assertIsDisplayed()
.onChildAt(0)
.assertIsNotSelected()
// Check saved BottomNav item is selected
composeTestRule.onNodeWithTag("LobstersBottomNav")
.assertExists()
.assertIsDisplayed()
.onChildAt(1)
.assertIsSelected()
.assertTextEquals("Saved")
}
}

View file

@ -49,7 +49,7 @@ fun LobstersApp() {
} }
val jumpToIndex: (Int) -> Unit = { val jumpToIndex: (Int) -> Unit = {
coroutineScope.launch { coroutineScope.launch {
hottestPostsListState.snapToItemIndex(it) hottestPostsListState.animateScrollToItem(it)
} }
} }
@ -100,7 +100,7 @@ fun LobstersBottomNav(
}, },
label = { Text(stringResource(id = screen.labelRes)) }, label = { Text(stringResource(id = screen.labelRes)) },
selected = currentDestination == screen, selected = currentDestination == screen,
alwaysShowLabels = false, alwaysShowLabel = false,
onClick = { onClick = {
if (screen != currentDestination) { if (screen != currentDestination) {
navigateToDestination(screen) navigateToDestination(screen)

View file

@ -3,7 +3,7 @@ package dev.msfjarvis.lobsters.ui.main
import android.os.Bundle import android.os.Bundle
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.Providers import androidx.compose.runtime.CompositionLocalProvider
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.msfjarvis.lobsters.ui.theme.LobstersTheme import dev.msfjarvis.lobsters.ui.theme.LobstersTheme
import dev.msfjarvis.lobsters.ui.urllauncher.LocalUrlLauncher import dev.msfjarvis.lobsters.ui.urllauncher.LocalUrlLauncher
@ -17,7 +17,7 @@ class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContent { setContent {
Providers(LocalUrlLauncher provides urlLauncher) { CompositionLocalProvider(LocalUrlLauncher provides urlLauncher) {
LobstersTheme { LobstersTheme {
LobstersApp() LobstersApp()
} }

View file

@ -8,7 +8,7 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.requiredWidth
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
@ -111,7 +111,7 @@ fun LobstersItem(
transformations(CircleCropTransformation()) transformations(CircleCropTransformation())
}, },
modifier = Modifier modifier = Modifier
.width(30.dp) .requiredWidth(30.dp)
.padding(4.dp) .padding(4.dp)
.constrainAs(avatar) { .constrainAs(avatar) {
top.linkTo(tags.bottom) top.linkTo(tags.bottom)

View file

@ -6,8 +6,8 @@
private const val DAGGER_HILT_VERSION = "2.32-alpha" private const val DAGGER_HILT_VERSION = "2.32-alpha"
object Plugins { object Plugins {
const val android = "com.android.tools.build:gradle:7.0.0-alpha07" const val android = "com.android.tools.build:gradle:7.0.0-alpha08"
const val lintModel = "com.android.tools.lint:lint-model:30.0.0-alpha07" const val lintModel = "com.android.tools.lint:lint-model:30.0.0-alpha08"
const val hilt = "com.google.dagger:hilt-android-gradle-plugin:${DAGGER_HILT_VERSION}" const val hilt = "com.google.dagger:hilt-android-gradle-plugin:${DAGGER_HILT_VERSION}"
const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30" const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"
const val jsemver = "com.github.zafarkhaja:java-semver:0.9.0" const val jsemver = "com.github.zafarkhaja:java-semver:0.9.0"
@ -15,7 +15,7 @@ object Plugins {
} }
object Dependencies { object Dependencies {
const val COMPOSE_VERSION = "1.0.0-alpha12" const val COMPOSE_VERSION = "1.0.0-beta01"
object Kotlin { object Kotlin {
@ -35,16 +35,16 @@ object Dependencies {
object Compose { object Compose {
const val activity = "androidx.activity:activity-compose:1.3.0-alpha02" const val activity = "androidx.activity:activity-compose:1.3.0-alpha03"
const val compiler = "androidx.compose.compiler:compiler:$COMPOSE_VERSION" const val compiler = "androidx.compose.compiler:compiler:$COMPOSE_VERSION"
const val constraintLayout = const val constraintLayout =
"androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha02" "androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha03"
const val foundation = "androidx.compose.foundation:foundation:$COMPOSE_VERSION" const val foundation = "androidx.compose.foundation:foundation:$COMPOSE_VERSION"
const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION" const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION"
const val lifecycleViewModel = "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01" const val lifecycleViewModel = "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02"
const val material = "androidx.compose.material:material:$COMPOSE_VERSION" const val material = "androidx.compose.material:material:$COMPOSE_VERSION"
const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha07" const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha08"
const val paging = "androidx.paging:paging-compose:1.0.0-alpha07" const val paging = "androidx.paging:paging-compose:1.0.0-alpha08"
const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION" const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION"
const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION" const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION"
const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION" const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION"
@ -66,7 +66,7 @@ object Dependencies {
object ThirdParty { object ThirdParty {
const val accompanist = "dev.chrisbanes.accompanist:accompanist-coil:0.5.1" const val accompanist = "dev.chrisbanes.accompanist:accompanist-coil:0.6.0"
object Moshi { object Moshi {

View file

@ -29,7 +29,8 @@ android.useAndroidX=true
android.nonTransitiveRClass=true android.nonTransitiveRClass=true
# Generate compile-time only R class for app modules. # Generate compile-time only R class for app modules.
android.enableAppCompileTimeRClass=true # Broke on AGP 7.0.0-alpha08
# android.enableAppCompileTimeRClass=true
# Experimental flags # Experimental flags
android.keepWorkerActionServicesBetweenBuilds=true android.keepWorkerActionServicesBetweenBuilds=true