add settings homescreen tests

This commit is contained in:
Ida Delphine
2026-07-02 10:49:25 +01:00
parent 0892909b0c
commit b6e0145719
3 changed files with 119 additions and 0 deletions
@@ -1,3 +1,8 @@
/*
* SPDX-FileCopyrightText: 2026 NewPipe e.V. <https://newpipe-ev.de>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package net.newpipe.app.screen.settings.model
import org.jetbrains.compose.resources.DrawableResource
@@ -0,0 +1,48 @@
/*
* SPDX-FileCopyrightText: 2026 NewPipe e.V. <https://newpipe-ev.de>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package net.newpipe.app.composable
import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.v2.runComposeUiTest
import kotlin.test.Test
import kotlin.test.assertTrue
@OptIn(ExperimentalTestApi::class)
class PreferenceRowTest {
@Test
fun testPreferenceRowTitleAndClick() = runComposeUiTest {
val title = "Test title"
var clicked = false
setContent {
PreferenceRow(
title = title,
onClick = { clicked = true }
)
}
onNodeWithText(title).apply {
assertIsDisplayed()
performClick()
}
assertTrue(clicked)
}
@Test
fun testPreferenceRowShowsSummary() = runComposeUiTest {
val title = "Test title"
val summary = "Test summary"
setContent {
PreferenceRow(title = title, summary = summary)
}
onNodeWithText(title).assertIsDisplayed()
onNodeWithText(summary).assertIsDisplayed()
}
}
@@ -0,0 +1,66 @@
/*
* SPDX-FileCopyrightText: 2026 NewPipe e.V. <https://newpipe-ev.de>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package net.newpipe.app.screen.settings
import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.v2.runComposeUiTest
import com.russhwolf.settings.MapSettings
import com.russhwolf.settings.Settings
import net.newpipe.app.extensions.withKoin
import net.newpipe.app.screen.settings.model.SettingsCategory
import kotlin.test.Test
import kotlin.test.assertTrue
import newpipe.shared.generated.resources.Res
import newpipe.shared.generated.resources.ic_headset
import newpipe.shared.generated.resources.settings
import newpipe.shared.generated.resources.settings_category_video_audio_title
import org.jetbrains.compose.resources.getString
import org.koin.dsl.module
@OptIn(ExperimentalTestApi::class)
class SettingsHomeScreenTest {
private val emptySettings = module {
single<Settings> { MapSettings() }
}
@Test
fun testTitleAndCategoriesRender() = runComposeUiTest {
withKoin(
modules = listOf(emptySettings),
content = { SettingsHomeScreenContent() },
onContent = {
onNodeWithText(getString(Res.string.settings)).assertIsDisplayed()
onNodeWithText(getString(Res.string.settings_category_video_audio_title))
.assertIsDisplayed()
}
)
}
@Test
fun testCategoryClickFires() = runComposeUiTest {
var clicked = false
val categories = listOf(
SettingsCategory(
title = Res.string.settings_category_video_audio_title,
icon = Res.drawable.ic_headset,
onClick = { clicked = true }
)
)
withKoin(
modules = listOf(emptySettings),
content = { SettingsHomeScreenContent(categories = categories) },
onContent = {
onNodeWithText(getString(Res.string.settings_category_video_audio_title))
.performClick()
assertTrue(clicked)
}
)
}
}