Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ jobs:
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4.1.7
uses: actions/checkout@v6
- name: Set up JDK
uses: actions/setup-java@v4.3.0
uses: actions/setup-java@v5.0.0
with:
distribution: 'corretto'
java-version: 17
distribution: 'zulu'
java-version: 21
- name: spotless
run: ./gradlew spotlessCheck

Expand All @@ -46,7 +46,7 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v4.1.7
uses: actions/checkout@v6

- name: Java and Gradle set up
if: matrix.platform != 'ios'
Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/setup/java-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ runs:
using: "composite"
steps:
# Setup java
- name: Setup JDK 17
- name: Setup JDK 21
id: setup_jdk
uses: actions/setup-java@v4.3.0
uses: actions/setup-java@v5.0.0
with:
distribution: "corretto"
java-version: 17
distribution: 'zulu'
java-version: 21

# Grant execute permission for gradlew
- name: Grant execute permission for gradlew
Expand All @@ -18,14 +18,18 @@ runs:
run: chmod +x gradlew

# Caching gradle packages
- uses: actions/cache@v3
# TODO: remove temporary workaround after fixed
# temporarily work around https://github.com/actions/runner-images/issues/13341
# by disabling caching for macOS
- if: ${{ runner.os != 'macOS' }}
uses: actions/cache@v4
name: Cache Gradle for quicker builds
id: caching_gradle
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/buildSrc/**/*.kt') }}
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,13 @@ import android.annotation.SuppressLint
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.ExperimentalComposeApi
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertPositionInRootIsEqualTo
Expand All @@ -41,6 +44,7 @@ import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performScrollToNode
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
Expand Down Expand Up @@ -244,4 +248,54 @@ class JetLimeColumnTest {
items.add("Another Item")
composeTestRule.onNodeWithText("Another Item").assertIsDisplayed()
}

@Test
fun jetLimeColumn_ltr_contentIsVisible() {
val itemsList = ItemsList(persistentListOf("Item 1", "Item 2", "Item 3"))

composeTestRule.setContent {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) {
JetLimeColumn(
itemsList = itemsList,
itemContent = { _, item, pos ->
JetLimeEvent(
style = JetLimeEventDefaults.eventStyle(position = pos),
) {
Text(text = item, modifier = Modifier.testTag("ColumnItem_$item"))
}
},
)
}
}

composeTestRule.onNodeWithTag("ColumnItem_Item 1").assertIsDisplayed()
composeTestRule.onNodeWithTag("ColumnItem_Item 3").assertIsDisplayed()
}

@OptIn(ExperimentalComposeApi::class)
@Test
fun jetLimeColumn_extendedEvent_rtl_contentsAreVisible() {
val itemsList = ItemsList(persistentListOf("Item 1"))

composeTestRule.setContent {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
JetLimeColumn(
itemsList = itemsList,
itemContent = { _, item, pos ->
JetLimeExtendedEvent(
style = JetLimeEventDefaults.eventStyle(position = pos),
additionalContent = {
Text(text = "Additional", modifier = Modifier.testTag("ExtendedAdditional"))
},
) {
Text(text = item, modifier = Modifier.testTag("ExtendedMain"))
}
},
)
}
}

composeTestRule.onNodeWithTag("ExtendedAdditional").assertIsDisplayed()
composeTestRule.onNodeWithTag("ExtendedMain").assertIsDisplayed()
}
}
110 changes: 110 additions & 0 deletions jetlime/src/androidTest/java/com/pushpal/jetlime/JetLimeRowTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,13 @@ import android.annotation.SuppressLint
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.ExperimentalComposeApi
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertPositionInRootIsEqualTo
Expand All @@ -41,6 +44,7 @@ import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performScrollToNode
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
Expand Down Expand Up @@ -244,4 +248,110 @@ class JetLimeRowTest {
items.add("Another Item")
composeTestRule.onNodeWithText("Another Item").assertIsDisplayed()
}

@Test
fun jetLimeRow_horizontalEvent_ltr_contentIsVisible() {
val itemsList = ItemsList(persistentListOf("Item 1", "Item 2", "Item 3"))

composeTestRule.setContent {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) {
JetLimeRow(
itemsList = itemsList,
itemContent = { _, item, pos ->
JetLimeEvent(
style = JetLimeEventDefaults.eventStyle(
position = pos,
pointPlacement = PointPlacement.CENTER,
),
) {
Text(text = item, modifier = Modifier.testTag("RowItem_$item"))
}
},
)
}
}

composeTestRule.onNodeWithTag("RowItem_Item 1").assertIsDisplayed()
composeTestRule.onNodeWithTag("RowItem_Item 3").assertIsDisplayed()
}

@Test
fun jetLimeRow_horizontalEvent_rtl_contentIsVisible() {
val itemsList = ItemsList(persistentListOf("Item 1", "Item 2", "Item 3"))

composeTestRule.setContent {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
JetLimeRow(
itemsList = itemsList,
itemContent = { _, item, pos ->
JetLimeEvent(
style = JetLimeEventDefaults.eventStyle(
position = pos,
pointPlacement = PointPlacement.CENTER,
),
) {
Text(text = item, modifier = Modifier.testTag("RowItem_$item"))
}
},
)
}
}

composeTestRule.onNodeWithTag("RowItem_Item 1").assertIsDisplayed()
composeTestRule.onNodeWithTag("RowItem_Item 3").assertIsDisplayed()
}

@OptIn(ExperimentalComposeApi::class)
@Test
fun jetLimeExtendedEvent_ltr_contentsAreVisible() {
val itemsList = ItemsList(persistentListOf("Item 1"))

composeTestRule.setContent {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) {
JetLimeColumn(
itemsList = itemsList,
itemContent = { _, item, pos ->
JetLimeExtendedEvent(
style = JetLimeEventDefaults.eventStyle(position = pos),
additionalContent = {
Text(text = "Additional", modifier = Modifier.testTag("ExtendedAdditional_LTR"))
},
) {
Text(text = item, modifier = Modifier.testTag("ExtendedMain_LTR"))
}
},
)
}
}

composeTestRule.onNodeWithTag("ExtendedAdditional_LTR").assertIsDisplayed()
composeTestRule.onNodeWithTag("ExtendedMain_LTR").assertIsDisplayed()
}

@OptIn(ExperimentalComposeApi::class)
@Test
fun jetLimeExtendedEvent_rtl_contentsAreVisible() {
val itemsList = ItemsList(persistentListOf("Item 1"))

composeTestRule.setContent {
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
JetLimeColumn(
itemsList = itemsList,
itemContent = { _, item, pos ->
JetLimeExtendedEvent(
style = JetLimeEventDefaults.eventStyle(position = pos),
additionalContent = {
Text(text = "Additional", modifier = Modifier.testTag("ExtendedAdditional_RTL"))
},
) {
Text(text = item, modifier = Modifier.testTag("ExtendedMain_RTL"))
}
},
)
}
}

composeTestRule.onNodeWithTag("ExtendedAdditional_RTL").assertIsDisplayed()
composeTestRule.onNodeWithTag("ExtendedMain_RTL").assertIsDisplayed()
}
}
Loading