From 2bf07abbaf70369095579916eb78cbd0a47d23c8 Mon Sep 17 00:00:00 2001 From: Martine Enger Date: Wed, 22 Feb 2023 13:41:53 +0100 Subject: [PATCH] r All funksjonalitet for publisering av periode avsluttet-hendelse skal skje i observer-klassen. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fjerner også metrikker for sammenligning av meldekort-data med avslutning da ingen bruker disse metrikkene lenger --- .../FormidlingsgruppeMottakService.kt | 20 --- .../ArbeidssokerperiodeAvsluttetProducer.kt | 11 -- .../ArbeidssokerperiodeAvsluttetService.kt | 51 ------ .../config/ServiceBeansConfig.kt | 11 -- .../FormidlingsgruppeMottakServiceTest.kt | 9 +- ...ArbeidssokerperiodeAvsluttetServiceTest.kt | 155 ------------------ .../FormidlingsgruppeMottakServiceIT.kt | 136 --------------- 7 files changed, 3 insertions(+), 390 deletions(-) delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetService.kt delete mode 100644 src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetServiceTest.kt delete mode 100644 src/test/kotlin/no/nav/veilarbregistrering/integrasjonstest/FormidlingsgruppeMottakServiceIT.kt diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakService.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakService.kt index b34f22309..6417c0069 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakService.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakService.kt @@ -1,11 +1,8 @@ package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe -import no.nav.common.featuretoggle.UnleashClient import no.nav.fo.veilarbregistrering.aktorIdCache.AktorIdCacheService import no.nav.fo.veilarbregistrering.arbeidssoker.Arbeidssoker import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperiodeAvsluttetProducer -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperiodeAvsluttetService -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.Arbeidssokerperioder import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.PopulerArbeidssokerperioderService import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer import no.nav.fo.veilarbregistrering.log.logger @@ -16,7 +13,6 @@ import java.time.LocalDateTime @Service class FormidlingsgruppeMottakService( private val formidlingsgruppeRepository: FormidlingsgruppeRepository, - private val arbeidssokerperiodeAvsluttetService: ArbeidssokerperiodeAvsluttetService, private val aktorIdCacheService: AktorIdCacheService, private val populerArbeidssokerperioderService: PopulerArbeidssokerperioderService, private val arbeidssokerperiodeAvsluttetProducer: ArbeidssokerperiodeAvsluttetProducer @@ -42,9 +38,7 @@ class FormidlingsgruppeMottakService( return } - val eksisterendeArbeidssokerperioderLokalt = hentArbeidssøkerperioder(formidlingsgruppeEndretEvent) val arbeidssøker = hentArbeidssøker(formidlingsgruppeEndretEvent.foedselsnummer) - formidlingsgruppeRepository.lagre(formidlingsgruppeEndretEvent) try { @@ -53,23 +47,9 @@ class FormidlingsgruppeMottakService( logger.warn("Klarte ikke populere aktørid-cache for innkommende formidlingsgruppe", e) } - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode( - formidlingsgruppeEndretEvent, - eksisterendeArbeidssokerperioderLokalt - ) - behandle(arbeidssøker, formidlingsgruppeEndretEvent) } - private fun hentArbeidssøkerperioder(formidlingsgruppeEndretEvent: FormidlingsgruppeEndretEvent): Arbeidssokerperioder { - val eksisterendeFormidlingsgruppeEndretEvents = - formidlingsgruppeRepository.finnFormidlingsgruppeEndretEventFor( - listOf(formidlingsgruppeEndretEvent.foedselsnummer) - ) - - return ArbeidssokerperioderMapper.map(eksisterendeFormidlingsgruppeEndretEvents) - } - private fun hentArbeidssøker(foedselsnummer: Foedselsnummer): Arbeidssoker? { return try { val arbeidssøker = populerArbeidssokerperioderService.hentArbeidssøker(foedselsnummer) diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetProducer.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetProducer.kt index 3b5ae2bd4..d8336d3cd 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetProducer.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetProducer.kt @@ -4,7 +4,6 @@ import no.nav.fo.veilarbregistrering.arbeidssoker.ArbeidssøkerDomainEvent import no.nav.fo.veilarbregistrering.arbeidssoker.ArbeidssøkerperiodeAvsluttetEvent import no.nav.fo.veilarbregistrering.arbeidssoker.ArbeidssøkerperiodeStartetEvent import no.nav.fo.veilarbregistrering.arbeidssoker.Observer -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeEndretEvent import no.nav.fo.veilarbregistrering.log.logger class ArbeidssokerperiodeAvsluttetProducer: Observer { @@ -24,14 +23,4 @@ class ArbeidssokerperiodeAvsluttetProducer: Observer { logger.info("Avslutter en eksisterende arbeidssøkerperiode ${arbeidssøkerperiodeAvsluttetEvent.tilOgMedDato}") } - fun publiserArbeidssokerperiodeAvsluttet( - formidlingsgruppeEndretEvent: FormidlingsgruppeEndretEvent, - sisteArbeidssokerperiode: Arbeidssokerperiode - ) { - - logger.info("Ny formidlingsgruppe for person: ${formidlingsgruppeEndretEvent.formidlingsgruppe} - " + - "arbeidssøkerperiode avsluttet ${formidlingsgruppeEndretEvent.formidlingsgruppeEndret}. " + - "Nyeste arbeidssøkerperiode før denne endringen er: $sisteArbeidssokerperiode.") - } - } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetService.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetService.kt deleted file mode 100644 index 2511539cd..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetService.kt +++ /dev/null @@ -1,51 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.perioder - -import io.micrometer.core.instrument.Tag -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeEndretEvent -import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.MeldekortService -import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer -import no.nav.fo.veilarbregistrering.metrics.Events -import no.nav.fo.veilarbregistrering.metrics.MetricsService - -class ArbeidssokerperiodeAvsluttetService( - private val arbeidssokerperiodeAvsluttetProducer: ArbeidssokerperiodeAvsluttetProducer, - private val meldekortService: MeldekortService, - private val metricsService: MetricsService -) { - - fun behandleAvslutningAvArbeidssokerperiode( - formidlingsgruppeEndretEvent: FormidlingsgruppeEndretEvent, - arbeidssokerperioder: Arbeidssokerperioder - ) { - arbeidssokerperioder.nyestePeriode()?.let { - if (it.erGjeldende() && formidlingsgruppeEndretEvent.formidlingsgruppe.kode != "ARBS") { - arbeidssokerperiodeAvsluttetProducer.publiserArbeidssokerperiodeAvsluttet( - formidlingsgruppeEndretEvent, - it - ) - - sammenlignAvslutningMedMeldekortData(formidlingsgruppeEndretEvent.foedselsnummer) - } - } - } - - private fun sammenlignAvslutningMedMeldekortData(fnr: Foedselsnummer) { - val sisteMeldekort = meldekortService.hentSisteMeldekort(fnr) - - if (sisteMeldekort != null) { - val sendtSiste14Dager = sisteMeldekort.erSendtInnSiste14Dager() - - metricsService.registrer( - Events.AVSLUTNING_PERIODE_MELDEKORT, - Tag.of("erArbeidssokerNestePeriode", sisteMeldekort.erArbeidssokerNestePeriode.toString()), - Tag.of("sendtSiste14Dager", sendtSiste14Dager.toString()), - Tag.of("harInnsendteMeldekort", "true") - ) - } else { - metricsService.registrer( - Events.AVSLUTNING_PERIODE_MELDEKORT, - Tag.of("harInnsendteMeldekort", "false") - ) - } - } -} diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt index be5e36252..dd1d9178a 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt @@ -15,7 +15,6 @@ import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.MeldekortService import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.resources.MeldekortResource import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerService import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperiodeAvsluttetProducer -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperiodeAvsluttetService import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.PopulerArbeidssokerperioderService import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.resources.ArbeidssokerResource import no.nav.fo.veilarbregistrering.autorisasjon.TilgangskontrollService @@ -325,28 +324,18 @@ class ServiceBeansConfig { @Bean fun formidlingsgruppeMottakService( formidlingsgruppeRepository: FormidlingsgruppeRepository, - arbeidssokerperiodeAvsluttetService: ArbeidssokerperiodeAvsluttetService, aktorIdCacheService: AktorIdCacheService, populerArbeidssokerperioderService: PopulerArbeidssokerperioderService, arbeidssokerperiodeAvsluttetProducer: ArbeidssokerperiodeAvsluttetProducer ): FormidlingsgruppeMottakService { return FormidlingsgruppeMottakService( formidlingsgruppeRepository, - arbeidssokerperiodeAvsluttetService, aktorIdCacheService, populerArbeidssokerperioderService, arbeidssokerperiodeAvsluttetProducer ) } - @Bean - fun arbeidssokerperiodeAvsluttetService( - arbeidssokerperiodeAvsluttetProducer: ArbeidssokerperiodeAvsluttetProducer, - meldekortService: MeldekortService, - metricsService: MetricsService - ): ArbeidssokerperiodeAvsluttetService = - ArbeidssokerperiodeAvsluttetService(arbeidssokerperiodeAvsluttetProducer, meldekortService, metricsService) - @Bean fun arbeidssokerperiodeAvsluttetProducer(): ArbeidssokerperiodeAvsluttetProducer = ArbeidssokerperiodeAvsluttetProducer() diff --git a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakServiceTest.kt b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakServiceTest.kt index a8109786f..26a6c3239 100644 --- a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakServiceTest.kt +++ b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeMottakServiceTest.kt @@ -1,8 +1,9 @@ package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe -import io.mockk.* +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeEndretEventTestdataBuilder.testEvent -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperiodeAvsluttetService import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.time.LocalDateTime @@ -11,16 +12,12 @@ import java.time.Month class FormidlingsgruppeMottakServiceTest { private lateinit var formidlingsgruppeMottakService: FormidlingsgruppeMottakService private lateinit var formidlingsgruppeRepository: FormidlingsgruppeRepository - private lateinit var arbeidssokerperiodeAvsluttetService: ArbeidssokerperiodeAvsluttetService @BeforeEach fun setup() { formidlingsgruppeRepository = mockk() - arbeidssokerperiodeAvsluttetService = mockk() - every { arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(any(), any()) } just Runs formidlingsgruppeMottakService = FormidlingsgruppeMottakService( formidlingsgruppeRepository, - arbeidssokerperiodeAvsluttetService, mockk(relaxed = true), mockk(relaxed = true), mockk(relaxed = true) diff --git a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetServiceTest.kt b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetServiceTest.kt deleted file mode 100644 index ef8cef914..000000000 --- a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerperiodeAvsluttetServiceTest.kt +++ /dev/null @@ -1,155 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.perioder - -import io.micrometer.core.instrument.Tag -import io.mockk.* -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.Formidlingsgruppe -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeEndretEvent -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.Operation -import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.MeldekortEvent -import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.MeldekortPeriode -import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.MeldekortService -import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.Meldekorttype -import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer -import no.nav.fo.veilarbregistrering.bruker.FoedselsnummerTestdataBuilder -import no.nav.fo.veilarbregistrering.bruker.Periode -import no.nav.fo.veilarbregistrering.metrics.MetricsService -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test -import java.time.LocalDate -import java.time.LocalDateTime - -internal class ArbeidssokerperiodeAvsluttetServiceTest { - private val arbeidssokerperiodeAvsluttetProducer: ArbeidssokerperiodeAvsluttetProducer = mockk(relaxed = true) - private val meldekortService: MeldekortService = mockk(relaxed = true) - private val metricsService: MetricsService = mockk(relaxed = true) - private val arbeidssokerperiodeAvsluttetService = ArbeidssokerperiodeAvsluttetService(arbeidssokerperiodeAvsluttetProducer, meldekortService, metricsService) - - @BeforeEach - fun setup() { - every { arbeidssokerperiodeAvsluttetProducer.publiserArbeidssokerperiodeAvsluttet(any(), any()) } just Runs - every { meldekortService.hentSisteMeldekort(any()) } returns null - every { metricsService.registrer(any(), *anyVararg()) } just Runs - } - - @Test - fun `Skal publisere hendelse når arbeidssokerperiode går fra ARBS til ISERV`() { - val arbeidssokerperioder = Arbeidssokerperioder(listOf(AVSLUTTET_ARBS, NÅVÆRENDE_ARBS)) - val formidlingsgruppeEventFraArena = endretFormdlingsgruppe(Formidlingsgruppe("ISERV")) - - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(formidlingsgruppeEventFraArena, arbeidssokerperioder) - - verify (exactly = 1) { arbeidssokerperiodeAvsluttetProducer.publiserArbeidssokerperiodeAvsluttet(any(), any()) } - } - - @Test - fun `Skal ikke publisere hendelse når arbeidssokerperiode går fra ARBS til ARBS`() { - val arbeidssokerperioder = Arbeidssokerperioder(listOf(AVSLUTTET_ARBS, NÅVÆRENDE_ARBS)) - val formidlingsgruppeEventFraArena = endretFormdlingsgruppe(Formidlingsgruppe("ARBS")) - - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(formidlingsgruppeEventFraArena, arbeidssokerperioder) - - verify(exactly = 0) { arbeidssokerperiodeAvsluttetProducer.publiserArbeidssokerperiodeAvsluttet(any(), any()) } - } - - @Test - fun `Skal ikke publisere hendelse når arbeidssokerperiode med ARBS allerede er avsluttet`() { - val arbeidssokerperioder = Arbeidssokerperioder(listOf(AVSLUTTET_ARBS)) - val formidlingsgruppeEventFraArena = endretFormdlingsgruppe(Formidlingsgruppe("ISERV")) - - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(formidlingsgruppeEventFraArena, arbeidssokerperioder) - - verify(exactly = 0) { arbeidssokerperiodeAvsluttetProducer.publiserArbeidssokerperiodeAvsluttet(any(), any()) } - } - - @Test - fun `Skal ikke publisere hendelse når bruker ikke har noen arbeidssøkerperioder fra før`() { - val arbeidssokerperioder = Arbeidssokerperioder(emptyList()) - val formidlingsgruppeEventFraArena = endretFormdlingsgruppe(Formidlingsgruppe("ISERV")) - - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(formidlingsgruppeEventFraArena, arbeidssokerperioder) - - verify(exactly = 0) { arbeidssokerperiodeAvsluttetProducer.publiserArbeidssokerperiodeAvsluttet(any(), any()) } - } - - @Test - fun `Skal publisere event med rett tag når bruker ikke har meldekort`() { - val arbeidssokerperioder = Arbeidssokerperioder(listOf(AVSLUTTET_ARBS, NÅVÆRENDE_ARBS)) - val formidlingsgruppeEventFraArena = endretFormdlingsgruppe(Formidlingsgruppe("ISERV")) - - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(formidlingsgruppeEventFraArena, arbeidssokerperioder) - - verify(exactly = 1) { metricsService.registrer(any(), Tag.of("harInnsendteMeldekort", "false")) } - } - - @Test - fun `Skal publisere event med korrekt tag når bruker svart ja på spørsmål 5`() { - every { meldekortService.hentSisteMeldekort(any()) } returns MeldekortEvent( - FoedselsnummerTestdataBuilder.aremark(), - true, - MeldekortPeriode( - LocalDate.now(), - LocalDate.now() - ), - Meldekorttype.MANUELL_ARENA, - 1, - LocalDateTime.now() - ) - val arbeidssokerperioder = Arbeidssokerperioder(listOf(AVSLUTTET_ARBS, NÅVÆRENDE_ARBS)) - val formidlingsgruppeEventFraArena = endretFormdlingsgruppe(Formidlingsgruppe("ISERV")) - - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(formidlingsgruppeEventFraArena, arbeidssokerperioder) - - verify(exactly = 1) { metricsService.registrer(any(), - Tag.of("erArbeidssokerNestePeriode", "true"), - Tag.of("sendtSiste14Dager", "true"), - Tag.of("harInnsendteMeldekort", "true") - ) } - } - - @Test - fun `Skal publisere event med korrekt tag når bruker svart nei på spørsmål 5`() { - every { meldekortService.hentSisteMeldekort(any()) } returns MeldekortEvent( - FoedselsnummerTestdataBuilder.aremark(), - false, - MeldekortPeriode( - LocalDate.now(), - LocalDate.now() - ), - Meldekorttype.MANUELL_ARENA, - 1, - LocalDateTime.now() - ) - val arbeidssokerperioder = Arbeidssokerperioder(listOf(AVSLUTTET_ARBS, NÅVÆRENDE_ARBS)) - val formidlingsgruppeEventFraArena = endretFormdlingsgruppe(Formidlingsgruppe("ISERV")) - - arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(formidlingsgruppeEventFraArena, arbeidssokerperioder) - - verify(exactly = 1) { metricsService.registrer(any(), - Tag.of("erArbeidssokerNestePeriode", "false"), - Tag.of("sendtSiste14Dager", "true"), - Tag.of("harInnsendteMeldekort", "true") - ) } - } - - private fun endretFormdlingsgruppe(formidlingsgruppe: Formidlingsgruppe): FormidlingsgruppeEndretEvent { - return FormidlingsgruppeEndretEvent( - Foedselsnummer("10108000398"), - "123456", - "AKTIV", - Operation.UPDATE, - formidlingsgruppe, - LocalDateTime.now(), - null, - null - ) - } - - companion object { - val AVSLUTTET_ARBS = Arbeidssokerperiode( - Periode(LocalDate.of(2020, 1, 1), LocalDate.of(2020, 1, 31)) - ) - val NÅVÆRENDE_ARBS = Arbeidssokerperiode( - Periode(LocalDate.of(2020, 2, 1), null) - ) - } -} \ No newline at end of file diff --git a/src/test/kotlin/no/nav/veilarbregistrering/integrasjonstest/FormidlingsgruppeMottakServiceIT.kt b/src/test/kotlin/no/nav/veilarbregistrering/integrasjonstest/FormidlingsgruppeMottakServiceIT.kt deleted file mode 100644 index 7c8bf9ed6..000000000 --- a/src/test/kotlin/no/nav/veilarbregistrering/integrasjonstest/FormidlingsgruppeMottakServiceIT.kt +++ /dev/null @@ -1,136 +0,0 @@ -package no.nav.veilarbregistrering.integrasjonstest - -import io.mockk.* -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.* -import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer -import no.nav.fo.veilarbregistrering.config.db.DatabaseConfig -import no.nav.fo.veilarbregistrering.config.db.RepositoryConfig -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperiodeAvsluttetService -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.Arbeidssokerperioder -import org.junit.jupiter.api.AfterEach -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase -import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import org.springframework.jdbc.core.JdbcTemplate -import org.springframework.test.context.ContextConfiguration -import org.springframework.test.jdbc.JdbcTestUtils -import java.time.LocalDateTime -import kotlin.test.assertEquals - -@JdbcTest -@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) -@ContextConfiguration(classes = [DatabaseConfig::class, RepositoryConfig::class, FormidlingsgruppeMottakServiceIT.ArbeidssokerConfigTest::class]) -internal class FormidlingsgruppeMottakServiceIT @Autowired constructor( - private val formidlingsgruppeMottakService: FormidlingsgruppeMottakService, - private val arbeidssokerperiodeAvsluttetService: ArbeidssokerperiodeAvsluttetService, - private val formidlingsgruppeRepository: FormidlingsgruppeRepository, - private val jdbcTemplate: JdbcTemplate, -) { - @BeforeEach - fun setup() { - clearAllMocks() - } - - @AfterEach - fun tearDown() { - JdbcTestUtils.deleteFromTables(jdbcTemplate, "FORMIDLINGSGRUPPE") - } - - @Test - fun `skal hente opp eksisterende arbeidssøkerperioder før ny formidlingsgruppe persisteres`() { - eksisterendeFormidlingsgrupper.map { formidlingsgruppeRepository.lagre(it) } - val eksisterendeArbeidssokerPerioder = ArbeidssokerperioderMapper.map(formidlingsgruppeRepository.finnFormidlingsgruppeEndretEventFor(listOf(fnr))) - val nyttFormidlingsgruppeEndretEvent = FormidlingsgruppeEndretEvent( - foedselsnummer = fnr, - personId = pid, - personIdStatus = "AKTIV", - operation = Operation.INSERT, - formidlingsgruppe = Formidlingsgruppe("ISERV"), - formidlingsgruppeEndret = third.plusDays(3), - forrigeFormidlingsgruppe = null, - forrigeFormidlingsgruppeEndret = null - ) - - val arbeidssokerperioderSlot = slot() - every { arbeidssokerperiodeAvsluttetService.behandleAvslutningAvArbeidssokerperiode(any(), capture(arbeidssokerperioderSlot)) } just Runs - - formidlingsgruppeMottakService.behandle(nyttFormidlingsgruppeEndretEvent) - - assertEquals(eksisterendeArbeidssokerPerioder, arbeidssokerperioderSlot.captured) - } - - @Configuration - class ArbeidssokerConfigTest { - - @Bean - fun arbeidssokerperiodeAvsluttetService(): ArbeidssokerperiodeAvsluttetService = mockk(relaxed = true) - - @Bean - fun formidlingsgruppeMottakService( - formidlingsgruppeRepository: FormidlingsgruppeRepository, - arbeidssokerperiodeAvsluttetService: ArbeidssokerperiodeAvsluttetService, - ): FormidlingsgruppeMottakService = FormidlingsgruppeMottakService( - formidlingsgruppeRepository, - arbeidssokerperiodeAvsluttetService, - mockk(relaxed = true), - mockk(relaxed = true), - mockk(relaxed = true) - ) - } - - companion object { - private const val pid = "41131" - private val fnr = Foedselsnummer("10067924594") - private val first = LocalDateTime.of(2020, 5, 1, 3, 5, 1) - private val second = LocalDateTime.of(2020, 8, 3, 7, 25, 1) - private val third = LocalDateTime.of(2021, 10, 21, 13, 15, 1) - - private val eksisterendeFormidlingsgrupper = listOf( - FormidlingsgruppeEndretEvent( - fnr, - pid, - "AKTIV", - Operation.INSERT, - Formidlingsgruppe("ISERV"), - first, - null, - null - ), - FormidlingsgruppeEndretEvent( - fnr, - pid, - "AKTIV", - Operation.INSERT, - Formidlingsgruppe("ARBS"), - first.plusSeconds(1), - null, - null - ), - FormidlingsgruppeEndretEvent( - fnr, - pid, - "AKTIV", - Operation.INSERT, - Formidlingsgruppe("ISERV"), - second, - null, - null - ), - FormidlingsgruppeEndretEvent( - fnr, - pid, - "AKTIV", - Operation.INSERT, - Formidlingsgruppe("ARBS"), - third, - Formidlingsgruppe("ISERV"), - second - ), - - ) - } -} \ No newline at end of file