62 lines
2.1 KiB
Kotlin
62 lines
2.1 KiB
Kotlin
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.CitizenForCreate
|
|
import fr.dcproject.component.citizen.CitizenI
|
|
import fr.dcproject.component.citizen.CitizenRepository
|
|
import io.ktor.server.testing.TestApplicationEngine
|
|
import org.joda.time.DateTime
|
|
import org.koin.core.context.GlobalContext
|
|
import java.util.UUID
|
|
|
|
fun TestApplicationEngine.`Given I have citizen`(
|
|
firstName: String,
|
|
lastName: String,
|
|
email: String = ("$firstName-$lastName".toLowerCase()) + "@dc-project.fr",
|
|
id: String = UUID.randomUUID().toString()
|
|
): Citizen? {
|
|
val repo: CitizenRepository by lazy<CitizenRepository> { GlobalContext.get().koin.get() }
|
|
|
|
val user = UserForCreate(
|
|
id = id.toUUID(),
|
|
username = "$firstName-$lastName".toLowerCase(),
|
|
password = "azerty",
|
|
)
|
|
val citizen = CitizenForCreate(
|
|
id = id.toUUID(),
|
|
name = CitizenI.Name(firstName, lastName),
|
|
email = email,
|
|
birthday = DateTime.now(),
|
|
user = user
|
|
)
|
|
|
|
return repo.insertWithUser(citizen)
|
|
}
|
|
|
|
fun createCitizen(createdByUsername: String? = null): Citizen {
|
|
val citizenRepository: CitizenRepository by lazy<CitizenRepository> { GlobalContext.get().koin.get() }
|
|
|
|
val username = (createdByUsername ?: "username" + UUID.randomUUID().toString())
|
|
.toLowerCase().replace(' ', '-')
|
|
|
|
return if (createdByUsername != null) {
|
|
citizenRepository.findByUsername(createdByUsername) ?: error("Citizen not exist")
|
|
} else {
|
|
val first = "firstName" + UUID.randomUUID().toString()
|
|
val last = "lastName" + UUID.randomUUID().toString()
|
|
CitizenForCreate(
|
|
birthday = DateTime.now(),
|
|
name = CitizenI.Name(
|
|
first,
|
|
last
|
|
),
|
|
email = "$first@fakeemail.com",
|
|
user = UserForCreate(username = username, password = "azerty")
|
|
).let {
|
|
citizenRepository.insertWithUser(it) ?: error("Unable to create User")
|
|
}
|
|
}
|
|
}
|