Skip to content

Commit

Permalink
Start periode hvis formidlingsgruppe=ARBS og bruker ikke har aktiv pe…
Browse files Browse the repository at this point in the history
…riode
  • Loading branch information
maccyber committed Dec 15, 2023
1 parent 688e20e commit 72ead91
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,18 @@ class ArbeidssokerperiodeService(
}

fun behandleFormidlingsgruppeEvent(formidlingsgruppeEndretEvent: FormidlingsgruppeEndretEvent) {
if (formidlingsgruppeEndretEvent.erArbeidssoker()) {
return
}

val bruker = userService.finnBrukerGjennomPdlForSystemkontekst(formidlingsgruppeEndretEvent.foedselsnummer)
val aktivPeriode = hentAktivPeriode(bruker) ?: return
val aktivPeriode = hentAktivPeriode(bruker)

if (aktivPeriode.foedselsnummer != bruker.gjeldendeFoedselsnummer) {
// TODO skal vi i dette tilfellet oppdatere fødselsnummeret på perioden?
logger.warn("Avslutter periode for person som har et annet gjeldende fødselsnummer enn den aktive perioden")
// Hvis formidlingsgruppeevent == "ARBS" og bruker har inaktiv periode, så starter vi perioden
if (formidlingsgruppeEndretEvent.erArbeidssoker() && aktivPeriode == null) {
repository.startPeriode(bruker.gjeldendeFoedselsnummer, LocalDateTime.now())
return
}
// Hvis formidlingsgruppeevent != "ARBS" og bruker har aktiv periode, så avslutter vi perioden
if (aktivPeriode != null && !formidlingsgruppeEndretEvent.erArbeidssoker()) {
repository.avsluttPeriode(id = aktivPeriode.id, LocalDateTime.now())
}

repository.avsluttPeriode(id = aktivPeriode.id, LocalDateTime.now())
}

fun hentPerioder(bruker: Bruker): List<Periode> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package no.nav.fo.veilarbregistrering.arbeidssoker

import io.mockk.*
import io.mockk.Runs
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import io.mockk.verify
import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeEndretEventTestdataBuilder.formidlingsgruppeEndret
import no.nav.fo.veilarbregistrering.bruker.AktorId
import no.nav.fo.veilarbregistrering.bruker.Bruker
Expand Down Expand Up @@ -45,7 +49,11 @@ internal class ArbeidssokerperiodeServiceTest {
}

@Test
fun `gjør ingenting hvis ikke formidlingsgruppe er ISERV eller IARBS`() {
fun `gjør ingenting hvis aktiv periode og ikke formidlingsgruppe er ISERV eller IARBS`() {
every { userService.finnBrukerGjennomPdlForSystemkontekst(any()) } returns
Bruker(Foedselsnummer("12345678910"), AktorId("1234"), emptyList())
every { repository.hentPerioder(any(), any()) } returns
listOf(ArbeidssokerperiodeDto(1, Foedselsnummer("12345678910"), LocalDateTime.now()))
every { repository.avsluttPeriode(any<Int>(), any()) } just Runs
service.behandleFormidlingsgruppeEvent(formidlingsgruppeEndretEvent = formidlingsgruppeEndret(LocalDateTime.now(), formidlingsgruppe = "ARBS"))
verify(exactly = 0) { repository.avsluttPeriode(any<Int>(), any()) }
Expand Down Expand Up @@ -76,4 +84,27 @@ internal class ArbeidssokerperiodeServiceTest {
verify(exactly = 1) { repository.avsluttPeriode(any<Int>(), any()) }
}

@Test
fun `skal starte periode for bruker`() {
every { userService.finnBrukerGjennomPdlForSystemkontekst(any()) } returns
Bruker(Foedselsnummer("12345678910"), AktorId("1234"), emptyList())
every { repository.startPeriode(any<Foedselsnummer>(), any()) } just Runs
every { repository.hentPerioder(Foedselsnummer("12345678910"), any()) } returns emptyList()

service.behandleFormidlingsgruppeEvent(formidlingsgruppeEndretEvent = formidlingsgruppeEndret(LocalDateTime.now(), formidlingsgruppe = "ARBS"))
verify(exactly = 1) { repository.startPeriode(any<Foedselsnummer>(), any()) }
}

@Test
fun `skal ikke starte periode for bruker hvis formidlingsgruppe ARBS og har en aktiv periode`() {
every { userService.finnBrukerGjennomPdlForSystemkontekst(any()) } returns
Bruker(Foedselsnummer("12345678910"), AktorId("1234"), emptyList())
every { repository.startPeriode(any<Foedselsnummer>(), any()) } just Runs
every { repository.hentPerioder(Foedselsnummer("12345678910"), any()) } returns
listOf(ArbeidssokerperiodeDto(1, Foedselsnummer("12345678910"), LocalDateTime.now()))

service.behandleFormidlingsgruppeEvent(formidlingsgruppeEndretEvent = formidlingsgruppeEndret(LocalDateTime.now(), formidlingsgruppe = "ARBS"))
verify(exactly = 0) { repository.startPeriode(any<Foedselsnummer>(), any()) }
}

}

0 comments on commit 72ead91

Please sign in to comment.