From 4113bae938408701b0873b1a07da03d77f53b40b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 May 2024 10:47:31 +0200 Subject: [PATCH] Add Konsist test `Fake classes must be named using Fake and the interface it fakes` --- .../android/tests/konsist/KonsistClassNameTest.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt index 9ecf90ebe6..092901e1e3 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.bumble.appyx.core.node.Node import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.withAllParentsOf +import com.lemonappdev.konsist.api.ext.list.withNameContaining import com.lemonappdev.konsist.api.verify.assertTrue import io.element.android.libraries.architecture.Presenter import org.junit.Test @@ -62,4 +63,16 @@ class KonsistClassNameTest { it.name.endsWith("Provider") && (it.name.contains("IconList") || it.name.contains(providedType)) } } + + @Test + fun `Fake classes must be named using Fake and the interface it fakes`() { + Konsist.scopeFromProject() + .classes() + .withNameContaining("Fake") + .assertTrue { + val interfaceName = it.name.replace("Fake", "") + it.name.startsWith("Fake") && + it.parents.any { parent -> parent.name.replace(".", "") == interfaceName } + } + } }