diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5286bde045..839a5095dd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -230,7 +230,6 @@ dependencies { testImplementation(libs.test.truth) testImplementation(libs.test.turbine) testImplementation(projects.libraries.matrix.test) - testImplementation(libs.test.konsist) ksp(libs.showkase.processor) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageComposerEvents.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageComposerEvents.kt index 72ec5ec635..7d6803fc41 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageComposerEvents.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/VoiceMessageComposerEvents.kt @@ -18,8 +18,8 @@ package io.element.android.features.messages.impl.voicemessages import io.element.android.libraries.textcomposer.model.PressEvent -sealed class VoiceMessageComposerEvents { +sealed interface VoiceMessageComposerEvents { data class RecordButtonEvent( val pressEvent: PressEvent - ): VoiceMessageComposerEvents() + ): VoiceMessageComposerEvents } diff --git a/settings.gradle.kts b/settings.gradle.kts index e1894c16d7..105befcd04 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -52,6 +52,7 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") rootProject.name = "ElementX" include(":app") include(":appnav") +include(":tests:konsist") include(":tests:uitests") include(":tests:testutils") include(":anvilannotations") diff --git a/tests/konsist/build.gradle.kts b/tests/konsist/build.gradle.kts new file mode 100644 index 0000000000..ca009bd89f --- /dev/null +++ b/tests/konsist/build.gradle.kts @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +plugins { + id("io.element.android-compose-library") +} + +android { + namespace = "io.element.android.tests.konsist" +} + +dependencies { + val composeBom = platform(libs.androidx.compose.bom) + testImplementation(composeBom) + testImplementation("androidx.compose.ui:ui-tooling-preview") + testImplementation(libs.test.junit) + testImplementation(libs.test.konsist) + testImplementation(libs.test.truth) + testImplementation(projects.libraries.architecture) + testImplementation(projects.libraries.designsystem) +} diff --git a/app/src/test/kotlin/io/element/android/app/KonsistArchitectureTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistArchitectureTest.kt similarity index 98% rename from app/src/test/kotlin/io/element/android/app/KonsistArchitectureTest.kt rename to tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistArchitectureTest.kt index 17e9710653..f4bd7175fd 100644 --- a/app/src/test/kotlin/io/element/android/app/KonsistArchitectureTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistArchitectureTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.app +package io.element.android.tests.konsist import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.constructors diff --git a/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt similarity index 95% rename from app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt rename to tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt index d187816682..64ca2e899b 100644 --- a/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistClassNameTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.app +package io.element.android.tests.konsist import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.bumble.appyx.core.node.Node @@ -46,7 +46,7 @@ class KonsistClassNameTest { } @Test - fun `Classes extending 'PreviewParameterProvider' name MUST end with "Provider" and MUST contain provided class name`() { + fun `Classes extending 'PreviewParameterProvider' name MUST end with 'Provider' and MUST contain provided class name`() { Konsist.scopeFromProject() .classes() .withAllParentsOf(PreviewParameterProvider::class) diff --git a/app/src/test/kotlin/io/element/android/app/KonsistComposableTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistComposableTest.kt similarity index 98% rename from app/src/test/kotlin/io/element/android/app/KonsistComposableTest.kt rename to tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistComposableTest.kt index c09f3c07a8..9eb23cfc61 100644 --- a/app/src/test/kotlin/io/element/android/app/KonsistComposableTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistComposableTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.app +package io.element.android.tests.konsist import androidx.compose.runtime.Composable import com.lemonappdev.konsist.api.KoModifier diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistConfigTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistConfigTest.kt new file mode 100644 index 0000000000..45247adc60 --- /dev/null +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistConfigTest.kt @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.element.android.tests.konsist + +import com.google.common.truth.Truth.assertThat +import com.lemonappdev.konsist.api.Konsist +import org.junit.Test + +class KonsistConfigTest { + @Test + fun `assert that Konsist detect all the project classes`() { + assertThat( + Konsist + .scopeFromProject() + .classes() + .size + ) + .isGreaterThan(1_000) + } + + @Test + fun `assert that Konsist detect all the test classes`() { + assertThat( + Konsist + .scopeFromTest() + .classes() + .size + ) + .isGreaterThan(100) + } +} diff --git a/app/src/test/kotlin/io/element/android/app/KonsistFieldTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistFieldTest.kt similarity index 96% rename from app/src/test/kotlin/io/element/android/app/KonsistFieldTest.kt rename to tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistFieldTest.kt index 13d5c9949b..867c1ad141 100644 --- a/app/src/test/kotlin/io/element/android/app/KonsistFieldTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistFieldTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.app +package io.element.android.tests.konsist import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.properties diff --git a/app/src/test/kotlin/io/element/android/app/KonsistPreviewTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt similarity index 97% rename from app/src/test/kotlin/io/element/android/app/KonsistPreviewTest.kt rename to tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt index f9bcf620d0..40c73c8eaa 100644 --- a/app/src/test/kotlin/io/element/android/app/KonsistPreviewTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.app +package io.element.android.tests.konsist import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.withAllAnnotationsOf diff --git a/app/src/test/kotlin/io/element/android/app/KonsistTestTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistTestTest.kt similarity index 97% rename from app/src/test/kotlin/io/element/android/app/KonsistTestTest.kt rename to tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistTestTest.kt index 3ed6bd2026..32fd6dd624 100644 --- a/app/src/test/kotlin/io/element/android/app/KonsistTestTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistTestTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.element.android.app +package io.element.android.tests.konsist import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.modifierprovider.withoutOverrideModifier