Add Integration test for workgroup routes
This commit is contained in:
@@ -2,6 +2,7 @@ package integration.steps.given
|
||||
|
||||
import fr.dcproject.common.utils.toUUID
|
||||
import fr.dcproject.component.auth.UserForCreate
|
||||
import fr.dcproject.component.citizen.Citizen
|
||||
import fr.dcproject.component.citizen.CitizenBasic
|
||||
import fr.dcproject.component.citizen.CitizenForCreate
|
||||
import fr.dcproject.component.citizen.CitizenI
|
||||
@@ -20,9 +21,30 @@ fun TestApplicationEngine.`Given I have workgroup`(
|
||||
name: String? = null,
|
||||
description: String? = null,
|
||||
anonymous: Boolean? = null,
|
||||
createdByUsername: String? = null
|
||||
createdBy: CitizenI.Name? = null,
|
||||
callback: Workgroup<CitizenBasic>.() -> Unit = {},
|
||||
) {
|
||||
createWorkgroup(id?.toUUID(), name, description, anonymous, createdByUsername)
|
||||
val workgroup: Workgroup<CitizenBasic> = createWorkgroup(id?.toUUID(), name, description, anonymous, createdBy)
|
||||
callback(workgroup)
|
||||
}
|
||||
fun Workgroup<CitizenBasic>.`With members`(
|
||||
vararg member: CitizenI.Name
|
||||
) {
|
||||
addMemberToWorkgroup(this, *member)
|
||||
}
|
||||
|
||||
fun addMemberToWorkgroup(workgroup: Workgroup<CitizenBasic>, vararg membersNames: CitizenI.Name) {
|
||||
val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() }
|
||||
val workgroupRepository: WorkgroupRepository by lazy { GlobalContext.get().koin.get() }
|
||||
|
||||
val newMembers: List<Member<CitizenI>> = membersNames.map { memberName ->
|
||||
val member: Citizen = citizenRepository.findByName(memberName) ?: error("Citizen not exist")
|
||||
Member(member, listOf(Member.Role.EDITOR))
|
||||
}
|
||||
workgroupRepository.updateMembers<CitizenI>(
|
||||
workgroup,
|
||||
workgroup.members as List<Member<CitizenI>> + newMembers
|
||||
)
|
||||
}
|
||||
|
||||
private fun createWorkgroup(
|
||||
@@ -30,29 +52,28 @@ private fun createWorkgroup(
|
||||
name: String? = null,
|
||||
description: String? = null,
|
||||
anonymous: Boolean? = null,
|
||||
createdByUsername: String? = null
|
||||
createdBy: CitizenI.Name? = null,
|
||||
): Workgroup<CitizenBasic> {
|
||||
val username = (createdByUsername ?: "username" + UUID.randomUUID().toString())
|
||||
.toLowerCase().replace(' ', '-')
|
||||
val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() }
|
||||
val workgroupRepository: WorkgroupRepository by lazy { GlobalContext.get().koin.get() }
|
||||
|
||||
val citizenRepository: CitizenRepository by lazy<CitizenRepository> { GlobalContext.get().koin.get() }
|
||||
val workgroupRepository: WorkgroupRepository by lazy<WorkgroupRepository> { GlobalContext.get().koin.get() }
|
||||
|
||||
val creator = citizenRepository.findByUsername(username.toLowerCase().replace(' ', '-'))
|
||||
?: run {
|
||||
val user = UserForCreate(
|
||||
username = username,
|
||||
password = "azerty",
|
||||
)
|
||||
CitizenForCreate(
|
||||
name = CitizenI.Name("Paul", "Langevin"),
|
||||
email = "$username@dc-project.fr",
|
||||
birthday = DateTime.now(),
|
||||
user = user
|
||||
).let {
|
||||
citizenRepository.insertWithUser(it) ?: error("Unable to create User")
|
||||
}
|
||||
val createdBy = createdBy ?: CitizenI.Name("Paul", "Langevin")
|
||||
val creator = citizenRepository.findByName(createdBy) ?: run {
|
||||
val username = ("username" + UUID.randomUUID().toString())
|
||||
.toLowerCase().replace(' ', '-')
|
||||
val user = UserForCreate(
|
||||
username = username,
|
||||
password = "azerty",
|
||||
)
|
||||
CitizenForCreate(
|
||||
name = createdBy,
|
||||
email = "$username@dc-project.fr",
|
||||
birthday = DateTime.now(),
|
||||
user = user
|
||||
).let {
|
||||
citizenRepository.insertWithUser(it) ?: error("Unable to create User")
|
||||
}
|
||||
}
|
||||
|
||||
val workgroup = Workgroup(
|
||||
id = id ?: UUID.randomUUID(),
|
||||
|
||||
Reference in New Issue
Block a user