Add settings copy unit coverage
This commit is contained in:
@@ -27,7 +27,7 @@ class LoggingRuleStore(context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun copy(from: LoggingType, targets: Set<LoggingType>) {
|
fun copy(from: LoggingType, targets: Set<LoggingType>) {
|
||||||
val source = ruleFor(from)
|
val source = ruleFor(from).copyForTarget()
|
||||||
preferences.edit {
|
preferences.edit {
|
||||||
targets.filterNot { it == from }.forEach { target ->
|
targets.filterNot { it == from }.forEach { target ->
|
||||||
write(target, source.copy(selectedPackages = source.selectedPackages.toSet()))
|
write(target, source.copy(selectedPackages = source.selectedPackages.toSet()))
|
||||||
@@ -50,3 +50,5 @@ class LoggingRuleStore(context: Context) {
|
|||||||
const val FILE_NAME = "logging-rules"
|
const val FILE_NAME = "logging-rules"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun LoggingRule.copyForTarget(): LoggingRule = copy(selectedPackages = selectedPackages.toSet())
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package se.ajpanton.notificationlog.settings
|
||||||
|
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Assert.assertNotSame
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
class LoggingRuleCopyTest {
|
||||||
|
@Test fun `copy retains every rule field and owns its selected-package set`() {
|
||||||
|
val source = LoggingRule(false, AppRuleMode.WHITELIST, setOf("example.app"), true, false, false)
|
||||||
|
val target = source.copyForTarget()
|
||||||
|
|
||||||
|
assertEquals(source, target)
|
||||||
|
assertNotSame(source.selectedPackages, target.selectedPackages)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user