From 576658988f296adc8a1baeebefa66e1b9f16b57a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 14 Oct 2024 16:39:32 +0200 Subject: [PATCH] Improve test `Classes extending 'PreviewParameterProvider' name MUST end with 'Provider' and MUST contain provided class name` --- .../tests/konsist/KonsistClassNameTest.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) 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 4257599019..8f7d446d67 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 @@ -9,6 +9,7 @@ package io.element.android.tests.konsist import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.bumble.appyx.core.node.Node +import com.google.common.truth.Truth.assertThat import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.withAllParentsOf import com.lemonappdev.konsist.api.ext.list.withAnnotationNamed @@ -44,19 +45,26 @@ class KonsistClassNameTest { @Test fun `Classes extending 'PreviewParameterProvider' name MUST end with 'Provider' and MUST contain provided class name`() { - Konsist.scopeFromProject() + Konsist.scopeFromProduction() .classes() .withAllParentsOf(PreviewParameterProvider::class) - .assertTrue { + .also { + // Check that classes are actually found + assertThat(it.size).isGreaterThan(100) + } + .assertTrue { klass -> // Cannot find a better way to get the type of the generic - val providedType = it.text + val providedType = klass.text + .substringAfter("PreviewParameterProvider<") .substringBefore(">") - .substringAfter("<") // Get the substring before the first '<' to remove the generic type .substringBefore("<") .removeSuffix("?") .replace(".", "") - it.name.endsWith("Provider") && (it.name.contains("IconList") || it.name.contains(providedType)) + val name = klass.name + name.endsWith("Provider") && + name.endsWith("PreviewProvider").not() && + name.contains(providedType) } }