Add Integration test for workgroup routes

This commit is contained in:
2021-02-24 23:18:42 +01:00
parent 7b4066b928
commit d83ba2d54d
4 changed files with 265 additions and 24 deletions

View File

@@ -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(),