Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unify test class suffix #5803

Merged
merged 3 commits into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.lemonappdev.konsist.api.architecture.KoArchitectureCreator.assertArch
import com.lemonappdev.konsist.api.architecture.Layer
import org.junit.jupiter.api.Test

class ArchitectureTests {
class ArchitectureTest {

@Test
fun `ensure model layer depends on nothing`() =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ package net.mullvad.mullvadvpn.test.arch

import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.ext.list.properties
import com.lemonappdev.konsist.api.verify.assert
import com.lemonappdev.konsist.api.verify.assertFalse
import com.lemonappdev.konsist.api.verify.assertNot
import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.jupiter.api.Test

class GeneralTests {
class GeneralTest {
@Test
fun `ensure package name must match file path`() =
Konsist.scopeFromProject().packages.assert { it.hasMatchingPath }
Konsist.scopeFromProject().packages.assertTrue { it.hasMatchingPath }

@Test
fun `ensure no field should have 'm' prefix`() =
Expand All @@ -20,5 +21,5 @@ class GeneralTests {

@Test
fun `ensure no empty files allowed`() =
Konsist.scopeFromProject().files.assertNot { it.text.isEmpty() }
Konsist.scopeFromProject().files.assertFalse { it.text.isEmpty() }
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.verify.assertEmpty
import org.junit.jupiter.api.Test

class JUnitTests {
class JUnitTest {

@Test
fun `ensure only junit5 annotations are used for functions`() =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ package net.mullvad.mullvadvpn.test.arch

import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.ext.list.withAnnotationOf
import com.lemonappdev.konsist.api.verify.assert
import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.jupiter.api.Test

class KonsistTests {
class KonsistTest {
@Test
fun `ensure konsist tests have 'ensure ' prefix`() =
Konsist.scopeFromModule("test/arch").functions().withAnnotationOf(Test::class).assert {
Konsist.scopeFromModule("test/arch").functions().withAnnotationOf(Test::class).assertTrue {
it.hasNameStartingWith("ensure ")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,29 @@ import com.lemonappdev.konsist.api.ext.list.functions
import com.lemonappdev.konsist.api.ext.list.modifierprovider.withPublicOrDefaultModifier
import com.lemonappdev.konsist.api.ext.list.properties
import com.lemonappdev.konsist.api.ext.list.withAllParentsOf
import com.lemonappdev.konsist.api.verify.assert
import com.lemonappdev.konsist.api.verify.assertNot
import com.lemonappdev.konsist.api.verify.assertFalse
import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.jupiter.api.Test

class ViewModelTests {
class ViewModelTest {
@Test
fun `ensure view models have view model suffix`() =
allViewModels().assert { it.name.endsWith("ViewModel") }
allViewModels().assertTrue { it.name.endsWith("ViewModel") }

// The purpose of this check is to both keep the naming consistent and also to avoid exposing
// properties that shouldn't be exposed.
@Test
fun `ensure public properties use permitted names`() =
allViewModels().properties(includeNested = false).withPublicOrDefaultModifier().assert {
property ->
property.name == "uiState" || property.name == "uiSideEffect"
}
allViewModels()
.properties(includeNested = false)
.withPublicOrDefaultModifier()
.assertTrue { property ->
property.name == "uiState" || property.name == "uiSideEffect"
}

@Test
fun `ensure public functions have no return type`() =
allViewModels().functions().withPublicOrDefaultModifier().assertNot { function ->
allViewModels().functions().withPublicOrDefaultModifier().assertFalse { function ->
function.hasReturnType()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package net.mullvad.mullvadvpn.test.arch.classes

import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.verify.assert
import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.jupiter.api.Test

class ClassTests {
class ClassTest {
@Test
fun `ensure companion object is last declaration in the class`() =
Konsist.scopeFromProject().classes(includeNested = true).assert {
Konsist.scopeFromProject().classes(includeNested = true).assertTrue {
val companionObject =
it.objects(includeNested = false).lastOrNull { obj -> obj.hasCompanionModifier }
if (companionObject != null) {
Expand All @@ -17,4 +17,10 @@ class ClassTests {
true
}
}

@Test
fun `ensure test classes have 'Test' suffix`() =
Konsist.scopeFromTest().classes(includeNested = false).assertTrue {
it.hasNameEndingWith("Test")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ package net.mullvad.mullvadvpn.test.arch.classes
import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.ext.list.modifierprovider.withDataModifier
import com.lemonappdev.konsist.api.ext.list.properties
import com.lemonappdev.konsist.api.verify.assertNot
import com.lemonappdev.konsist.api.verify.assertFalse
import org.junit.jupiter.api.Test

class DataClassTests {
class DataClassTest {
@Test
fun `ensure data classes only use immutable properties`() =
Konsist.scopeFromProject()
.classes(includeNested = true)
.withDataModifier()
.properties(includeNested = false, includeLocal = false)
.assertNot { it.hasVarModifier }
.assertFalse { it.hasVarModifier }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.lemonappdev.konsist.api.ext.list.modifierprovider.withValueModifier
import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.jupiter.api.Test

class ValueClassTests {
class ValueClassTest {
@Test
fun `ensure value classes property is named value`() {
Konsist.scopeFromProject().classes(includeNested = true).withValueModifier().assertTrue {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ package net.mullvad.mullvadvpn.test.arch.compose
import androidx.compose.ui.tooling.preview.Preview
import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.ext.list.withAllAnnotationsOf
import com.lemonappdev.konsist.api.verify.assert
import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.jupiter.api.Test

class ComposePreviewTests {
class ComposePreviewTest {
@Test
fun `ensure all preview functions are private`() =
allPreviewFunctions().assert { it.hasPrivateModifier }
allPreviewFunctions().assertTrue { it.hasPrivateModifier }

@Test
fun `ensure all preview functions are prefixed with 'Preview'`() =
allPreviewFunctions().assert { it.name.startsWith("Preview") }
allPreviewFunctions().assertTrue { it.name.startsWith("Preview") }

private fun allPreviewFunctions() =
Konsist.scopeFromProduction("app").functions().withAllAnnotationsOf(Preview::class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ package net.mullvad.mullvadvpn.test.arch.compose
import androidx.compose.runtime.Composable
import com.lemonappdev.konsist.api.Konsist
import com.lemonappdev.konsist.api.ext.list.withAllAnnotationsOf
import com.lemonappdev.konsist.api.verify.assert
import com.lemonappdev.konsist.api.verify.assertTrue
import org.junit.jupiter.api.Test

class ComposeTests {
class ComposeTest {
@Test
fun `ensure all app composables are in the compose package`() =
allAppComposeFunctions().assert { it.resideInPackage("net.mullvad.mullvadvpn.compose..") }
allAppComposeFunctions().assertTrue {
it.resideInPackage("net.mullvad.mullvadvpn.compose..")
}

private fun allAppComposeFunctions() =
Konsist.scopeFromProduction("app").functions().withAllAnnotationsOf(Composable::class)
Expand Down