Skip to content

Commit

Permalink
Added tests, minor fixups
Browse files Browse the repository at this point in the history
  • Loading branch information
farjamm committed Feb 11, 2025
1 parent e2de323 commit db0f772
Show file tree
Hide file tree
Showing 5 changed files with 169 additions and 56 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.data.etterlevelse.krav.domain;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Data;
import lombok.EqualsAndHashCode;
Expand All @@ -14,6 +15,7 @@
import no.nav.data.etterlevelse.varsel.domain.Varslingsadresse;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

import static no.nav.data.common.utils.StreamUtils.copyOf;
Expand Down Expand Up @@ -43,7 +45,8 @@ public class Krav extends DomainObject implements KravId {
private List<Varslingsadresse> varslingsadresser;
private List<String> rettskilder;
private List<String> tagger;
private List<Regelverk> regelverk;
@Builder.Default
private List<Regelverk> regelverk = new ArrayList<Regelverk>();

private List<Suksesskriterie> suksesskriterier;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
import no.nav.data.common.exceptions.ValidationException;
import no.nav.data.common.rest.PageParameters;
import no.nav.data.common.rest.RestResponsePage;
import no.nav.data.etterlevelse.codelist.CodelistService;
import no.nav.data.etterlevelse.codelist.domain.ListName;
import no.nav.data.etterlevelse.krav.KravService;
import no.nav.data.etterlevelse.krav.domain.Krav;
import no.nav.data.etterlevelse.krav.dto.RegelverkResponse;
Expand All @@ -23,7 +21,6 @@
import no.nav.data.pvk.risikoscenario.dto.RisikoscenarioResponse;
import no.nav.data.pvk.tiltak.dto.RisikoscenarioTiltakRequest;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -49,7 +46,6 @@ public class RisikoscenarioController {

private final RisikoscenarioService risikoscenarioService;
private final KravService kravService;
private final CodelistService codelistService;

@Operation(summary = "Get All Risikoscenario")
@ApiResponse(description = "ok")
Expand Down Expand Up @@ -194,14 +190,21 @@ public ResponseEntity<RisikoscenarioResponse> deleteRisikoscenarioById(@PathVari
@PutMapping("/update/addRelevantKrav")
public ResponseEntity<List<RisikoscenarioResponse>> addRelevantKravToRisikoscenarioer(@RequestBody KravRisikoscenarioRequest request) {
log.info("Add relevantKrav for risikoscenarioer");

// TODO: This validity check should be moved to DB
if (!kravService.isActiveKrav(request.getKravnummer())) {
log.warn("Requested to add non-existing Krav to Risikoscenario");
// Somehow we get client-side MismatchedInputException if we just throw ValidationException here
return ResponseEntity.badRequest().build();
}

// TODO: Will cause NPE and INTERNAL SE if a request contains non-existing risikoscenarios
List<Risikoscenario> updatedRisikoscenarioer = risikoscenarioService.addRelevantKravToRisikoscenarioer(request.getKravnummer(), request.getRisikoscenarioIder());

return ResponseEntity.ok(updatedRisikoscenarioer.stream()
.map(RisikoscenarioResponse::buildFrom)
.map(this::setTiltakAndKravDataForRelevantKravList)
.toList()
);

List<RisikoscenarioResponse> reply = updatedRisikoscenarioer.stream().map(RisikoscenarioResponse::buildFrom).toList();
reply.forEach(this::setTiltakAndKravDataForRelevantKravList);

return ResponseEntity.ok(reply);
}

@Operation(summary = "Remove krav from risikoscenario")
Expand Down Expand Up @@ -232,14 +235,11 @@ public ResponseEntity<RisikoscenarioResponse> updateRisikoscenarioAddTiltak(@Req
RisikoscenarioResponse response = RisikoscenarioResponse.buildFrom(risikoscenario);
setTiltakAndKravDataForRelevantKravList(response);
return ResponseEntity.ok(response);
} catch (DuplicateKeyException e) {
log.warn("DuplicateKeyException caught while inserting Tiltak-Risikoscenario relation", e);
throw new ValidationException("Could not insert Tiltak-Risikoscenario relation: already exists");
} catch (DataIntegrityViolationException e) {
// Eigther non-existing, or relation already exists
log.warn("DataIntegrityViolationException caught while inserting Tiltak-Risikoscenario relation");
throw new NotFoundException("Could not insert Tiltak-Risikoscenario relation: non-existing Tiltak and/or Risikoscenario");
throw new ValidationException("Could not insert Tiltak-Risikoscenario relation: non-existing Tiltak and/or Risikoscenario or relation already exists");
}
// TODO: ITest for exception handling
}

@Operation(summary = "Remove tiltak from risikoscenario")
Expand All @@ -257,22 +257,23 @@ public ResponseEntity<RisikoscenarioResponse> removeTiltakFromRisikoscenarioById
}
}

private RisikoscenarioResponse setTiltakAndKravDataForRelevantKravList(RisikoscenarioResponse risikoscenario) {
private void setTiltakAndKravDataForRelevantKravList(RisikoscenarioResponse risikoscenario) {
// Set Tiltak...
risikoscenario.setTiltakIds(risikoscenarioService.getTiltak(risikoscenario.getId().toString()));

// Set KravData...
risikoscenario.getRelevanteKravNummer().forEach(kravShort -> {
List<Krav> kravList = kravService.findByKravNummerAndActiveStatus(kravShort.getKravNummer());
RegelverkResponse regelverk = kravList.get(0).getRegelverk().get(0).toResponse();
JsonNode lovData = regelverk.getLov().getData();
if(lovData != null) {
try {
RegelverkResponse regelverk = kravList.get(0).getRegelverk().get(0).toResponse();
JsonNode lovData = regelverk.getLov().getData();
kravShort.setTemaCode(lovData.get("tema").asText());
} catch (RuntimeException e) {
// Ignore. If something went wrong (IOOBE or NPE), temaCode is not set.
}
kravShort.setKravVersjon(kravList.get(0).getKravVersjon());
kravShort.setNavn(kravList.get(0).getNavn());
});
return risikoscenario;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public List<Risikoscenario> addRelevantKravToRisikoscenarioer(Integer kravnummer
List<Risikoscenario> res = new ArrayList<Risikoscenario>();
for (String id : risikoscenarioIder) {
Risikoscenario risikoscenario = get(UUID.fromString(id));
// TODO: risikoscenario may be null here...
List<Integer> kravList = risikoscenario.getRisikoscenarioData().getRelevanteKravNummer();
if (!kravList.contains(kravnummer)) {
kravList.add(kravnummer);
Expand Down Expand Up @@ -89,11 +90,11 @@ public Risikoscenario delete(UUID id) {
}

@Transactional(propagation = Propagation.REQUIRED)
public Risikoscenario addTiltak(String riskoscenarioId, List<String> tiltakIds) {
public Risikoscenario addTiltak(String risikoscenarioId, List<String> tiltakIds) {
for (String tiltakId : tiltakIds) {
tiltakRepo.insertTiltakRisikoscenarioRelation(riskoscenarioId, tiltakId);
tiltakRepo.insertTiltakRisikoscenarioRelation(risikoscenarioId, tiltakId);
}
return get(UUID.fromString(riskoscenarioId));
return get(UUID.fromString(risikoscenarioId));
}

/**
Expand Down
Loading

0 comments on commit db0f772

Please sign in to comment.