Browse Source

Improve test `Classes extending 'PreviewParameterProvider' name MUST end with 'Provider' and MUST contain provided class name`

pull/3673/head
Benoit Marty 4 days ago committed by Benoit Marty
parent
commit
576658988f
  1. 18
      tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt

18
tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt

@ -9,6 +9,7 @@ package io.element.android.tests.konsist @@ -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 { @@ -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)
}
}

Loading…
Cancel
Save