Skip to content

Commit

Permalink
Merge pull request #4692 from navikt/feature/remove-planlagt-from-bac…
Browse files Browse the repository at this point in the history
…kend

Feature/remove planlagt from backend
  • Loading branch information
sondrele authored Nov 28, 2024
2 parents 9b76f90 + eefdee0 commit 0b4e508
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import no.nav.mulighetsrommet.domain.serializers.LocalDateTimeSerializer
import java.time.LocalDateTime

enum class TiltaksgjennomforingStatus {
PLANLAGT,
GJENNOMFORES,
AVSLUTTET,
AVBRUTT,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,7 @@ class AvtaleService(

val (_, gjennomforinger) = tiltaksgjennomforinger.getAll(
avtaleId = id,
statuser = listOf(
TiltaksgjennomforingStatus.GJENNOMFORES,
TiltaksgjennomforingStatus.PLANLAGT,
),
statuser = listOf(TiltaksgjennomforingStatus.GJENNOMFORES),
)

if (gjennomforinger.isNotEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ fun Route.tiltaksgjennomforingRoutes() {
message = "Gjennomføringen finnes ikke",
)

if (!gjennomforing.isAktiv()) {
if (gjennomforing.status.status != TiltaksgjennomforingStatus.GJENNOMFORES) {
return@put call.respond(
HttpStatusCode.BadRequest,
message = "Gjennomføringen er allerede avsluttet og kan derfor ikke avbrytes.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,10 +168,12 @@ class TiltaksgjennomforingService(

val dto = getOrError(id, tx)
val operation = when (dto.status.status) {
TiltaksgjennomforingStatus.AVSLUTTET -> "Gjennomføringen ble avsluttet"
TiltaksgjennomforingStatus.AVBRUTT -> "Gjennomføringen ble avbrutt"
TiltaksgjennomforingStatus.AVLYST -> "Gjennomføringen ble avlyst"
else -> throw IllegalStateException("Gjennomføringen ble nettopp avsluttet, men status ${dto.status.status} indikerer noe annet")
TiltaksgjennomforingStatus.AVSLUTTET,
TiltaksgjennomforingStatus.AVBRUTT,
TiltaksgjennomforingStatus.AVLYST,
-> "Gjennomføringen ble ${dto.status.status.name.lowercase()}"

else -> throw IllegalStateException("Gjennomføringen ble nettopp avsluttet, men status er fortsatt ${dto.status.status}")
}
logEndring(operation, dto, endretAv, tx)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ class TiltaksgjennomforingValidator(
previous: TiltaksgjennomforingDto,
avtale: AvtaleDto,
) {
if (!previous.isAktiv()) {
if (previous.status.status != TiltaksgjennomforingStatus.GJENNOMFORES) {
add(
ValidationError.of(
TiltaksgjennomforingDbo::navn,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ data class ArenaMigreringTiltaksgjennomforingDto(
}

val status = when (tiltaksgjennomforing.status.status) {
TiltaksgjennomforingStatus.PLANLAGT, TiltaksgjennomforingStatus.GJENNOMFORES -> ArenaTiltaksgjennomforingStatus.GJENNOMFORES
TiltaksgjennomforingStatus.GJENNOMFORES -> ArenaTiltaksgjennomforingStatus.GJENNOMFORES
TiltaksgjennomforingStatus.AVSLUTTET -> ArenaTiltaksgjennomforingStatus.AVSLUTTET
TiltaksgjennomforingStatus.AVBRUTT -> ArenaTiltaksgjennomforingStatus.AVBRUTT
TiltaksgjennomforingStatus.AVLYST -> ArenaTiltaksgjennomforingStatus.AVLYST
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,6 @@ data class TiltaksgjennomforingDto(
val amoKategorisering: AmoKategorisering?,
val utdanningslop: UtdanningslopDto?,
) {
fun isAktiv(): Boolean = status.status in listOf(
TiltaksgjennomforingStatus.PLANLAGT,
TiltaksgjennomforingStatus.GJENNOMFORES,
)

@Serializable
data class Tiltakstype(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
update lagret_filter
set filter = jsonb_set(filter, '{statuser}', (filter -> 'statuser')::jsonb - 'PLANLAGT')
where type = 'Tiltaksgjennomføring'
and filter -> 'statuser' ? 'PLANLAGT';

Original file line number Diff line number Diff line change
Expand Up @@ -262,13 +262,16 @@ class TiltaksgjennomforingRoutesTest : FunSpec({
),
)

val avsluttetGjennomforingId = domain.gjennomforinger[1].id
val aktivGjennomforingId = domain.gjennomforinger[0].id

beforeAny {
val gjennomforinger = TiltaksgjennomforingRepository(database.db)

domain.initialize(database.db)

gjennomforinger.setAvsluttet(
domain.gjennomforinger[1].id,
avsluttetGjennomforingId,
LocalDateTime.now(),
AvbruttAarsak.Feilregistrering,
)
Expand Down Expand Up @@ -311,7 +314,7 @@ class TiltaksgjennomforingRoutesTest : FunSpec({
}

val response = client
.put("/api/v1/intern/tiltaksgjennomforinger/${domain.gjennomforinger[0].id}/avbryt") {
.put("/api/v1/intern/tiltaksgjennomforinger/$aktivGjennomforingId/avbryt") {
val claims = mapOf(
"NAVident" to "ABC123",
"groups" to listOf(generellRolle.adGruppeId, gjennomforingerSkriv.adGruppeId),
Expand All @@ -335,7 +338,7 @@ class TiltaksgjennomforingRoutesTest : FunSpec({
}

val response = client
.put("/api/v1/intern/tiltaksgjennomforinger/${domain.gjennomforinger[0].id}/avbryt") {
.put("/api/v1/intern/tiltaksgjennomforinger/$aktivGjennomforingId/avbryt") {
val claims = mapOf(
"NAVident" to "ABC123",
"groups" to listOf(generellRolle.adGruppeId, gjennomforingerSkriv.adGruppeId),
Expand All @@ -359,7 +362,7 @@ class TiltaksgjennomforingRoutesTest : FunSpec({
}

val response = client
.put("/api/v1/intern/tiltaksgjennomforinger/${domain.gjennomforinger[1].id}/avbryt") {
.put("/api/v1/intern/tiltaksgjennomforinger/$avsluttetGjennomforingId/avbryt") {
val claims = mapOf(
"NAVident" to "ABC123",
"groups" to listOf(generellRolle.adGruppeId, gjennomforingerSkriv.adGruppeId),
Expand All @@ -385,7 +388,7 @@ class TiltaksgjennomforingRoutesTest : FunSpec({
}

val response = client
.put("/api/v1/intern/tiltaksgjennomforinger/${domain.gjennomforinger[0].id}/avbryt") {
.put("/api/v1/intern/tiltaksgjennomforinger/$aktivGjennomforingId/avbryt") {
val claims = mapOf(
"NAVident" to "ABC123",
"groups" to listOf(generellRolle.adGruppeId, gjennomforingerSkriv.adGruppeId),
Expand All @@ -398,7 +401,7 @@ class TiltaksgjennomforingRoutesTest : FunSpec({
response.status shouldBe HttpStatusCode.OK
response.bodyAsText().shouldBeEmpty()

gjennomforinger.get(domain.gjennomforinger[0].id).shouldNotBeNull().should {
gjennomforinger.get(aktivGjennomforingId).shouldNotBeNull().should {
it.status.status shouldBe TiltaksgjennomforingStatus.AVBRUTT
it.status.avbrutt?.aarsak shouldBe AvbruttAarsak.Feilregistrering
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import io.kotest.matchers.shouldBe
import io.kotest.matchers.shouldNotBe
import io.mockk.*
import no.nav.mulighetsrommet.api.databaseConfig
import no.nav.mulighetsrommet.api.fixtures.AvtaleFixtures
import no.nav.mulighetsrommet.api.fixtures.MulighetsrommetTestDomain
import no.nav.mulighetsrommet.api.fixtures.TiltaksgjennomforingFixtures
import no.nav.mulighetsrommet.api.gjennomforing.db.TiltaksgjennomforingDbo
Expand All @@ -38,16 +37,16 @@ class TiltaksgjennomforingServiceTest : FunSpec({

val tiltaksgjennomforingKafkaProducer: SisteTiltaksgjennomforingerV1KafkaProducer = mockk(relaxed = true)
val validator = mockk<TiltaksgjennomforingValidator>()
val avtaleId = AvtaleFixtures.oppfolging.id

fun createService(
notifications: NotificationRepository = NotificationRepository(database.db),
) = TiltaksgjennomforingService(
endringshistorikk: EndringshistorikkService = EndringshistorikkService(database.db),
): TiltaksgjennomforingService = TiltaksgjennomforingService(
TiltaksgjennomforingRepository(database.db),
tiltaksgjennomforingKafkaProducer,
notifications,
validator,
EndringshistorikkService(database.db),
endringshistorikk,
mockk(relaxed = true),
database.db,
)
Expand Down Expand Up @@ -220,20 +219,58 @@ class TiltaksgjennomforingServiceTest : FunSpec({
}
}

context("Avbryte gjennomføring") {
context("avslutte gjennomføring") {
val gjennomforinger = TiltaksgjennomforingRepository(database.db)
val tiltaksgjennomforingService = createService()

test("Avbrytes ikke hvis publish feiler") {
test("publiserer til kafka og skriver til endringshistorikken når gjennomføring avsluttes") {
val gjennomforing = TiltaksgjennomforingFixtures.AFT1.copy(
startDato = LocalDate.of(2023, 7, 1),
sluttDato = null,
)
gjennomforinger.upsert(gjennomforing)

every { tiltaksgjennomforingKafkaProducer.publish(any()) } returns Unit

val endringshistorikk = spyk(EndringshistorikkService(database.db))
val tiltaksgjennomforingService = createService(endringshistorikk = endringshistorikk)

tiltaksgjennomforingService.setAvsluttet(
gjennomforing.id,
LocalDateTime.now(),
AvbruttAarsak.Feilregistrering,
EndretAv.NavAnsatt(bertilNavIdent),
)

tiltaksgjennomforingService.get(gjennomforing.id).shouldNotBeNull().should {
it.status.status shouldBe TiltaksgjennomforingStatus.AVBRUTT
}

verify(exactly = 1) {
tiltaksgjennomforingKafkaProducer.publish(match { it.id == gjennomforing.id })

endringshistorikk.logEndring(
operation = "Gjennomføringen ble avbrutt",
documentId = gjennomforing.id,
tx = any(),
documentClass = any(),
user = any(),
timestamp = any(),
valueProvider = any(),
)
}
}

test("avsluttes ikke hvis publish feiler") {
val gjennomforing = TiltaksgjennomforingFixtures.AFT1.copy(
avtaleId = avtaleId,
startDato = LocalDate.of(2023, 7, 1),
sluttDato = null,
)
gjennomforinger.upsert(gjennomforing)

every { tiltaksgjennomforingKafkaProducer.publish(any()) } throws Exception()

val tiltaksgjennomforingService = createService()

shouldThrow<Throwable> {
tiltaksgjennomforingService.setAvsluttet(
gjennomforing.id,
Expand Down

0 comments on commit 0b4e508

Please sign in to comment.