Skip to content

Commit

Permalink
wip: testei
Browse files Browse the repository at this point in the history
  • Loading branch information
ilkkahanninen committed Jun 10, 2024
1 parent 832f396 commit 90d184b
Showing 1 changed file with 85 additions and 4 deletions.
89 changes: 85 additions & 4 deletions src/test/scala/fi/oph/koski/massaluovutus/MassaluovutusSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,19 @@ import fi.oph.koski.koskiuser.{KoskiSpecificSession, MockUsers, UserWithPassword
import fi.oph.koski.log.AuditLogTester
import fi.oph.koski.massaluovutus.organisaationopiskeluoikeudet.{MassaluovutusQueryOrganisaationOpiskeluoikeudet, MassaluovutusQueryOrganisaationOpiskeluoikeudetCsv, MassaluovutusQueryOrganisaationOpiskeluoikeudetJson, QueryOrganisaationOpiskeluoikeudetCsvDocumentation}
import fi.oph.koski.massaluovutus.paallekkaisetopiskeluoikeudet.MassaluovutusQueryPaallekkaisetOpiskeluoikeudet
import fi.oph.koski.massaluovutus.suoritusrekisteri.SuoritusrekisteriQuery
import fi.oph.koski.massaluovutus.valintalaskenta.ValintalaskentaQuery
import fi.oph.koski.organisaatio.MockOrganisaatiot
import fi.oph.koski.raportit.RaportitService
import fi.oph.koski.schema.KoskiSchema.strictDeserialization
import fi.oph.koski.util.Wait
import fi.oph.koski.{KoskiApplicationForTests, KoskiHttpSpec}
import org.json4s.JInt
import fi.oph.scalaschema.Serializer.format
import org.json4s.jackson.JsonMethods
import org.scalatest.{BeforeAndAfterAll, BeforeAndAfterEach}
import org.json4s.{JArray, JInt, JValue}
import org.scalatest.freespec.AnyFreeSpec
import org.scalatest.matchers.should.Matchers
import org.scalatest.{BeforeAndAfterAll, BeforeAndAfterEach}

import java.net.URL
import java.sql.Timestamp
Expand Down Expand Up @@ -291,7 +293,7 @@ class MassaluovutusSpec extends AnyFreeSpec with KoskiHttpSpec with Matchers wit
}

"Valintalaskenta" - {
val user = MockUsers.paakayttaja // TODO: Vaihda sopiva palvelukäyttäjä
val user = MockUsers.paakayttaja
val ammattikoululainen = "1.2.246.562.24.00000000001"
val olematon = "1.2.246.562.25.1010101010101"

Expand Down Expand Up @@ -376,6 +378,85 @@ class MassaluovutusSpec extends AnyFreeSpec with KoskiHttpSpec with Matchers wit
}
}

"Sure" - {
val user = MockUsers.paakayttaja

def getQuery(muuttuneetJälkeen: LocalDateTime) = SuoritusrekisteriQuery(
muuttuneetJälkeen = muuttuneetJälkeen
)

"Onnistunut pyyntö" - {
val query = getQuery(LocalDateTime.now().minusHours(1))
val queryId = addQuerySuccessfully(query, user) { response =>
response.status should equal(QueryState.pending)
response.queryId
}
val complete = waitForCompletion(queryId, user)

val jsonFiles = complete.files.map { file =>
verifyResultAndContent(file, user) {
JsonMethods.parse(response.body)
}
}

"Sisältää kaikkia tuettuja suoritustyyppejä" in {
val tuetutSuoritustyypit = List(
"aikuistenperusopetuksenoppimaara",
"ammatillinentutkinto",
"diatutkintovaihe",
"ebtutkinto",
"ibtutkinto",
"internationalschooldiplomavuosiluokka",
"nuortenperusopetuksenoppiaineenoppimaara",
"perusopetuksenoppiaineenoppimaara",
"perusopetuksenoppimaara",
"perusopetuksenvuosiluokka",
"telma",
"tuvakoulutuksensuoritus",
"vstjotpakoulutus",
"vstlukutaitokoulutus",
"vstmaahanmuuttajienkotoutumiskoulutus",
"vstoppivelvollisillesuunnattukoulutus",
"vstosaamismerkki",
"vstvapaatavoitteinenkoulutus",
)

val vastaanotetutSuoritustyypit =
jsonFiles
.map(_ \ "opiskeluoikeus" \ "suoritukset" \ "tyyppi" \ "koodiarvo")
.collect { case JArray(list) => list }
.flatten
.map(_.extract[String])
.distinct
.sorted

vastaanotetutSuoritustyypit should equal(tuetutSuoritustyypit)
}

"Nuorten perusopetuksesta palautetaan vain perusopetuksen päättötodistus" in {
val päättötodistuksenSuoritustunnisteet = List(
"201101", // Oppimäärän suoritus
"9", // Ysiluokka
)

val vastaanotetutSuoritustunnisteet =
jsonFiles
.map(_ \ "opiskeluoikeus")
.filter(oo => (oo \ "tyyppi" \ "koodiarvo").extract[String] == "perusopetus")
.map(_ \ "suoritukset")
.collect { case JArray(list) => list }
.flatten
.filterNot(s => (s \ "tyyppi" \ "koodiarvo").extract[String] == "nuortenperusopetuksenoppiaineenoppimaara")
.map(s => (s \ "koulutusmoduuli" \ "tunniste" \ "koodiarvo").extract[String])
.distinct
.sorted

vastaanotetutSuoritustunnisteet should equal(päättötodistuksenSuoritustunnisteet)
}
}

}

def addQuery[T](query: MassaluovutusQueryParameters, user: UserWithPassword)(f: => T): T =
post("api/massaluovutus", JsonSerializer.writeWithRoot(query), headers = authHeaders(user) ++ jsonContent)(f)

Expand Down Expand Up @@ -404,7 +485,7 @@ class MassaluovutusSpec extends AnyFreeSpec with KoskiHttpSpec with Matchers wit
verifyResponseStatus(302) // 302: Found (redirect)
}

def verifyResultAndContent(url: String, user: UserWithPassword)(f: => Unit): Unit = {
def verifyResultAndContent[T](url: String, user: UserWithPassword)(f: => T): T = {
val location = new URL(getResult(url, user) {
verifyResponseStatus(302) // 302: Found (redirect)
response.header("Location")
Expand Down

0 comments on commit 90d184b

Please sign in to comment.