Improve articles request test

This commit is contained in:
2021-04-03 00:38:56 +02:00
parent 921a545877
commit 3a18ef0554
4 changed files with 33 additions and 15 deletions

View File

@@ -6,6 +6,7 @@ import fr.dcproject.component.article.database.ArticleForUpdate
import fr.dcproject.component.article.database.ArticleForView
import fr.dcproject.component.article.database.ArticleRepository
import fr.dcproject.component.citizen.database.CitizenI.Name
import fr.dcproject.component.citizen.database.CitizenRef
import fr.dcproject.component.workgroup.database.WorkgroupRef
import io.ktor.server.testing.TestApplicationEngine
import org.koin.core.context.GlobalContext
@@ -16,7 +17,15 @@ fun TestApplicationEngine.`Given I have article`(
workgroup: WorkgroupRef? = null,
createdBy: Name? = null
) {
createArticle(id?.toUUID(), workgroup, createdBy)
createArticle(id?.toUUID(), workgroup, createCitizen(name = createdBy))
}
fun TestApplicationEngine.`Given I have article`(
id: String? = null,
workgroup: WorkgroupRef? = null,
createdBy: UUID
) {
createArticle(id?.toUUID(), workgroup, createCitizen(id = createdBy))
}
fun TestApplicationEngine.`Given I have articles`(
@@ -35,18 +44,16 @@ fun TestApplicationEngine.`Given I have article created by workgroup`(
fun createArticle(
id: UUID? = null,
workgroup: WorkgroupRef? = null,
createdBy: Name? = null
createdBy: CitizenRef = createCitizen()
): ArticleForView {
val articleRepository: ArticleRepository by lazy { GlobalContext.get().koin.get() }
val citizen = createCitizen(createdBy)
val article = ArticleForUpdate(
id = id ?: UUID.randomUUID(),
title = LoremIpsum().getTitle(3),
content = LoremIpsum().getParagraphs(1, 2),
description = LoremIpsum().getParagraphs(1, 2),
createdBy = citizen,
createdBy = createdBy,
workgroup = workgroup,
versionId = UUID.randomUUID()
)

View File

@@ -36,16 +36,17 @@ fun TestApplicationEngine.`Given I have citizen`(
return repo.insertWithUser(citizen)?.also { callback(it) }
}
fun createCitizen(createdBy: CitizenI.Name? = null): Citizen {
fun createCitizen(name: CitizenI.Name? = null, id: UUID = UUID.randomUUID()): Citizen {
val citizenRepository: CitizenRepository by lazy { GlobalContext.get().koin.get() }
return if (createdBy != null) {
citizenRepository.findByName(createdBy) ?: error("Citizen not exist")
return if (name != null) {
citizenRepository.findByName(name) ?: error("Citizen not exist")
} else {
val first = "firstName" + UUID.randomUUID().toString()
val last = "lastName" + UUID.randomUUID().toString()
val username = ("username" + UUID.randomUUID().toString())
CitizenForCreate(
id = id,
birthday = DateTime.now(),
name = CitizenI.Name(
first,

View File

@@ -40,7 +40,7 @@ fun TestApplicationCall.valid(validate: BitMaskI): TestApplicationCall {
return this
}
fun TestApplicationEngine.`When I send a GET request`(uri: String? = null, validate: Validate = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall {
fun TestApplicationEngine.`When I send a GET request`(uri: String? = null, validate: BitMaskI = Validate.ALL, setup: (TestApplicationRequest.() -> Unit)? = null): TestApplicationCall {
return handleRequest(true) {
method = HttpMethod.Get
if (uri != null) {
@@ -74,7 +74,7 @@ fun TestApplicationEngine.`When I send a PUT request`(uri: String? = null, valid
}.valid(validate)
}
fun TestApplicationEngine.`When I send a DELETE request`(uri: String? = null, validate: Validate = Validate.ALL, setup: (TestApplicationRequest.() -> String?)? = null): TestApplicationCall {
fun TestApplicationEngine.`When I send a DELETE request`(uri: String? = null, validate: BitMaskI = Validate.ALL, setup: (TestApplicationRequest.() -> String?)? = null): TestApplicationCall {
return handleRequest(true) {
method = HttpMethod.Delete
if (uri != null) {