From ac75e4435be14d1e89c9e31f45acfe894492381e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sigurd=20Gr=C3=B8neng?= Date: Tue, 3 Oct 2023 15:03:37 +0200 Subject: [PATCH] Test flere akaas kilder (#705) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Test flere akaas kilder * ignorer acl meldinger på aktiviteter som er tatt over av annet team --------- Co-authored-by: johannetronstad --- .../dto/KafkaAktivitetskortWrapperDTO.kt | 19 ++++ .../service/AktivitetskortService.kt | 10 +- .../service/UpsertActionResult.kt | 3 +- .../BrukernotifikasjonTest.java | 7 +- .../kvp/KvpAvsluttetKafkaConsumerTest.java | 3 +- .../AktiviteterTilKafkaAivenServiceTest.java | 4 +- .../AktivitetskortConsumerIntegrationTest.kt | 104 +++++++++++------- .../AktivitetskortProducerUtil.kt | 12 +- .../aktivitetskort/AktivitetskortSerie.kt | 4 +- .../aktivitetskort/AktivitetskortUtil.kt | 26 ----- 10 files changed, 111 insertions(+), 81 deletions(-) diff --git a/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/dto/KafkaAktivitetskortWrapperDTO.kt b/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/dto/KafkaAktivitetskortWrapperDTO.kt index e3998b936..f2351466f 100644 --- a/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/dto/KafkaAktivitetskortWrapperDTO.kt +++ b/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/dto/KafkaAktivitetskortWrapperDTO.kt @@ -2,6 +2,7 @@ package no.nav.veilarbaktivitet.aktivitetskort.dto import com.fasterxml.jackson.annotation.JsonProperty import no.nav.veilarbaktivitet.aktivitetskort.ActionType +import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.MessageSource import java.util.* data class KafkaAktivitetskortWrapperDTO( @@ -16,5 +17,23 @@ data class KafkaAktivitetskortWrapperDTO( actionType = ActionType.UPSERT_AKTIVITETSKORT_V1, messageId = messageId ) { + + constructor( + payload: Aktivitetskort, + messageId: UUID = UUID.randomUUID(), + aktivitetskortType: AktivitetskortType, + source: MessageSource + ): this( + aktivitetskortType, + payload, + source.name, + messageId + ) + + constructor( + payload: Aktivitetskort, + type: AktivitetskortType = AktivitetskortType.ARENA_TILTAK, + source: MessageSource = MessageSource.ARENA_TILTAK_AKTIVITET_ACL + ): this(payload, UUID.randomUUID(), type, source) override fun getAktivitetskortId() = aktivitetskort.id } diff --git a/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/AktivitetskortService.kt b/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/AktivitetskortService.kt index 7209a1fac..e25355ecc 100644 --- a/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/AktivitetskortService.kt +++ b/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/AktivitetskortService.kt @@ -11,6 +11,7 @@ import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortMapper.toAktivitetsD import no.nav.veilarbaktivitet.aktivitetskort.bestilling.AktivitetskortBestilling import no.nav.veilarbaktivitet.aktivitetskort.bestilling.ArenaAktivitetskortBestilling import no.nav.veilarbaktivitet.aktivitetskort.bestilling.EksternAktivitetskortBestilling +import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.MessageSource import no.nav.veilarbaktivitet.aktivitetskort.feil.AktivitetsKortFunksjonellException import no.nav.veilarbaktivitet.aktivitetskort.feil.ManglerOppfolgingsperiodeFeil import no.nav.veilarbaktivitet.aktivitetskort.feil.UlovligEndringFeil @@ -40,6 +41,11 @@ class AktivitetskortService( // Arenaaktiviteter er blitt "ekstern"-aktivitet etter de har blitt opprettet val oppdatertAktivitet = when { bestilling is ArenaAktivitetskortBestilling -> { + if(gammelAktivitet.eksternAktivitetData.source != MessageSource.ARENA_TILTAK_AKTIVITET_ACL.name) { + log.info("Aktivitet tatt over av annet team. Ignorerer melding fra aktivitet arena acl $id") + return UpsertActionResult.IGNORER + + } arenaAktivitetskortService.oppdaterAktivitet( bestilling, gammelAktivitet) @@ -135,7 +141,7 @@ class AktivitetskortService( aktivitetsMessageDAO.updateActionResult(messageId, upsertActionResult, reason) } - fun hentAktivitetskortByFunksjonellId(funksjonellId: UUID): Optional { - return aktivitetDAO.hentAktivitetByFunksjonellId(funksjonellId) + fun hentAktivitetskortByFunksjonellId(funksjonellId: UUID): AktivitetData { + return aktivitetDAO.hentAktivitetByFunksjonellId(funksjonellId).get() } } diff --git a/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/UpsertActionResult.kt b/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/UpsertActionResult.kt index 2330cdfc0..190459a06 100644 --- a/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/UpsertActionResult.kt +++ b/src/main/kotlin/no/nav/veilarbaktivitet/aktivitetskort/service/UpsertActionResult.kt @@ -4,5 +4,6 @@ enum class UpsertActionResult { OPPDATER, OPPRETT, KASSER, - FUNKSJONELL_FEIL + FUNKSJONELL_FEIL, + IGNORER } diff --git a/src/test/java/no/nav/veilarbaktivitet/brukernotifikasjon/BrukernotifikasjonTest.java b/src/test/java/no/nav/veilarbaktivitet/brukernotifikasjon/BrukernotifikasjonTest.java index 3646c4fa6..f562c3c5f 100644 --- a/src/test/java/no/nav/veilarbaktivitet/brukernotifikasjon/BrukernotifikasjonTest.java +++ b/src/test/java/no/nav/veilarbaktivitet/brukernotifikasjon/BrukernotifikasjonTest.java @@ -17,6 +17,7 @@ import no.nav.veilarbaktivitet.aktivitet.mappers.AktivitetDTOMapper; import no.nav.veilarbaktivitet.aktivitetskort.*; import no.nav.veilarbaktivitet.aktivitetskort.dto.AktivitetskortType; +import no.nav.veilarbaktivitet.aktivitetskort.dto.KafkaAktivitetskortWrapperDTO; import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.MessageSource; import no.nav.veilarbaktivitet.arena.model.ArenaId; import no.nav.veilarbaktivitet.avtalt_med_nav.AvtaltMedNavDTO; @@ -367,13 +368,15 @@ void skal_kunne_opprette_brukernotifications_pa_fho_pa_arena_aktiviteter_som_ER_ var mockVeileder = MockNavService.createVeileder(mockBruker); var arenaId = new ArenaId("ARENATA123"); // Opprett ekstern aktivitet - var aktivitetskortMelding = AktivitetskortUtil.aktivitetskortMelding( + var aktivitetskortMelding = new KafkaAktivitetskortWrapperDTO( AktivitetskortUtil.ny( UUID.randomUUID(), AktivitetStatus.GJENNOMFORES, ZonedDateTime.now(), mockBruker - ), AktivitetskortType.ARENA_TILTAK, MessageSource.ARENA_TILTAK_AKTIVITET_ACL + ), + AktivitetskortType.ARENA_TILTAK, + MessageSource.ARENA_TILTAK_AKTIVITET_ACL ); var headers = new ArenaMeldingHeaders(arenaId, "MIDL"); aktivitetTestService.opprettEksterntArenaKort(new ArenaKort(aktivitetskortMelding, headers)); diff --git a/src/test/java/no/nav/veilarbaktivitet/kvp/KvpAvsluttetKafkaConsumerTest.java b/src/test/java/no/nav/veilarbaktivitet/kvp/KvpAvsluttetKafkaConsumerTest.java index 1ee4b1855..a355b47e7 100644 --- a/src/test/java/no/nav/veilarbaktivitet/kvp/KvpAvsluttetKafkaConsumerTest.java +++ b/src/test/java/no/nav/veilarbaktivitet/kvp/KvpAvsluttetKafkaConsumerTest.java @@ -8,6 +8,7 @@ import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortUtil; import no.nav.veilarbaktivitet.aktivitetskort.MigreringService; import no.nav.veilarbaktivitet.aktivitetskort.dto.AktivitetskortType; +import no.nav.veilarbaktivitet.aktivitetskort.dto.KafkaAktivitetskortWrapperDTO; import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.MessageSource; import no.nav.veilarbaktivitet.config.kafka.NavCommonKafkaConfig; import no.nav.veilarbaktivitet.config.kafka.kafkatemplates.KafkaJsonTemplate; @@ -79,7 +80,7 @@ void skal_avbryte_aktiviteter_i_kvp_periode() throws ExecutionException, Interru void skal_ikke_avbryte_eksterne_aktiviteter_i_kvp_periode() throws ExecutionException, InterruptedException, TimeoutException { var aktivitetskort = AktivitetskortUtil.ny(UUID.randomUUID(), AktivitetStatus.PLANLAGT, ZonedDateTime.now(), mockBruker); - var kafkaAktivitetskortWrapperDTO = AktivitetskortUtil.aktivitetskortMelding( + var kafkaAktivitetskortWrapperDTO = new KafkaAktivitetskortWrapperDTO( aktivitetskort, UUID.randomUUID(), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK); aktivitetTestService.opprettEksterntAktivitetsKort(List.of(kafkaAktivitetskortWrapperDTO)); diff --git a/src/test/java/no/nav/veilarbaktivitet/veilarbportefolje/AktiviteterTilKafkaAivenServiceTest.java b/src/test/java/no/nav/veilarbaktivitet/veilarbportefolje/AktiviteterTilKafkaAivenServiceTest.java index 4ea8f7e63..1d67defe8 100644 --- a/src/test/java/no/nav/veilarbaktivitet/veilarbportefolje/AktiviteterTilKafkaAivenServiceTest.java +++ b/src/test/java/no/nav/veilarbaktivitet/veilarbportefolje/AktiviteterTilKafkaAivenServiceTest.java @@ -127,7 +127,7 @@ void skal_ikke_sende_arena_tiltak_til_portefolje() { void skal_sende_nye_lonnstilskudd_til_portefolje() { MockBruker mockBruker = MockNavService.createHappyBruker(); Aktivitetskort aktivitetskort = AktivitetskortUtil.ny(UUID.randomUUID(), AktivitetStatus.PLANLAGT, ZonedDateTime.now(), mockBruker); - KafkaAktivitetskortWrapperDTO wrapper = AktivitetskortUtil.aktivitetskortMelding(aktivitetskort, UUID.randomUUID(), MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK); + KafkaAktivitetskortWrapperDTO wrapper = new KafkaAktivitetskortWrapperDTO(aktivitetskort, UUID.randomUUID(), MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK); aktivitetTestService.opprettEksterntAktivitetsKort(List.of(wrapper)); cronService.sendOppTil5000AktiviterTilPortefolje(); ConsumerRecord portefojeRecord = getSingleRecord(portefoljeConsumer, portefoljeTopic, DEFAULT_WAIT_TIMEOUT_DURATION); @@ -144,7 +144,7 @@ void skal_ikke_sende_tiltak_opprettet_som_historisk() { // Happy bruker har en gammel periode startDato nå-100 dager, sluttDato nå-50 dager UUID funksjonellId = UUID.randomUUID(); Aktivitetskort aktivitetskort = AktivitetskortUtil.ny(funksjonellId, AktivitetStatus.PLANLAGT, ZonedDateTime.now().minusDays(75), mockBruker); - KafkaAktivitetskortWrapperDTO wrapper = AktivitetskortUtil.aktivitetskortMelding(aktivitetskort, funksjonellId, AktivitetskortType.ARENA_TILTAK, MessageSource.ARENA_TILTAK_AKTIVITET_ACL); + KafkaAktivitetskortWrapperDTO wrapper = new KafkaAktivitetskortWrapperDTO(aktivitetskort, funksjonellId, AktivitetskortType.ARENA_TILTAK, MessageSource.ARENA_TILTAK_AKTIVITET_ACL); ArenaId arenaId = new ArenaId("ARENATA123"); String tiltakskode = "MIDLONNTIL"; aktivitetTestService.opprettEksterntArenaKort(new ArenaKort(wrapper, new ArenaMeldingHeaders(arenaId, tiltakskode))); diff --git a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortConsumerIntegrationTest.kt b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortConsumerIntegrationTest.kt index 7a3c6878b..90eb6979b 100644 --- a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortConsumerIntegrationTest.kt +++ b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortConsumerIntegrationTest.kt @@ -15,7 +15,7 @@ import no.nav.veilarbaktivitet.aktivitet.dto.AktivitetTypeDTO import no.nav.veilarbaktivitet.aktivitet.dto.EksternAktivitetDTO import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortProducerUtil.extraFieldRecord import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortProducerUtil.invalidDateFieldRecord -import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortProducerUtil.kafkaAktivitetWrapper +import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortProducerUtil.kafkaArenaAktivitetWrapper import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortProducerUtil.missingFieldRecord import no.nav.veilarbaktivitet.aktivitetskort.bestilling.KasseringsBestilling import no.nav.veilarbaktivitet.aktivitetskort.dto.Aktivitetskort @@ -70,7 +70,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { var messageDAO: AktivitetsMessageDAO? = null @Autowired - var aktivitetskortService: AktivitetskortService? = null + lateinit var aktivitetskortService: AktivitetskortService @Autowired var tiltakMigreringCronService: TiltakMigreringCronService? = null @@ -187,7 +187,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { brukerIdent, IdentType.PERSONBRUKERIDENT )) - val kafkaAktivitetskortWrapperDTO = AktivitetskortUtil.aktivitetskortMelding( + val kafkaAktivitetskortWrapperDTO = KafkaAktivitetskortWrapperDTO( aktivitetskort, UUID.randomUUID(), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK ) aktivitetTestService.opprettEksterntAktivitetsKort(listOf(kafkaAktivitetskortWrapperDTO)) @@ -293,12 +293,12 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { val funksjonellId = UUID.randomUUID() val lonnstilskuddAktivitet = aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT) .copy(avtaltMedNav = true) - val melding1 = AktivitetskortUtil.aktivitetskortMelding( + val melding1 = KafkaAktivitetskortWrapperDTO( lonnstilskuddAktivitet, UUID.randomUUID(), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK ) val lonnstilskuddAktivitetUpdate: Aktivitetskort = aktivitetskort(funksjonellId, AktivitetStatus.GJENNOMFORES) .copy(avtaltMedNav = false) - val melding2 = AktivitetskortUtil.aktivitetskortMelding( + val melding2 = KafkaAktivitetskortWrapperDTO( lonnstilskuddAktivitetUpdate, UUID.randomUUID(), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK ) aktivitetTestService.opprettEksterntAktivitetsKort(listOf(melding1, melding2)) @@ -315,13 +315,13 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { fun oppdater_tiltaksaktivitet_endre_bruker_skal_throwe() { val funksjonellId = UUID.randomUUID() val lonnstilskuddAktivitet = aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT) - val melding1 = AktivitetskortUtil.aktivitetskortMelding( + val melding1 = KafkaAktivitetskortWrapperDTO( lonnstilskuddAktivitet, UUID.randomUUID(), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK ) val mockBruker2 = MockNavService.createHappyBruker() val lonnstilskuddAktivitetUpdate: Aktivitetskort = aktivitetskort(funksjonellId, AktivitetStatus.GJENNOMFORES) .copy(personIdent = mockBruker2.fnr) - val melding2 = AktivitetskortUtil.aktivitetskortMelding( + val melding2 = KafkaAktivitetskortWrapperDTO( lonnstilskuddAktivitetUpdate, UUID.randomUUID(), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK ) aktivitetTestService.opprettEksterntAktivitetsKort(listOf(melding1, melding2)) @@ -338,7 +338,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { fun duplikat_melding_bare_1_opprettet_transaksjon() { val funksjonellId = UUID.randomUUID() val aktivitetskort = aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT) - val kafkaAktivitetskortWrapperDTO = AktivitetskortUtil.aktivitetskortMelding(aktivitetskort, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) + val kafkaAktivitetskortWrapperDTO = KafkaAktivitetskortWrapperDTO(aktivitetskort, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) val context = meldingContext() val producerRecord = aktivitetTestService.makeAktivitetskortProducerRecord(kafkaAktivitetskortWrapperDTO, context) as ProducerRecord @@ -362,9 +362,9 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { @Test fun oppdatering_av_detaljer_gir_riktig_transaksjon() { val funksjonellId = UUID.randomUUID() - val tiltaksaktivitet = AktivitetskortUtil.aktivitetskortMelding( + val tiltaksaktivitet = KafkaAktivitetskortWrapperDTO( aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) - val tiltaksaktivitetEndret = AktivitetskortUtil.aktivitetskortMelding( + val tiltaksaktivitetEndret = KafkaAktivitetskortWrapperDTO( aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT) .copy(detaljer = listOf( Attributt( @@ -386,7 +386,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { @Test fun skal_handtere_ukjent_source() { val funksjonellId = UUID.randomUUID() - val tiltaksaktivitet = AktivitetskortUtil.aktivitetskortMelding( + val tiltaksaktivitet = KafkaAktivitetskortWrapperDTO( aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK).copy(source = "UKJENT_SOURCE") aktivitetTestService.opprettEksterntAktivitetsKort( listOf( @@ -401,10 +401,10 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { @Test fun oppdatering_status_og_detaljer_gir_4_transaksjoner() { val funksjonellId = UUID.randomUUID() - val tiltaksaktivitet: KafkaAktivitetskortWrapperDTO = AktivitetskortUtil.aktivitetskortMelding(aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT) + val tiltaksaktivitet: KafkaAktivitetskortWrapperDTO = KafkaAktivitetskortWrapperDTO(aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT) .copy(avtaltMedNav = false), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) val etikett = Etikett("Fått plass", Sentiment.POSITIVE,"FATT_PLASS") - val tiltaksaktivitetEndret = AktivitetskortUtil.aktivitetskortMelding( + val tiltaksaktivitetEndret = KafkaAktivitetskortWrapperDTO( aktivitetskort(funksjonellId, AktivitetStatus.GJENNOMFORES) .copy(avtaltMedNav = true, etiketter = listOf(etikett)), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) aktivitetTestService.opprettEksterntAktivitetsKort( @@ -464,7 +464,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { "Gammelt navn" ) )) - val tiltaksMelding = AktivitetskortUtil.aktivitetskortMelding(tiltaksaktivitet, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) + val tiltaksMelding = KafkaAktivitetskortWrapperDTO(tiltaksaktivitet, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) val tiltaksaktivitetEndret = aktivitetskort(funksjonellId, AktivitetStatus.PLANLAGT) .copy(detaljer = listOf( Attributt( @@ -472,7 +472,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { nyesteNavn ) )) - val tiltaksMeldingEndret = AktivitetskortUtil.aktivitetskortMelding(tiltaksaktivitetEndret, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) + val tiltaksMeldingEndret = KafkaAktivitetskortWrapperDTO(tiltaksaktivitetEndret, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) aktivitetTestService.opprettEksterntArenaKort( listOf( ArenaKort(tiltaksMelding, context), @@ -593,7 +593,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { @Test fun should_throw_runtime_exception_on_missing_arena_headers() { - var aktivitetWrapper = kafkaAktivitetWrapper(mockBruker.fnrAsFnr) + var aktivitetWrapper = kafkaArenaAktivitetWrapper(mockBruker.fnrAsFnr) aktivitetWrapper = aktivitetWrapper.copy(aktivitetskortType = AktivitetskortType.ARENA_TILTAK) val h1 = RecordHeader("NONSENSE_HEADER", "DUMMYVALUE".toByteArray()) val record = ConsumerRecord( @@ -613,7 +613,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { @Test fun should_throw_runtime_exception_on_missing_messageId() { - val aktivitetWrapper = kafkaAktivitetWrapper(mockBruker.fnrAsFnr) + val aktivitetWrapper = kafkaArenaAktivitetWrapper(mockBruker.fnrAsFnr) .copy(messageId = null, aktivitetskortType = AktivitetskortType.VARIG_LONNSTILSKUDD) val record = ConsumerRecord( topic, @@ -632,7 +632,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { @Test fun should_handle_messageId_in_header() { - var aktivitetWrapper = kafkaAktivitetWrapper(mockBruker.fnrAsFnr) + var aktivitetWrapper = kafkaArenaAktivitetWrapper(mockBruker.fnrAsFnr) aktivitetWrapper = aktivitetWrapper.copy( aktivitetskortType = AktivitetskortType.VARIG_LONNSTILSKUDD, messageId = null @@ -679,8 +679,8 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { "Nytt navn" ) )) - val aktivitetskort = AktivitetskortUtil.aktivitetskortMelding(tiltaksaktivitet, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) - val aktivitetskortOppdatert = AktivitetskortUtil.aktivitetskortMelding(tiltaksaktivitetOppdatert, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) + val aktivitetskort = KafkaAktivitetskortWrapperDTO(tiltaksaktivitet, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) + val aktivitetskortOppdatert = KafkaAktivitetskortWrapperDTO(tiltaksaktivitetOppdatert, AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK) val h1 = RecordHeader( AktivitetsbestillingCreator.HEADER_EKSTERN_REFERANSE_ID, ArenaId("ARENATA123").id().toByteArray() @@ -861,7 +861,7 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { val kontekst = meldingContext(arenata123, "MIDLONNTIL") aktivitetTestService.opprettEksterntArenaKort(listOf(ArenaKort(arenaAktivitet, kontekst))) val midlertidigLonnstilskudd = aktivitetskort(UUID.randomUUID(), AktivitetStatus.PLANLAGT) - val kafkaAktivitetskortWrapperDTO = AktivitetskortUtil.aktivitetskortMelding( + val kafkaAktivitetskortWrapperDTO = KafkaAktivitetskortWrapperDTO( midlertidigLonnstilskudd, UUID.randomUUID(), AktivitetskortType.MIDLERTIDIG_LONNSTILSKUDD, MessageSource.TEAM_TILTAK ) aktivitetTestService.opprettEksterntAktivitetsKort(listOf(kafkaAktivitetskortWrapperDTO)) @@ -970,18 +970,13 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { val tiltaksaktivitet = aktivitetskort(UUID.randomUUID(), AktivitetStatus.PLANLAGT) aktivitetTestService.opprettEksterntArenaKort( - listOf( - ArenaKort(tiltaksaktivitet, defaultcontext) - ) + listOf(ArenaKort(tiltaksaktivitet, defaultcontext)) ) val tiltaksaktivitetEndret = tiltaksaktivitet.copy(endretAv = Ident.builder().ident("team_tiltak").identType(IdentType.SYSTEM).build()) + val kometSinAktivitet = KafkaAktivitetskortWrapperDTO(tiltaksaktivitetEndret, AktivitetskortType.GRUPPEAMO, MessageSource.TEAM_KOMET) - val kometSinAktivitet = AktivitetskortUtil.aktivitetskortMelding(tiltaksaktivitetEndret, AktivitetskortType.GRUPPEAMO, MessageSource.TEAM_KOMET) - - aktivitetTestService.opprettEksterntAktivitetsKort( - listOf( - kometSinAktivitet)) + aktivitetTestService.opprettEksterntAktivitetsKort(listOf(kometSinAktivitet)) val aktivitet = hentAktivitet(tiltaksaktivitet.id) assertThat(aktivitet.type).isEqualTo(AktivitetTypeDTO.EKSTERNAKTIVITET) @@ -992,16 +987,47 @@ internal class AktivitetskortConsumerIntegrationTest : SpringBootTestBase() { assertThat(aktivitet.endretAvType).isEqualTo("SYSTEM") assertThat(aktivitet.transaksjonsType).isEqualTo(AktivitetTransaksjonsType.DETALJER_ENDRET) // TODO egen transaksjonstype for denne? - val aktivitetDataOptional = - aktivitetskortService?.hentAktivitetskortByFunksjonellId(tiltaksaktivitet.id) - assertThat(aktivitetDataOptional).isPresent.hasValueSatisfying { - a -> - assertThat(a.oppfolgingsperiodeId).isEqualTo(oppfolgingsperiode) - val eksternAktivitetData = a.eksternAktivitetData!! - assertThat(eksternAktivitetData.source).isEqualTo(MessageSource.TEAM_KOMET.name) - assertThat(eksternAktivitetData.tiltaksKode).isNull() - assertThat(eksternAktivitetData.arenaId).isNull() - } + val aktivitetData = aktivitetskortService.hentAktivitetskortByFunksjonellId(tiltaksaktivitet.id) + assertThat(aktivitetData.oppfolgingsperiodeId).isEqualTo(oppfolgingsperiode) + val eksternAktivitetData = aktivitetData.eksternAktivitetData!! + assertThat(eksternAktivitetData.source).isEqualTo(MessageSource.TEAM_KOMET.name) + assertThat(eksternAktivitetData.tiltaksKode).isNull() + assertThat(eksternAktivitetData.arenaId).isNull() + } + + @Test + fun acl_oppdateringer_skal_ignoreres_hvis_komet_har_tatt_over_aktivitet() { + val arenaKortSerie = AktivitetskortSerie(mockBruker, AktivitetskortType.ARENA_TILTAK) + val arenaAktivitetskortwrapper = arenaKortSerie.ny(AktivitetStatus.PLANLAGT) + aktivitetTestService.opprettEksterntArenaKort(listOf(ArenaKort(arenaAktivitetskortwrapper, defaultcontext))) + + val kometAktivitetskortWrapperDTO = arenaAktivitetskortwrapper + .copy( + messageId = UUID.randomUUID(), + aktivitetskort = arenaAktivitetskortwrapper.aktivitetskort.copy(endretAv = Ident("srvamt", IdentType.SYSTEM), aktivitetStatus = AktivitetStatus.GJENNOMFORES), + aktivitetskortType = AktivitetskortType.GRUPPEAMO, + source = MessageSource.TEAM_KOMET.name) + aktivitetTestService.opprettEksterntAktivitetsKort(listOf(kometAktivitetskortWrapperDTO)) + + val ignorertArenaAktivitetskort = arenaKortSerie.ny(AktivitetStatus.FULLFORT) + aktivitetTestService.opprettEksterntArenaKort(listOf(ArenaKort(ignorertArenaAktivitetskort, defaultcontext))) + + val aktivitet = hentAktivitet(arenaKortSerie.funksjonellId) + assertThat(aktivitet.type).isEqualTo(AktivitetTypeDTO.EKSTERNAKTIVITET) + assertThat(aktivitet.status).isEqualTo(AktivitetStatus.GJENNOMFORES) + val oppfolgingsperiode = aktivitet.oppfolgingsperiodeId + assertThat(oppfolgingsperiode).isNotNull() + assertThat(aktivitet.eksternAktivitet?.type).isEqualTo(AktivitetskortType.GRUPPEAMO) + assertThat(aktivitet.endretAv).isEqualTo("srvamt") + assertThat(aktivitet.endretAvType).isEqualTo(IdentType.SYSTEM.name) + assertThat(aktivitet.transaksjonsType).isEqualTo(AktivitetTransaksjonsType.STATUS_ENDRET) // TODO egen transaksjonstype for denne? + + val aktivitetData = aktivitetskortService.hentAktivitetskortByFunksjonellId(arenaKortSerie.funksjonellId) + assertThat(aktivitetData.oppfolgingsperiodeId).isEqualTo(oppfolgingsperiode) + val eksternAktivitetData = aktivitetData.eksternAktivitetData!! + assertThat(eksternAktivitetData.source).isEqualTo(MessageSource.TEAM_KOMET.name) + assertThat(eksternAktivitetData.tiltaksKode).isNull() + assertThat(eksternAktivitetData.arenaId).isNull() } private val brukerUtenOppfolging = MockNavService.createBruker(BrukerOptions.happyBruker().toBuilder().underOppfolging(false).build()) diff --git a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortProducerUtil.kt b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortProducerUtil.kt index af1931c55..b8274edab 100644 --- a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortProducerUtil.kt +++ b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortProducerUtil.kt @@ -66,7 +66,7 @@ object AktivitetskortProducerUtil { @JvmStatic fun validExampleAktivitetskortRecord(fnr: Person.Fnr): JsonNode { - val kafkaAktivitetskortWrapperDTO = kafkaAktivitetWrapper(fnr) + val kafkaAktivitetskortWrapperDTO = kafkaArenaAktivitetWrapper(fnr) return aktivitetMessageNode(kafkaAktivitetskortWrapperDTO) } @@ -86,7 +86,7 @@ object AktivitetskortProducerUtil { @JvmStatic fun invalidExampleRecord(fnr: Person.Fnr): JsonNode { - val kafkaAktivitetskortWrapperDTO = kafkaAktivitetWrapper(fnr) + val kafkaAktivitetskortWrapperDTO = kafkaArenaAktivitetWrapper(fnr) val jsonNode = aktivitetMessageNode(kafkaAktivitetskortWrapperDTO) val objectNode = jsonNode as ObjectNode objectNode.remove("aktivitetskortType") @@ -101,7 +101,7 @@ object AktivitetskortProducerUtil { @JvmStatic fun missingFieldRecord(fnr: Person.Fnr): Pair { - val kafkaAktivitetskortWrapperDTO = kafkaAktivitetWrapper(fnr) + val kafkaAktivitetskortWrapperDTO = kafkaArenaAktivitetWrapper(fnr) val jsonNode = aktivitetMessageNode(kafkaAktivitetskortWrapperDTO) val payload = jsonNode.path("aktivitetskort") as ObjectNode payload.remove("tittel") @@ -110,7 +110,7 @@ object AktivitetskortProducerUtil { @JvmStatic fun extraFieldRecord(fnr: Person.Fnr): Pair { - val kafkaAktivitetskortWrapperDTO = kafkaAktivitetWrapper(fnr) + val kafkaAktivitetskortWrapperDTO = kafkaArenaAktivitetWrapper(fnr) val jsonNode = aktivitetMessageNode(kafkaAktivitetskortWrapperDTO) val payload = jsonNode.path("aktivitetskort") as ObjectNode payload.put("kake", "123") @@ -119,7 +119,7 @@ object AktivitetskortProducerUtil { @JvmStatic fun invalidDateFieldRecord(fnr: Person.Fnr): Pair { - val kafkaAktivitetskortWrapperDTO = kafkaAktivitetWrapper(fnr) + val kafkaAktivitetskortWrapperDTO = kafkaArenaAktivitetWrapper(fnr) val jsonNode = aktivitetMessageNode(kafkaAktivitetskortWrapperDTO) val payload = jsonNode.path("aktivitetskort") as ObjectNode payload.set("startDato", TextNode("2022/-1/04T12:00:00+02:00")) @@ -128,7 +128,7 @@ object AktivitetskortProducerUtil { @JvmStatic @SneakyThrows - fun kafkaAktivitetWrapper(fnr: Person.Fnr): KafkaAktivitetskortWrapperDTO { + fun kafkaArenaAktivitetWrapper(fnr: Person.Fnr): KafkaAktivitetskortWrapperDTO { val aktivitetskort = Aktivitetskort( id = UUID.randomUUID(), personIdent = fnr.get(), diff --git a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortSerie.kt b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortSerie.kt index ebbe75a31..7e4d332b4 100644 --- a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortSerie.kt +++ b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortSerie.kt @@ -27,7 +27,7 @@ open class AktivitetskortSerie( status: AktivitetStatus = AktivitetStatus.GJENNOMFORES, endretTidspunkt: ZonedDateTime = ZonedDateTime.now() ): KafkaAktivitetskortWrapperDTO { - return AktivitetskortUtil.aktivitetskortMelding( + return KafkaAktivitetskortWrapperDTO( AktivitetskortUtil.ny( funksjonellId, status, @@ -58,7 +58,7 @@ class ArenaKort( val header: ArenaMeldingHeaders ) { constructor(kort: Aktivitetskort, header: ArenaMeldingHeaders) : this( - AktivitetskortUtil.aktivitetskortMelding(kort, AktivitetskortType.ARENA_TILTAK, MessageSource.ARENA_TILTAK_AKTIVITET_ACL), + KafkaAktivitetskortWrapperDTO(kort, AktivitetskortType.ARENA_TILTAK, MessageSource.ARENA_TILTAK_AKTIVITET_ACL), header ) } \ No newline at end of file diff --git a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortUtil.kt b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortUtil.kt index 411b436c3..07e94afb4 100644 --- a/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortUtil.kt +++ b/src/test/kotlin/no/nav/veilarbaktivitet/aktivitetskort/AktivitetskortUtil.kt @@ -3,11 +3,8 @@ package no.nav.veilarbaktivitet.aktivitetskort import no.nav.veilarbaktivitet.aktivitet.domain.AktivitetStatus import no.nav.veilarbaktivitet.aktivitet.domain.Ident import no.nav.veilarbaktivitet.aktivitetskort.dto.Aktivitetskort -import no.nav.veilarbaktivitet.aktivitetskort.dto.AktivitetskortType -import no.nav.veilarbaktivitet.aktivitetskort.dto.KafkaAktivitetskortWrapperDTO import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.Attributt import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.Etikett -import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.MessageSource import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.Sentiment import no.nav.veilarbaktivitet.mock_nav_modell.MockBruker import no.nav.veilarbaktivitet.person.Innsender @@ -44,27 +41,4 @@ object AktivitetskortUtil { listOf(Etikett("Søkt inn på tiltaket", Sentiment.NEUTRAL,"SOKT_INN")) ) } - - @JvmStatic - fun aktivitetskortMelding( - payload: Aktivitetskort, - messageId: UUID = UUID.randomUUID(), - aktivitetskortType: AktivitetskortType, - source: MessageSource - ): KafkaAktivitetskortWrapperDTO { - return KafkaAktivitetskortWrapperDTO( - aktivitetskortType, - payload, - source.name, - messageId - ) - } - - @JvmStatic - fun aktivitetskortMelding( - payload: Aktivitetskort, - type: AktivitetskortType = AktivitetskortType.ARENA_TILTAK, - source: MessageSource = MessageSource.ARENA_TILTAK_AKTIVITET_ACL): KafkaAktivitetskortWrapperDTO { - return aktivitetskortMelding(payload, UUID.randomUUID(), type, source) - } }