Skip to content

Commit

Permalink
gjenbruker bare raden hvis annullering er kilden
Browse files Browse the repository at this point in the history
Co-authored-by: Christian Bülow Skovborg <[email protected]>
  • Loading branch information
davidsteinsland and chsko committed Jan 31, 2024
1 parent c5fe884 commit f496847
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
12 changes: 10 additions & 2 deletions fabrikk/src/main/kotlin/no/nav/helse/spekemat/fabrikk/Pølserad.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,33 @@ data class Pølserad(
pølser.any { pølse -> erNyVersjonAvPølse(other, pølse) } && !kanGjenbrukeRad()

private fun kanGjenbrukeRad() =
allePølserKyttetTilForrigeKildeErForkastet() || allePølserRadenErOpprettetMedErÅpen()
radenErOpprettetAvAnnullering() || allePølserRadenErOpprettetMedErÅpen()

private fun erNyVersjonAvPølse(other: Pølse, pølse: Pølse) =
other.erNyPølseAv(pølse) && this.kildeTilRad != other.kilde

private fun radenErOpprettetAvAnnullering() =
allePølserKyttetTilForrigeKildeErForkastet() && allePølserRadenErOpprettetMedErForkastet()

private fun allePølserKyttetTilForrigeKildeErForkastet() = pølser
.filter { it.kilde == sisteKildeId }
.also {
check(it.isNotEmpty()) { "Finner ingen pølser knyttet til forrige kildeID, dette må være en feil" }
}
.all { it.status == Pølsestatus.FORKASTET }

private fun allePølserRadenErOpprettetMedErForkastet() =
pølserMedSammeKildeSomRaden().all { it.status == Pølsestatus.FORKASTET }

private fun allePølserRadenErOpprettetMedErÅpen() =
pølserMedSammeKildeSomRaden().all { it.status == Pølsestatus.ÅPEN }

private fun pølserMedSammeKildeSomRaden() =
pølser
.filter { it.kilde == kildeTilRad }
.also {
check(it.isNotEmpty()) { "Finner ingen pølser knyttet til kildeID som opprettet raden, dette må være en feil" }
}
.all { it.status == Pølsestatus.ÅPEN }

fun fjernPølserTilBehandling() =
this.copy(pølser = pølser.filterNot { it.status == Pølsestatus.ÅPEN })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,26 @@ class PølsefabrikkTest : PølseTest() {
}
}

@Test
fun `revurdering av pølse etter forkasting`() {
val p1 = 1.januar til 5.januar
val p2 = 20.januar til 21.januar
val p1Revurdering = p1.nyGenerasjon()

fabrikk.nyPølse(p1)
fabrikk.lukketPølse(p1)
fabrikk.nyPølse(p2)
fabrikk.pølseForkastet(p2)

fabrikk.nyPølse(p1Revurdering)

fabrikk.pakke().also { result ->
assertEquals(2, result.size)
assertEquals(setOf(p1Revurdering, p2.forkastet()), result[0])
assertEquals(setOf(p1.lukket(), p2.forkastet()), result[1])
}
}

@Test
fun `to annullerte vedtak med en revurdering i mellom`() {
val p1 = 1.januar til 5.januar
Expand Down

0 comments on commit f496847

Please sign in to comment.