diff --git a/app/src/test/kotlin/io/element/android/app/KonsistArchitectureTest.kt b/app/src/test/kotlin/io/element/android/app/KonsistArchitectureTest.kt new file mode 100644 index 0000000000..17e9710653 --- /dev/null +++ b/app/src/test/kotlin/io/element/android/app/KonsistArchitectureTest.kt @@ -0,0 +1,57 @@ +/* + * 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.app + +import com.lemonappdev.konsist.api.Konsist +import com.lemonappdev.konsist.api.ext.list.constructors +import com.lemonappdev.konsist.api.ext.list.modifierprovider.withSealedModifier +import com.lemonappdev.konsist.api.ext.list.parameters +import com.lemonappdev.konsist.api.ext.list.withNameEndingWith +import com.lemonappdev.konsist.api.ext.list.withoutName +import com.lemonappdev.konsist.api.verify.assertEmpty +import com.lemonappdev.konsist.api.verify.assertTrue +import org.junit.Test + +class KonsistArchitectureTest { + @Test + fun `Data class state MUST not have default value`() { + Konsist + .scopeFromProject() + .classes() + .withNameEndingWith("State") + .withoutName( + "CameraPositionState", + ) + .constructors + .parameters + .assertTrue { parameterDeclaration -> + parameterDeclaration.defaultValue == null && + // Using parameterDeclaration.defaultValue == null is not enough apparently, + // Also check that the text does not contain an equal sign + parameterDeclaration.text.contains("=").not() + } + } + + @Test + fun `Events MUST be sealed interface`() { + Konsist.scopeFromProject() + .classes() + .withSealedModifier() + .withNameEndingWith("Events") + .assertEmpty(additionalMessage = "Events class MUST be sealed interface") + } +} diff --git a/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt b/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt new file mode 100644 index 0000000000..d187816682 --- /dev/null +++ b/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt @@ -0,0 +1,63 @@ +/* + * 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.app + +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.verify.assertTrue +import io.element.android.libraries.architecture.Presenter +import org.junit.Test + +class KonsistClassNameTest { + @Test + fun `Classes extending 'Presenter' should have 'Presenter' suffix`() { + Konsist.scopeFromProject() + .classes() + .withAllParentsOf(Presenter::class) + .assertTrue { + it.name.endsWith("Presenter") + } + } + + @Test + fun `Classes extending 'Node' should have 'Node' suffix`() { + Konsist.scopeFromProject() + .classes() + .withAllParentsOf(Node::class) + .assertTrue { + it.name.endsWith("Node") + } + } + + @Test + fun `Classes extending 'PreviewParameterProvider' name MUST end with "Provider" and MUST contain provided class name`() { + Konsist.scopeFromProject() + .classes() + .withAllParentsOf(PreviewParameterProvider::class) + .assertTrue { + // Cannot find a better way to get the type of the generic + val providedType = it.text + .substringBefore(">") + .substringAfter("<") + .removeSuffix("?") + .replace(".", "") + it.name.endsWith("Provider") && it.name.contains(providedType) + } + } +} diff --git a/app/src/test/kotlin/io/element/android/app/KonsistComposableTest.kt b/app/src/test/kotlin/io/element/android/app/KonsistComposableTest.kt new file mode 100644 index 0000000000..c09f3c07a8 --- /dev/null +++ b/app/src/test/kotlin/io/element/android/app/KonsistComposableTest.kt @@ -0,0 +1,62 @@ +/* + * 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.app + +import androidx.compose.runtime.Composable +import com.lemonappdev.konsist.api.KoModifier +import com.lemonappdev.konsist.api.Konsist +import com.lemonappdev.konsist.api.ext.list.modifierprovider.withoutModifier +import com.lemonappdev.konsist.api.ext.list.withAllAnnotationsOf +import com.lemonappdev.konsist.api.ext.list.withTopLevel +import com.lemonappdev.konsist.api.ext.list.withoutName +import com.lemonappdev.konsist.api.ext.list.withoutNameEndingWith +import com.lemonappdev.konsist.api.verify.assertTrue +import org.junit.Test + +class KonsistComposableTest { + @Test + fun `Top level function with '@Composable' annotation starting with a upper case should be placed in a file with the same name`() { + Konsist + .scopeFromProject() + .functions() + .withTopLevel() + .withoutModifier(KoModifier.PRIVATE) + .withoutNameEndingWith("Preview") + .withAllAnnotationsOf(Composable::class) + .withoutName( + // Add some exceptions... + "OutlinedButton", + "TextButton", + "SimpleAlertDialogContent", + ) + .assertTrue( + additionalMessage = + """ + Please check the filename. It should match the top level Composable function. If the filename is correct: + - consider making the Composable private or moving it to its own file + - at last resort, you can add an exception in the Konsist test + """.trimIndent() + ) { + if (it.name.first().isLowerCase()) { + true + } else { + val fileName = it.containingFile.name.removeSuffix(".kt") + fileName == it.name + } + } + } +} diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/PairCombinedProvider.kt b/app/src/test/kotlin/io/element/android/app/KonsistFieldTest.kt similarity index 51% rename from libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/PairCombinedProvider.kt rename to app/src/test/kotlin/io/element/android/app/KonsistFieldTest.kt index 0f53d44e44..13d5c9949b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/PairCombinedProvider.kt +++ b/app/src/test/kotlin/io/element/android/app/KonsistFieldTest.kt @@ -14,17 +14,23 @@ * limitations under the License. */ -package io.element.android.libraries.designsystem.utils +package io.element.android.app -import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import com.lemonappdev.konsist.api.Konsist +import com.lemonappdev.konsist.api.ext.list.properties +import com.lemonappdev.konsist.api.verify.assertFalse +import org.junit.Test -open class PairCombinedProvider( - private val provider: Pair, PreviewParameterProvider> -) : PreviewParameterProvider> { - override val values: Sequence> - get() = provider.first.values.flatMap { first -> - provider.second.values.map { second -> - first to second +class KonsistFieldTest { + @Test + fun `no field should have 'm' prefix`() { + Konsist + .scopeFromProject() + .classes() + .properties() + .assertFalse { + val secondCharacterIsUppercase = it.name.getOrNull(1)?.isUpperCase() ?: false + it.name.startsWith('m') && secondCharacterIsUppercase } - } + } } diff --git a/app/src/test/kotlin/io/element/android/app/KonsistPreviewTest.kt b/app/src/test/kotlin/io/element/android/app/KonsistPreviewTest.kt new file mode 100644 index 0000000000..f9bcf620d0 --- /dev/null +++ b/app/src/test/kotlin/io/element/android/app/KonsistPreviewTest.kt @@ -0,0 +1,38 @@ +/* + * 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.app + +import com.lemonappdev.konsist.api.Konsist +import com.lemonappdev.konsist.api.ext.list.withAllAnnotationsOf +import com.lemonappdev.konsist.api.verify.assertTrue +import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import org.junit.Test + +class KonsistPreviewTest { + @Test + fun `Functions with '@PreviewsDayNight' annotation should have 'Preview' suffix`() { + Konsist + .scopeFromProject() + .functions() + .withAllAnnotationsOf(PreviewsDayNight::class) + .assertTrue { + it.hasNameEndingWith("Preview") && + it.hasNameEndingWith("LightPreview").not() && + it.hasNameEndingWith("DarkPreview").not() + } + } +} diff --git a/app/src/test/kotlin/io/element/android/app/KonsistTest.kt b/app/src/test/kotlin/io/element/android/app/KonsistTest.kt deleted file mode 100644 index 25367e8c5a..0000000000 --- a/app/src/test/kotlin/io/element/android/app/KonsistTest.kt +++ /dev/null @@ -1,139 +0,0 @@ -/* - * 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.app - -import androidx.compose.runtime.Composable -import com.lemonappdev.konsist.api.KoModifier -import com.lemonappdev.konsist.api.Konsist -import com.lemonappdev.konsist.api.ext.list.constructors -import com.lemonappdev.konsist.api.ext.list.modifierprovider.withoutModifier -import com.lemonappdev.konsist.api.ext.list.modifierprovider.withoutOverrideModifier -import com.lemonappdev.konsist.api.ext.list.parameters -import com.lemonappdev.konsist.api.ext.list.properties -import com.lemonappdev.konsist.api.ext.list.withAllAnnotationsOf -import com.lemonappdev.konsist.api.ext.list.withAllParentsOf -import com.lemonappdev.konsist.api.ext.list.withNameEndingWith -import com.lemonappdev.konsist.api.ext.list.withReturnType -import com.lemonappdev.konsist.api.ext.list.withTopLevel -import com.lemonappdev.konsist.api.ext.list.withoutName -import com.lemonappdev.konsist.api.ext.list.withoutNameEndingWith -import com.lemonappdev.konsist.api.verify.assertFalse -import com.lemonappdev.konsist.api.verify.assertTrue -import io.element.android.libraries.architecture.Presenter -import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import org.junit.Test - -class KonsistTest { - - @Test - fun `Classes extending 'Presenter' should have 'Presenter' suffix`() { - Konsist.scopeFromProject() - .classes() - .withAllParentsOf(Presenter::class) - .assertTrue { - it.name.endsWith("Presenter") - } - } - - @Test - fun `Functions with '@PreviewsDayNight' annotation should have 'Preview' suffix`() { - Konsist - .scopeFromProject() - .functions() - .withAllAnnotationsOf(PreviewsDayNight::class) - .assertTrue { - it.hasNameEndingWith("Preview") && - it.hasNameEndingWith("LightPreview").not() && - it.hasNameEndingWith("DarkPreview").not() - } - } - - @Test - fun `Top level function with '@Composable' annotation starting with a upper case should be placed in a file with the same name`() { - Konsist - .scopeFromProject() - .functions() - .withTopLevel() - .withoutModifier(KoModifier.PRIVATE) - .withoutNameEndingWith("Preview") - .withAllAnnotationsOf(Composable::class) - .withoutName( - // Add some exceptions... - "OutlinedButton", - "TextButton", - "SimpleAlertDialogContent", - ) - .assertTrue( - additionalMessage = - """ - Please check the filename. It should match the top level Composable function. If the filename is correct: - - consider making the Composable private or moving it to its own file - - at last resort, you can add an exception in the Konsist test - """.trimIndent() - ) { - if (it.name.first().isLowerCase()) { - true - } else { - val fileName = it.containingFile.name.removeSuffix(".kt") - fileName == it.name - } - } - } - - @Test - fun `Data class state MUST not have default value`() { - Konsist - .scopeFromProject() - .classes() - .withNameEndingWith("State") - .withoutName( - "CameraPositionState", - ) - .constructors - .parameters - .assertTrue { parameterDeclaration -> - parameterDeclaration.defaultValue == null && - // Using parameterDeclaration.defaultValue == null is not enough apparently, - // Also check that the text does not contain an equal sign - parameterDeclaration.text.contains("=").not() - } - } - - @Test - fun `Function which creates Presenter in test MUST be named 'createPresenterName'`() { - Konsist - .scopeFromTest() - .functions() - .withReturnType { it.name.endsWith("Presenter") } - .withoutOverrideModifier() - .assertTrue { functionDeclaration -> - functionDeclaration.name == "create${functionDeclaration.returnType?.name}" - } - } - - @Test - fun `no field should have 'm' prefix`() { - Konsist - .scopeFromProject() - .classes() - .properties() - .assertFalse { - val secondCharacterIsUppercase = it.name.getOrNull(1)?.isUpperCase() ?: false - it.name.startsWith('m') && secondCharacterIsUppercase - } - } -} diff --git a/app/src/test/kotlin/io/element/android/app/KonsistTestTest.kt b/app/src/test/kotlin/io/element/android/app/KonsistTestTest.kt new file mode 100644 index 0000000000..3ed6bd2026 --- /dev/null +++ b/app/src/test/kotlin/io/element/android/app/KonsistTestTest.kt @@ -0,0 +1,47 @@ +/* + * 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.app + +import com.lemonappdev.konsist.api.Konsist +import com.lemonappdev.konsist.api.ext.list.modifierprovider.withoutOverrideModifier +import com.lemonappdev.konsist.api.ext.list.withFunction +import com.lemonappdev.konsist.api.ext.list.withReturnType +import com.lemonappdev.konsist.api.verify.assertTrue +import org.junit.Test + +class KonsistTestTest { + @Test + fun `Classes name containing @Test must end with 'Test''`() { + Konsist + .scopeFromTest() + .classes() + .withFunction { it.hasAnnotationOf(Test::class) } + .assertTrue { it.name.endsWith("Test") } + } + + @Test + fun `Function which creates Presenter in test MUST be named 'createPresenterName'`() { + Konsist + .scopeFromTest() + .functions() + .withReturnType { it.name.endsWith("Presenter") } + .withoutOverrideModifier() + .assertTrue { functionDeclaration -> + functionDeclaration.name == "create${functionDeclaration.returnType?.name}" + } + } +} diff --git a/features/call/src/test/kotlin/io/element/android/features/call/CallIntentDataParserTests.kt b/features/call/src/test/kotlin/io/element/android/features/call/CallIntentDataParserTest.kt similarity index 99% rename from features/call/src/test/kotlin/io/element/android/features/call/CallIntentDataParserTests.kt rename to features/call/src/test/kotlin/io/element/android/features/call/CallIntentDataParserTest.kt index f23a5fb43c..ae82767f45 100644 --- a/features/call/src/test/kotlin/io/element/android/features/call/CallIntentDataParserTests.kt +++ b/features/call/src/test/kotlin/io/element/android/features/call/CallIntentDataParserTest.kt @@ -23,7 +23,7 @@ import org.robolectric.RobolectricTestRunner import java.net.URLEncoder @RunWith(RobolectricTestRunner::class) -class CallIntentDataParserTests { +class CallIntentDataParserTest { private val callIntentDataParser = CallIntentDataParser() diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt index 2a2a3995fb..f13349f0d8 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt @@ -30,15 +30,15 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import io.element.android.features.location.api.R -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text +import io.element.android.libraries.designsystem.utils.BooleanProvider import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -81,7 +81,7 @@ internal fun StaticMapPlaceholder( @PreviewsDayNight @Composable internal fun StaticMapPlaceholderPreview( - @PreviewParameter(BooleanParameterProvider::class) values: Boolean + @PreviewParameter(BooleanProvider::class) values: Boolean ) = ElementPreview { StaticMapPlaceholder( showProgress = values, @@ -91,8 +91,3 @@ internal fun StaticMapPlaceholderPreview( onLoadMapClick = {}, ) } - -internal class BooleanParameterProvider : PreviewParameterProvider { - override val values: Sequence - get() = sequenceOf(true, false) -} diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTests.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTest.kt similarity index 98% rename from features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTests.kt rename to features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTest.kt index c1d7e5bb6c..17c6ce3e4a 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTests.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/error/ErrorFormatterTest.kt @@ -22,7 +22,7 @@ import io.element.android.libraries.matrix.api.auth.AuthenticationException import io.element.android.libraries.ui.strings.CommonStrings import org.junit.Test -class ErrorFormatterTests { +class ErrorFormatterTest { // region loginError @Test diff --git a/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTests.kt b/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt similarity index 99% rename from libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTests.kt rename to libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt index de5703b090..7f83c9de8f 100644 --- a/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTests.kt +++ b/libraries/core/src/test/kotlin/io/element/android/libraries/core/extensions/ResultTest.kt @@ -19,7 +19,7 @@ package io.element.android.libraries.core.extensions import com.google.common.truth.Truth.assertThat import org.junit.Test -class ResultTests { +class ResultTest { @Test fun testFlatMap() { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt index ff8d4221f6..c44a1140f0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt @@ -537,7 +537,7 @@ internal fun BloomPreview() { } } -class InitialsColorStateProvider : PreviewParameterProvider { +class InitialsColorIntProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf(0, 1, 2, 3, 4, 5, 6, 7) } @@ -545,7 +545,7 @@ class InitialsColorStateProvider : PreviewParameterProvider { @PreviewsDayNight @Composable @ShowkaseComposable(group = PreviewGroup.Bloom) -internal fun BloomInitialsPreview(@PreviewParameter(InitialsColorStateProvider::class) color: Int) { +internal fun BloomInitialsPreview(@PreviewParameter(InitialsColorIntProvider::class) color: Int) { ElementPreview { val avatarColors = AvatarColorsProvider.provide("$color", ElementTheme.isLightTheme) val bitmap = initialsBitmap(text = "F", backgroundColor = avatarColors.background, textColor = avatarColors.foreground) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/BooleanProvider.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/BooleanProvider.kt index 43d0f9e797..1bc35aed89 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/BooleanProvider.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/BooleanProvider.kt @@ -20,5 +20,5 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider open class BooleanProvider : PreviewParameterProvider { override val values: Sequence - get() = sequenceOf(false, true) + get() = sequenceOf(true, false) } diff --git a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTests.kt b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt similarity index 99% rename from libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTests.kt rename to libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt index c906952bbb..4c26fcb3c7 100644 --- a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTests.kt +++ b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt @@ -61,7 +61,7 @@ import org.robolectric.annotation.Config @Suppress("LargeClass") @RunWith(RobolectricTestRunner::class) -class DefaultRoomLastMessageFormatterTests { +class DefaultRoomLastMessageFormatterTest { private lateinit var context: Context private lateinit var fakeMatrixClient: FakeMatrixClient diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTests.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTest.kt similarity index 98% rename from libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTests.kt rename to libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTest.kt index b3ccf5264d..5f987ad725 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTests.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/AuthErrorCodeTest.kt @@ -19,7 +19,7 @@ package io.element.android.libraries.matrix.api.auth import com.google.common.truth.Truth.assertThat import org.junit.Test -class AuthErrorCodeTests { +class AuthErrorCodeTest { @Test fun `errorCode finds UNKNOWN code`() { diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTests.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTest.kt similarity index 98% rename from libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTests.kt rename to libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTest.kt index ef0a586fba..d3d928c189 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTests.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/MatrixToConverterTest.kt @@ -23,7 +23,7 @@ import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) -class MatrixToConverterTests { +class MatrixToConverterTest { @Test fun `converting a matrix-to url does nothing`() { diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTests.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTest.kt similarity index 99% rename from libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTests.kt rename to libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTest.kt index 0a9a03cabb..282f58ab21 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTests.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkBuilderTest.kt @@ -23,7 +23,7 @@ import io.element.android.tests.testutils.assertThrowsInDebug import io.element.android.tests.testutils.isInDebug import org.junit.Test -class PermalinkBuilderTests { +class PermalinkBuilderTest { fun `building a permalink for an invalid user id throws when verifying the id`() { assertThrowsInDebug { diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTests.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTest.kt similarity index 99% rename from libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTests.kt rename to libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTest.kt index 74797083c4..d55b6aebbe 100644 --- a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTests.kt +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkParserTest.kt @@ -22,7 +22,7 @@ import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) -class PermalinkParserTests { +class PermalinkParserTest { @Test fun `parsing an invalid url returns a fallback link`() { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTests.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt similarity index 99% rename from libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTests.kt rename to libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt index 2a8dd5c122..b0c02c9dcd 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTests.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt @@ -22,7 +22,7 @@ import io.element.android.libraries.matrix.api.auth.AuthenticationException import org.junit.Test import org.matrix.rustcomponents.sdk.AuthenticationException as RustAuthenticationException -class AuthenticationExceptionMappingTests { +class AuthenticationExceptionMappingTest { @Test fun `mapping an exception with no message returns 'Unknown error' message`() { diff --git a/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTests.kt b/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTest.kt similarity index 99% rename from libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTests.kt rename to libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTest.kt index 4f17081f8b..d759dc3020 100644 --- a/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTests.kt +++ b/libraries/mediapickers/api/src/test/kotlin/io/element/android/libraries/mediapickers/PickerTypeTest.kt @@ -26,7 +26,7 @@ import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) -class PickerTypeTests { +class PickerTypeTest { @Test fun `ImageAndVideo - assert types`() { diff --git a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsViewStateProvider.kt b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsStateProvider.kt similarity index 94% rename from libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsViewStateProvider.kt rename to libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsStateProvider.kt index 2009ad0e85..cc59d96b44 100644 --- a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsViewStateProvider.kt +++ b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsStateProvider.kt @@ -19,7 +19,7 @@ package io.element.android.libraries.permissions.api import android.Manifest import androidx.compose.ui.tooling.preview.PreviewParameterProvider -open class PermissionsViewStateProvider : PreviewParameterProvider { +open class PermissionsStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aPermissionsState(showDialog = true, permission = Manifest.permission.POST_NOTIFICATIONS), diff --git a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt index ef15ab561d..9e2413fff9 100644 --- a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt +++ b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt @@ -57,7 +57,7 @@ private fun String.toDialogContent(): String { @PreviewsDayNight @Composable -internal fun PermissionsViewPreview(@PreviewParameter(PermissionsViewStateProvider::class) state: PermissionsState) = ElementPreview { +internal fun PermissionsViewPreview(@PreviewParameter(PermissionsStateProvider::class) state: PermissionsState) = ElementPreview { PermissionsView( state = state, )