Skip to content

Commit 4c8e560

Browse files
authored
[PM-21354] Migrate ColorExtensions and its tests to ui module (#5216)
1 parent 6e44ee2 commit 4c8e560

File tree

5 files changed

+42
-21
lines changed

5 files changed

+42
-21
lines changed

app/src/main/java/com/x8bit/bitwarden/ui/platform/components/account/BitwardenAccountActionItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ import androidx.compose.ui.text.font.FontFamily
1414
import androidx.compose.ui.text.font.FontWeight
1515
import androidx.compose.ui.tooling.preview.Preview
1616
import androidx.compose.ui.unit.dp
17+
import com.bitwarden.ui.platform.base.util.toSafeOverlayColor
1718
import com.bitwarden.ui.platform.base.util.toUnscaledTextUnit
1819
import com.bitwarden.ui.platform.theme.BitwardenTheme
1920
import com.x8bit.bitwarden.R
20-
import com.x8bit.bitwarden.ui.platform.base.util.toSafeOverlayColor
2121
import com.x8bit.bitwarden.ui.platform.components.button.color.bitwardenStandardIconButtonColors
2222
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
2323

app/src/main/java/com/x8bit/bitwarden/ui/platform/components/account/BitwardenAccountSwitcher.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ import androidx.compose.ui.tooling.preview.Preview
5151
import androidx.compose.ui.unit.dp
5252
import com.bitwarden.ui.platform.base.util.lowercaseWithCurrentLocal
5353
import com.bitwarden.ui.platform.base.util.scrolledContainerBackground
54+
import com.bitwarden.ui.platform.base.util.toSafeOverlayColor
5455
import com.bitwarden.ui.platform.base.util.toUnscaledTextUnit
5556
import com.bitwarden.ui.platform.theme.BitwardenTheme
5657
import com.x8bit.bitwarden.R
57-
import com.x8bit.bitwarden.ui.platform.base.util.toSafeOverlayColor
5858
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLogoutConfirmationDialog
5959
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenRemovalConfirmationDialog
6060
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenSelectionDialog

ui/build.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ android {
3030
sourceCompatibility(libs.versions.jvmTarget.get())
3131
targetCompatibility(libs.versions.jvmTarget.get())
3232
}
33+
testOptions {
34+
// Required for Robolectric
35+
unitTests.isIncludeAndroidResources = true
36+
unitTests.isReturnDefaultValues = true
37+
}
3338
kotlinOptions {
3439
jvmTarget = libs.versions.jvmTarget.get()
3540
}
@@ -57,11 +62,16 @@ dependencies {
5762
implementation(libs.kotlinx.serialization)
5863
implementation(libs.kotlinx.coroutines.core)
5964

65+
// For now we are restricted to running Compose tests for debug builds only
66+
debugImplementation(libs.androidx.compose.ui.test.manifest)
67+
debugImplementation(libs.androidx.compose.ui.tooling)
68+
6069
testImplementation(platform(libs.junit.bom))
6170
testImplementation(libs.junit.junit5)
6271
testRuntimeOnly(libs.junit.platform.launcher)
6372
testImplementation(libs.junit.vintage)
6473
testImplementation(libs.mockk.mockk)
74+
testImplementation(libs.robolectric.robolectric)
6575

6676
testFixturesImplementation(libs.androidx.activity.compose)
6777
testFixturesImplementation(libs.androidx.compose.ui.test)

app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/ColorExtensions.kt renamed to ui/src/main/java/com/bitwarden/ui/platform/base/util/ColorExtensions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.x8bit.bitwarden.ui.platform.base.util
1+
package com.bitwarden.ui.platform.base.util
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.Stable
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,73 @@
1-
package com.x8bit.bitwarden.data.platform.base.util
1+
package com.bitwarden.ui.platform.base.util
22

3+
import androidx.compose.runtime.Composable
34
import androidx.compose.ui.graphics.Color
5+
import com.bitwarden.ui.platform.base.BaseComposeTest
46
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
57
import com.bitwarden.ui.platform.theme.BitwardenTheme
6-
import com.x8bit.bitwarden.ui.platform.base.BitwardenComposeTest
7-
import com.x8bit.bitwarden.ui.platform.base.util.isLightOverlayRequired
8-
import com.x8bit.bitwarden.ui.platform.base.util.toSafeOverlayColor
9-
import org.junit.Assert.assertEquals
10-
import org.junit.Assert.assertFalse
11-
import org.junit.Assert.assertTrue
8+
import org.junit.Assert
129
import org.junit.Test
1310

14-
class ColorExtensionsTest : BitwardenComposeTest() {
11+
class ColorExtensionsTest : BaseComposeTest() {
12+
1513
@Suppress("MaxLineLength")
1614
@Test
1715
fun `isLightOverlayRequired for a color with luminance below the light threshold should return true`() {
18-
assertTrue(Color.Blue.isLightOverlayRequired)
16+
Assert.assertTrue(Color.Companion.Blue.isLightOverlayRequired)
1917
}
2018

2119
@Suppress("MaxLineLength")
2220
@Test
2321
fun `isLightOverlayRequired for a color with luminance above the light threshold should return false`() {
24-
assertFalse(Color.Yellow.isLightOverlayRequired)
22+
Assert.assertFalse(Color.Companion.Yellow.isLightOverlayRequired)
2523
}
2624

2725
@Test
2826
fun `toSafeOverlayColor for a dark color in light mode should use the surface color`() =
2927
setContent(theme = AppTheme.LIGHT) {
30-
assertEquals(
28+
Assert.assertEquals(
3129
BitwardenTheme.colorScheme.background.primary,
32-
Color.Blue.toSafeOverlayColor(),
30+
Color.Companion.Blue.toSafeOverlayColor(),
3331
)
3432
}
3533

3634
@Test
3735
fun `toSafeOverlayColor for a dark color in dark mode should use the onSurface color`() =
3836
setContent(theme = AppTheme.DARK) {
39-
assertEquals(
37+
Assert.assertEquals(
4038
BitwardenTheme.colorScheme.text.primary,
41-
Color.Blue.toSafeOverlayColor(),
39+
Color.Companion.Blue.toSafeOverlayColor(),
4240
)
4341
}
4442

4543
@Test
4644
fun `toSafeOverlayColor for a light color in light mode should use the onSurface color`() =
4745
setContent(theme = AppTheme.LIGHT) {
48-
assertEquals(
46+
Assert.assertEquals(
4947
BitwardenTheme.colorScheme.text.primary,
50-
Color.Yellow.toSafeOverlayColor(),
48+
Color.Companion.Yellow.toSafeOverlayColor(),
5149
)
5250
}
5351

5452
@Test
5553
fun `toSafeOverlayColor for a light color in dark mode should use the surface color`() =
5654
setContent(theme = AppTheme.DARK) {
57-
assertEquals(
55+
Assert.assertEquals(
5856
BitwardenTheme.colorScheme.background.primary,
59-
Color.Yellow.toSafeOverlayColor(),
57+
Color.Companion.Yellow.toSafeOverlayColor(),
6058
)
6159
}
60+
61+
@Suppress("LongParameterList")
62+
fun setContent(
63+
theme: AppTheme = AppTheme.DEFAULT,
64+
test: @Composable () -> Unit,
65+
) {
66+
setTestContent {
67+
BitwardenTheme(
68+
theme = theme,
69+
content = test,
70+
)
71+
}
72+
}
6273
}

0 commit comments

Comments
 (0)