Browse Source

Konsist: improve test about no default value for State classes, and fix new detected issues.

pull/1526/head
Benoit Marty 12 months ago
parent
commit
4338d821e5
  1. 22
      app/src/test/kotlin/io/element/android/app/KonsistTest.kt
  2. 8
      features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListState.kt
  3. 4
      features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListStateProvider.kt
  4. 8
      features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomState.kt
  5. 23
      features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomStateProvider.kt
  6. 9
      features/leaveroom/test/src/main/kotlin/io/element/android/features/leaveroom/fake/FakeLeaveRoomPresenter.kt
  7. 2
      features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollState.kt
  8. 32
      features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollStateProvider.kt
  9. 3
      features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt
  10. 3
      features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListStateProvider.kt

22
app/src/test/kotlin/io/element/android/app/KonsistTest.kt

@ -19,8 +19,10 @@ package io.element.android.app @@ -19,8 +19,10 @@ 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.withAllAnnotationsOf
import com.lemonappdev.konsist.api.ext.list.withAllParentsOf
import com.lemonappdev.konsist.api.ext.list.withNameEndingWith
@ -40,7 +42,9 @@ class KonsistTest { @@ -40,7 +42,9 @@ class KonsistTest {
Konsist.scopeFromProject()
.classes()
.withAllParentsOf(Presenter::class)
.assertTrue { it.name.endsWith("Presenter") }
.assertTrue {
it.name.endsWith("Presenter")
}
}
@Test
@ -94,12 +98,16 @@ class KonsistTest { @@ -94,12 +98,16 @@ class KonsistTest {
.scopeFromProject()
.classes()
.withNameEndingWith("State")
.assertTrue { classDeclaration ->
classDeclaration.constructors.all { constructorDeclaration ->
constructorDeclaration.parameters.all { parameterDeclaration ->
parameterDeclaration.defaultValue == null
}
}
.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()
}
}

8
features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListState.kt

@ -25,10 +25,10 @@ import kotlinx.collections.immutable.ImmutableList @@ -25,10 +25,10 @@ import kotlinx.collections.immutable.ImmutableList
@Immutable
data class InviteListState(
val inviteList: ImmutableList<InviteListInviteSummary>,
val declineConfirmationDialog: InviteDeclineConfirmationDialog = InviteDeclineConfirmationDialog.Hidden,
val acceptedAction: Async<RoomId> = Async.Uninitialized,
val declinedAction: Async<Unit> = Async.Uninitialized,
val eventSink: (InviteListEvents) -> Unit = {}
val declineConfirmationDialog: InviteDeclineConfirmationDialog,
val acceptedAction: Async<RoomId>,
val declinedAction: Async<Unit>,
val eventSink: (InviteListEvents) -> Unit
)
sealed interface InviteDeclineConfirmationDialog {

4
features/invitelist/impl/src/main/kotlin/io/element/android/features/invitelist/impl/InviteListStateProvider.kt

@ -39,6 +39,10 @@ open class InviteListStateProvider : PreviewParameterProvider<InviteListState> { @@ -39,6 +39,10 @@ open class InviteListStateProvider : PreviewParameterProvider<InviteListState> {
internal fun aInviteListState() = InviteListState(
inviteList = aInviteListInviteSummaryList(),
declineConfirmationDialog = InviteDeclineConfirmationDialog.Hidden,
acceptedAction = Async.Uninitialized,
declinedAction = Async.Uninitialized,
eventSink = {},
)
internal fun aInviteListInviteSummaryList(): ImmutableList<InviteListInviteSummary> {

8
features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomState.kt

@ -19,10 +19,10 @@ package io.element.android.features.leaveroom.api @@ -19,10 +19,10 @@ package io.element.android.features.leaveroom.api
import io.element.android.libraries.matrix.api.core.RoomId
data class LeaveRoomState(
val confirmation: Confirmation = Confirmation.Hidden,
val progress: Progress = Progress.Hidden,
val error: Error = Error.Hidden,
val eventSink: (LeaveRoomEvent) -> Unit = {},
val confirmation: Confirmation,
val progress: Progress,
val error: Error,
val eventSink: (LeaveRoomEvent) -> Unit,
) {
sealed interface Confirmation {
data object Hidden : Confirmation

23
features/leaveroom/api/src/main/kotlin/io/element/android/features/leaveroom/api/LeaveRoomStateProvider.kt

@ -22,32 +22,32 @@ import io.element.android.libraries.matrix.api.core.RoomId @@ -22,32 +22,32 @@ import io.element.android.libraries.matrix.api.core.RoomId
class LeaveRoomStateProvider : PreviewParameterProvider<LeaveRoomState> {
override val values: Sequence<LeaveRoomState>
get() = sequenceOf(
LeaveRoomState(
aLeaveRoomState(
confirmation = LeaveRoomState.Confirmation.Hidden,
progress = LeaveRoomState.Progress.Hidden,
error = LeaveRoomState.Error.Hidden,
),
LeaveRoomState(
aLeaveRoomState(
confirmation = LeaveRoomState.Confirmation.Generic(A_ROOM_ID),
progress = LeaveRoomState.Progress.Hidden,
error = LeaveRoomState.Error.Hidden,
),
LeaveRoomState(
aLeaveRoomState(
confirmation = LeaveRoomState.Confirmation.PrivateRoom(A_ROOM_ID),
progress = LeaveRoomState.Progress.Hidden,
error = LeaveRoomState.Error.Hidden,
),
LeaveRoomState(
aLeaveRoomState(
confirmation = LeaveRoomState.Confirmation.LastUserInRoom(A_ROOM_ID),
progress = LeaveRoomState.Progress.Hidden,
error = LeaveRoomState.Error.Hidden,
),
LeaveRoomState(
aLeaveRoomState(
confirmation = LeaveRoomState.Confirmation.Hidden,
progress = LeaveRoomState.Progress.Shown,
error = LeaveRoomState.Error.Hidden,
),
LeaveRoomState(
aLeaveRoomState(
confirmation = LeaveRoomState.Confirmation.Hidden,
progress = LeaveRoomState.Progress.Hidden,
error = LeaveRoomState.Error.Shown,
@ -56,3 +56,14 @@ class LeaveRoomStateProvider : PreviewParameterProvider<LeaveRoomState> { @@ -56,3 +56,14 @@ class LeaveRoomStateProvider : PreviewParameterProvider<LeaveRoomState> {
}
private val A_ROOM_ID = RoomId("!aRoomId:aDomain")
fun aLeaveRoomState(
confirmation: LeaveRoomState.Confirmation = LeaveRoomState.Confirmation.Hidden,
progress: LeaveRoomState.Progress = LeaveRoomState.Progress.Hidden,
error: LeaveRoomState.Error = LeaveRoomState.Error.Hidden,
) = LeaveRoomState(
confirmation = confirmation,
progress = progress,
error = error,
eventSink = {},
)

9
features/leaveroom/test/src/main/kotlin/io/element/android/features/leaveroom/fake/FakeLeaveRoomPresenter.kt

@ -21,7 +21,7 @@ import io.element.android.features.leaveroom.api.LeaveRoomEvent @@ -21,7 +21,7 @@ import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomPresenter
import io.element.android.features.leaveroom.api.LeaveRoomState
class FakeLeaveRoomPresenter: LeaveRoomPresenter {
class FakeLeaveRoomPresenter : LeaveRoomPresenter {
val events = mutableListOf<LeaveRoomEvent>()
@ -29,7 +29,12 @@ class FakeLeaveRoomPresenter: LeaveRoomPresenter { @@ -29,7 +29,12 @@ class FakeLeaveRoomPresenter: LeaveRoomPresenter {
events += event
}
private var state = LeaveRoomState(eventSink = ::handleEvent)
private var state = LeaveRoomState(
confirmation = LeaveRoomState.Confirmation.Hidden,
progress = LeaveRoomState.Progress.Hidden,
error = LeaveRoomState.Error.Hidden,
eventSink = ::handleEvent,
)
set(value) {
field = value.copy(eventSink = ::handleEvent)
}

2
features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollState.kt

@ -26,7 +26,7 @@ data class CreatePollState( @@ -26,7 +26,7 @@ data class CreatePollState(
val answers: ImmutableList<Answer>,
val pollKind: PollKind,
val showConfirmation: Boolean,
val eventSink: (CreatePollEvents) -> Unit = {},
val eventSink: (CreatePollEvents) -> Unit,
)
data class Answer(

32
features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollStateProvider.kt

@ -18,12 +18,13 @@ package io.element.android.features.poll.impl.create @@ -18,12 +18,13 @@ package io.element.android.features.poll.impl.create
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.matrix.api.poll.PollKind
import kotlinx.collections.immutable.PersistentList
import kotlinx.collections.immutable.persistentListOf
class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> {
override val values: Sequence<CreatePollState>
get() = sequenceOf(
CreatePollState(
aCreatePollState(
canCreate = false,
canAddAnswer = true,
question = "",
@ -34,7 +35,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> { @@ -34,7 +35,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> {
pollKind = PollKind.Disclosed,
showConfirmation = false,
),
CreatePollState(
aCreatePollState(
canCreate = true,
canAddAnswer = true,
question = "What type of food should we have?",
@ -45,7 +46,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> { @@ -45,7 +46,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> {
showConfirmation = false,
pollKind = PollKind.Undisclosed,
),
CreatePollState(
aCreatePollState(
canCreate = true,
canAddAnswer = true,
question = "What type of food should we have?",
@ -56,7 +57,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> { @@ -56,7 +57,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> {
showConfirmation = true,
pollKind = PollKind.Undisclosed,
),
CreatePollState(
aCreatePollState(
canCreate = true,
canAddAnswer = true,
question = "What type of food should we have?",
@ -69,7 +70,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> { @@ -69,7 +70,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> {
showConfirmation = false,
pollKind = PollKind.Undisclosed,
),
CreatePollState(
aCreatePollState(
canCreate = true,
canAddAnswer = false,
question = "Should there be more than 20 answers?",
@ -98,7 +99,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> { @@ -98,7 +99,7 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> {
showConfirmation = false,
pollKind = PollKind.Undisclosed,
),
CreatePollState(
aCreatePollState(
canCreate = true,
canAddAnswer = true,
question = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." +
@ -122,3 +123,22 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> { @@ -122,3 +123,22 @@ class CreatePollStateProvider : PreviewParameterProvider<CreatePollState> {
)
)
}
private fun aCreatePollState(
canCreate: Boolean,
canAddAnswer: Boolean,
question: String,
answers: PersistentList<Answer>,
showConfirmation: Boolean,
pollKind: PollKind
): CreatePollState {
return CreatePollState(
canCreate = canCreate,
canAddAnswer = canAddAnswer,
question = question,
answers = answers,
showConfirmation = showConfirmation,
pollKind = pollKind,
eventSink = {}
)
}

3
features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt

@ -18,6 +18,7 @@ package io.element.android.features.roomdetails.impl @@ -18,6 +18,7 @@ package io.element.android.features.roomdetails.impl
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.leaveroom.api.LeaveRoomState
import io.element.android.features.leaveroom.api.aLeaveRoomState
import io.element.android.features.roomdetails.impl.members.details.aRoomMemberDetailsState
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.RoomMember
@ -80,7 +81,7 @@ fun aRoomDetailsState() = RoomDetailsState( @@ -80,7 +81,7 @@ fun aRoomDetailsState() = RoomDetailsState(
canShowNotificationSettings = true,
roomType = RoomDetailsType.Room,
roomMemberDetailsState = null,
leaveRoomState = LeaveRoomState(),
leaveRoomState = aLeaveRoomState(),
roomNotificationSettings = RoomNotificationSettings(mode = RoomNotificationMode.MUTE, isDefault = false),
eventSink = {}
)

3
features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListStateProvider.kt

@ -18,6 +18,7 @@ package io.element.android.features.roomlist.impl @@ -18,6 +18,7 @@ package io.element.android.features.roomlist.impl
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.leaveroom.api.LeaveRoomState
import io.element.android.features.leaveroom.api.aLeaveRoomState
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
import io.element.android.features.roomlist.impl.model.RoomListRoomSummaryPlaceholders
import io.element.android.libraries.designsystem.components.avatar.AvatarData
@ -58,7 +59,7 @@ internal fun aRoomListState() = RoomListState( @@ -58,7 +59,7 @@ internal fun aRoomListState() = RoomListState(
invitesState = InvitesState.NoInvites,
displaySearchResults = false,
contextMenu = RoomListState.ContextMenu.Hidden,
leaveRoomState = LeaveRoomState(),
leaveRoomState = aLeaveRoomState(),
eventSink = {}
)

Loading…
Cancel
Save