Add per-app event logging overrides

This commit is contained in:
ajp_anton
2026-07-27 13:45:32 +00:00
parent 55057767c1
commit 1e4315d3dd
10 changed files with 229 additions and 24 deletions
@@ -4,14 +4,18 @@ import org.junit.Assert.assertEquals
import org.junit.Test
class AppListOrderingTest {
private fun app(label: String, seen: Boolean = false, selected: Boolean = false) = ListedApp(label, "pkg.$label", seen, selected)
private fun app(
label: String,
seen: Boolean = false,
selected: Boolean = false,
hasEventOverride: Boolean = false,
) = ListedApp(label, "pkg.$label", seen, selected, hasEventOverride)
@Test fun `seen apps are titled and repeated before the full list when requested`() {
val items = AppListOrdering.items(
listOf(app("Zulu"), app("Beta", seen = true), app("Alpha", seen = true)),
onlySeen = false,
seenAppsFirst = true,
mode = AppRuleMode.BLACKLIST,
)
assertEquals(listOf("[Seen apps]", "Alpha", "Beta", "|", "[All apps]", "Alpha", "Beta", "Zulu"), items.labels())
}
@@ -21,9 +25,8 @@ class AppListOrderingTest {
listOf(app("Seen", seen = true), app("Chosen", selected = true), app("Hidden")),
onlySeen = true,
seenAppsFirst = true,
mode = AppRuleMode.WHITELIST,
)
assertEquals(listOf("[Seen apps]", "Seen", "|", "[Whitelisted apps]", "Chosen"), items.labels())
assertEquals(listOf("[Seen apps]", "Seen", "|", "[Edited apps]", "Chosen"), items.labels())
}
@Test fun `only seen and checked without grouping is one alphabetical list`() {
@@ -31,17 +34,24 @@ class AppListOrderingTest {
listOf(app("Zulu", seen = true), app("Beta", selected = true), app("Hidden")),
onlySeen = true,
seenAppsFirst = false,
mode = AppRuleMode.BLACKLIST,
)
assertEquals(listOf("Beta", "Zulu"), items.labels())
}
@Test fun `unseen app with an event override is included as edited`() {
val items = AppListOrdering.items(
listOf(app("Seen", seen = true), app("Configured", hasEventOverride = true), app("Hidden")),
onlySeen = true,
seenAppsFirst = true,
)
assertEquals(listOf("[Seen apps]", "Seen", "|", "[Edited apps]", "Configured"), items.labels())
}
@Test fun `only seen apps omit section titles without unseen checked apps`() {
val items = AppListOrdering.items(
listOf(app("Zulu", seen = true), app("Alpha", seen = true), app("Hidden")),
onlySeen = true,
seenAppsFirst = true,
mode = AppRuleMode.BLACKLIST,
)
assertEquals(listOf("Alpha", "Zulu"), items.labels())
}
@@ -51,7 +61,6 @@ class AppListOrderingTest {
listOf(app("Zulu", seen = true), app("Alpha"), app("Beta", selected = true)),
onlySeen = false,
seenAppsFirst = false,
mode = AppRuleMode.BLACKLIST,
)
assertEquals(listOf("Alpha", "Beta", "Zulu"), items.labels())
}
@@ -12,4 +12,13 @@ class NotificationListenerPolicyTest {
@Test fun `listener stays off when every logging type is disabled`() {
assertFalse(NotificationListenerPolicy.shouldRun(LoggingType.entries.map { LoggingRule(enabled = false) }))
}
@Test fun `listener runs for an enabled per-app event override`() {
assertTrue(
NotificationListenerPolicy.shouldRun(
LoggingType.entries.map { LoggingRule(enabled = false) },
hasEnabledEventOverride = true,
),
)
}
}