Skip to content
This repository has been archived by the owner on Nov 5, 2024. It is now read-only.

Commit

Permalink
f Legger til støtte for å håndtere ARBS - ARBS samme dag.
Browse files Browse the repository at this point in the history
Hvis bruker først starter en periode som en følge av Ordinær registrering, og senere får en formidlingsgruppeEvent med ARBS samme dag, så forkaster vi den siste meldingen.

PS! Dersom meldingene ikke kommer samme dag, vil perioden avsluttes med dagen før, og ny periode startes med dagens dato.
  • Loading branch information
tlheen committed Jan 31, 2023
1 parent 2d2ba42 commit dc1ef22
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ class Arbeidssoker {

private fun ikkeHarTidligerePerioder(): Boolean = arbeidssokerperioder.isEmpty()

private fun sistePeriodeStartetSammeDag(opprettetTidspunkt: LocalDateTime): Boolean =
sistePeriode()!!.fraDato.toLocalDate() == opprettetTidspunkt.toLocalDate()

internal fun sistePeriode(): Arbeidssokerperiode? {
if (arbeidssokerperioder.isEmpty()) return null
return arbeidssokerperioder.sortedBy { it.fraDato }.last()
Expand Down Expand Up @@ -102,14 +105,19 @@ class Arbeidssoker {

override fun behandle(arbeidssoker: Arbeidssoker, formidlingsgruppeEndretEvent: FormidlingsgruppeEndret) {
if (formidlingsgruppeEndretEvent.formidlingsgruppe().erArbeidssoker()) {
if (arbeidssoker.sistePeriodeStartetSammeDag(formidlingsgruppeEndretEvent.opprettetTidspunkt())) {
logger.info("${arbeidssoker.id()} - Avviser formidlingsgruppeendretEvent (ARBS) fordi vi allerede har startet " +
"arbeidssøkerperiode samme dag ((${formater(formidlingsgruppeEndretEvent.opprettetTidspunkt())})")
return
}
logger.info("${arbeidssoker.id()} - Avslutter (${formater(formidlingsgruppeEndretEvent.opprettetTidspunkt())}) " +
"arbeidssøkerperiode, og starter samtidig en ny som følge av " +
"${formidlingsgruppeEndretEvent.formidlingsgruppe()} fordi arbeidssøker allerede var aktiv")
arbeidssoker.avsluttGammelOgStartNyPeriode(formidlingsgruppeEndretEvent.opprettetTidspunkt())
arbeidssoker nyTilstand AktivArbeidssokerState

} else {
if (arbeidssoker.sistePeriode()!!.fraDato.toLocalDate() == formidlingsgruppeEndretEvent.opprettetTidspunkt().toLocalDate()) {
if (arbeidssoker.sistePeriodeStartetSammeDag(formidlingsgruppeEndretEvent.opprettetTidspunkt())) {
logger.warn("${arbeidssoker.id()} - Dropper siste periode som følge av at vi mottar " +
"${formidlingsgruppeEndretEvent.formidlingsgruppe()} samme dag " +
"${formater(formidlingsgruppeEndretEvent.opprettetTidspunkt())} som perioden ble startet.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,19 +97,33 @@ class ArbeidssokerTest {
}

@Test
fun `skal avslutte og starte ny periode når vi mottar formidlingsgruppeendring med ARBS og arbeidsøker allerede er aktiv`() {
fun `skal avslutte og starte ny periode når vi mottar formidlingsgruppeendring med ARBS og arbeidsøker har vært aktiv i mer enn en dag`() {
val nyRegistreringsdato = LocalDateTime.now().minusMonths(1)
val nyRegistrering = gyldigBrukerRegistrering(opprettetDato = nyRegistreringsdato)
arbeidssoker.behandle(nyRegistrering)

val formidlingsgruppeEndringEvent = formidlingsgruppeEndret(nyRegistreringsdato.plusMinutes(5))
val formidlingsgruppeEndringEvent = formidlingsgruppeEndret(nyRegistreringsdato.plusDays(3).plusMinutes(5))
arbeidssoker.behandle(formidlingsgruppeEndringEvent)

assertEquals(2, arbeidssoker.allePerioder().size)
assertEquals(formidlingsgruppeEndringEvent.formidlingsgruppeEndret.toLocalDate().minusDays(1), arbeidssoker.allePerioder().get(0).tilDato?.toLocalDate())
assertEquals(Arbeidssokerperiode(formidlingsgruppeEndringEvent.formidlingsgruppeEndret, null), arbeidssoker.sistePeriode())
}

@Test
fun `skal forkaste formidlingsgruppeendring med ARBS når arbeidsøkerperiode ble startet tidligere samme dag`() {
val nyRegistreringsdato = LocalDateTime.now().minusMonths(1)
val nyRegistrering = gyldigBrukerRegistrering(opprettetDato = nyRegistreringsdato)
arbeidssoker.behandle(nyRegistrering)

val formidlingsgruppeEndringEvent = formidlingsgruppeEndret(nyRegistreringsdato.plusMinutes(5))
arbeidssoker.behandle(formidlingsgruppeEndringEvent)

assertEquals(1, arbeidssoker.allePerioder().size)
assertEquals(Arbeidssokerperiode(nyRegistreringsdato, null), arbeidssoker.sistePeriode())
}


@Test
fun `skal avslutte gjeldende arbeidssøkerperiode etter formidlingsgruppe med ISERV når arbeidssøker er aktiv`() {
val nyRegistreringsdato = LocalDateTime.now().minusMonths(1)
Expand Down

0 comments on commit dc1ef22

Please sign in to comment.