Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Historikkvask for punsj v3 #2293

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ class EventTilDtoMapper {
område = "K9",
kildeområde = "K9",
type = "k9punsj",
status =
if (event.sendtInn == true) {
status = if (event.sendtInn == true) {
Oppgavestatus.LUKKET.kode
} else if (oppgaveSkalHaVentestatus(event)) {
Oppgavestatus.VENTER.kode
Expand All @@ -36,7 +35,7 @@ class EventTilDtoMapper {
)
}

fun utledReservasjonsnøkkel(event: PunsjEventDto): String {
private fun utledReservasjonsnøkkel(event: PunsjEventDto): String {
return "K9_p_${event.eksternId}"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,20 +125,25 @@ class K9PunsjTilLosHistorikkvaskTjeneste(
var eventTeller = 0L
var forrigeOppgave: OppgaveV3? = null

val eventer = eventRepository.hentMedLås(tx, uuid).eventer
var eventNrForBehandling = 0L
val høyesteInternVersjon =
oppgaveV3Tjeneste.hentHøyesteInternVersjon(uuid.toString(), "k9punsj", "K9", tx)!!
var oppgaveDto: OppgaveDto? = null
val behandlingProsessEventer: List<PunsjEventDto> = eventRepository.hentMedLås(tx, uuid).eventer
for (event in behandlingProsessEventer) {
for (event in eventer) {
if (eventNrForBehandling > høyesteInternVersjon) { break } //Historikkvasken har funnet eventer som ennå ikke er lastet inn med normalflyt. Dirty eventer skal håndteres av vanlig adaptertjeneste

oppgaveDto = EventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave)

// oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, høyesteInternVersjon, tx)
oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, tx)

eventTeller++
loggFremgangForHver100(eventTeller, "Prosessert $eventTeller eventer")

forrigeOppgave = oppgaveV3Tjeneste.hentOppgaveversjon(
område = "k9",
eksternId = oppgaveDto.id,
eksternVersjon = oppgaveDto.versjon,
tx = tx
område = "K9", eksternId = oppgaveDto.id, eksternVersjon = oppgaveDto.versjon, tx = tx
)
eventNrForBehandling++
}

oppgaveDto?.let {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package no.nav.k9.los.aksjonspunktbehandling

import assertk.assertThat
import assertk.assertions.any
import assertk.assertions.hasSize
import assertk.assertions.isEqualTo
import assertk.assertions.isNotNull
import assertk.assertions.isNotEqualTo
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import no.nav.helse.dusseldorf.ktor.jackson.dusseldorfConfigured
import no.nav.k9.los.AbstractK9LosIntegrationTest
Expand All @@ -13,10 +12,8 @@ import no.nav.k9.los.domene.repository.OppgaveRepository
import no.nav.k9.los.integrasjon.kafka.dto.PunsjEventDto
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.OmrådeSetup
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.punsjtillos.K9PunsjTilLosAdapterTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.saktillos.K9SakTilLosAdapterTjeneste
import no.nav.k9.los.nyoppgavestyring.mottak.omraade.Område
import no.nav.k9.los.nyoppgavestyring.mottak.omraade.OmrådeRepository
import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.OppgaveV3Repository
import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.Oppgavestatus
import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.Oppgave
import org.intellij.lang.annotations.Language
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
Expand All @@ -29,21 +26,27 @@ import kotlin.test.assertTrue
class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() {

val objectMapper = jacksonObjectMapper().dusseldorfConfigured()
private lateinit var k9PunsjEventHandler: K9punsjEventHandler
private lateinit var oppgaveRepository: OppgaveRepository
private lateinit var oppgaveV3Repository: no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository
private lateinit var transactionalManager: TransactionalManager


@BeforeEach
fun setup() {
val områdeSetup = get<OmrådeSetup>()
områdeSetup.setup()
val k9PunsjTilLosAdapterTjeneste = get<K9PunsjTilLosAdapterTjeneste>()
k9PunsjTilLosAdapterTjeneste.setup()
k9PunsjEventHandler = get<K9punsjEventHandler>()
oppgaveRepository = get<OppgaveRepository>()
oppgaveV3Repository = get<no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository>()
transactionalManager = get<TransactionalManager>()
}

@Test
fun `Skal opprette en oppgave dersom en punsjoppgave har et aktivt aksjonspunkt`() {

val k9PunsjEventHandler = get<K9punsjEventHandler>()
val oppgaveRepository = get<OppgaveRepository>()

val eksternId = "9a009fb9-38ab-4bad-89e0-a3a16ecba306"
val eventTid = "2020-11-10T10:43:43.130644"
val aktørId = "27078522688"
Expand All @@ -66,13 +69,7 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() {
val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString()))
assertTrue { oppgaveModell.aktiv }

val områdeRepository = get<OmrådeRepository>()
val oppgaveV3Repository = get<no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository>()
val transactionalManager = get<TransactionalManager>()

val oppgaveV3 = transactionalManager.transaction { tx ->
oppgaveV3Repository.hentNyesteOppgaveForEksternId(tx, "K9", event.eksternId.toString())
}
val oppgaveV3 = hentV3Oppgave(event)

val felter = oppgaveV3.felter.sortedBy { it.eksternId }
assertThat(felter).hasSize(4)
Expand All @@ -84,7 +81,6 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() {
assertThat(felter[2].verdi).isEqualTo(eventTid)
assertThat(felter[3].eksternId).isEqualTo("registrertDato")
assertThat(felter[3].verdi).isEqualTo(eventTid)

}

@Test
Expand All @@ -106,10 +102,15 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() {


val event = objectMapper.readValue(json, PunsjEventDto::class.java)

k9PunsjEventHandler.prosesser(event)

// V1
val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString()))
assertTrue { oppgaveModell.aktiv }

// V3
val oppgaveV3 = hentV3Oppgave(event)
assertThat(oppgaveV3.status).isEqualTo(Oppgavestatus.AAPEN.kode)
}

@Test
Expand All @@ -130,10 +131,16 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() {
}""".trimIndent()

val event = objectMapper.readValue(json, PunsjEventDto::class.java)

k9PunsjEventHandler.prosesser(event)

// V1
val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString()))
assertFalse { oppgaveModell.aktiv }

// V3
val oppgaveV3 = hentV3Oppgave(event)
// TODO: Skal status på oppgaven endres her, eller er testen ikke relevant?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Godt spørsmål. Finnes det eventer fra punsj uten aksjonspunkter? Skulle tro at sendtInn hadde vært en bedre ting å teste, men det kan skyldes midlertidig tilstand i punsj som vi ikke ønsker å vise oppgave for i los.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

@baskevold baskevold Jun 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Den siste av dem er sendt inn, så da er det forståelig at det ikke er noen aksjonspunkter.
Vet du hva slags tilstand den første eksempelet (uten_fnr_dnr) tilsvarer i punsj? Er den satt på vent?

// assertThat(oppgaveV3.status).isNotEqualTo(Oppgavestatus.AAPEN.kode)
}

@Test
Expand All @@ -155,9 +162,24 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() {
}""".trimIndent()

val event = objectMapper.readValue(json, PunsjEventDto::class.java)

k9PunsjEventHandler.prosesser(event)

// V1
val oppgaveModell = oppgaveRepository.hent(UUID.fromString(event.eksternId.toString()))
assertTrue { oppgaveModell.journalførtTidspunkt != null }

// V3
val oppgaveV3 = hentV3Oppgave(event)
assertThat(oppgaveV3.felter.find { it.eksternId == "journalfort" }!!.verdi).isEqualTo("true")
}

private fun hentV3Oppgave(event: PunsjEventDto): Oppgave {
return transactionalManager.transaction { tx ->
oppgaveV3Repository.hentNyesteOppgaveForEksternId(
tx,
"K9",
event.eksternId.toString()
)
}
}
}
Loading