|
8 | 8 | import java.math.BigDecimal;
|
9 | 9 | import java.time.LocalDate;
|
10 | 10 | import java.util.Collections;
|
| 11 | +import java.util.Comparator; |
11 | 12 | import java.util.List;
|
12 | 13 | import java.util.Map;
|
13 | 14 | import java.util.Optional;
|
@@ -104,6 +105,55 @@ void mapArbeidsforholdMedPermisjoner() {
|
104 | 105 |
|
105 | 106 | }
|
106 | 107 |
|
| 108 | + @Test |
| 109 | + void mapArbeidsforholdMedOverlappendePermisjoner() { |
| 110 | + |
| 111 | + var personIdent = new PersonIdent("12345678"); |
| 112 | + var aktørId = AktørId.dummy(); |
| 113 | + var intervall = IntervallEntitet.fraOgMedTilOgMed(FRA_DATO, TIL_DATO); |
| 114 | + var eksternRef = EksternArbeidsforholdRef.ref("eksternRef"); |
| 115 | + var orgnr = new OrgNummer(KUNSTIG_ORG); |
| 116 | + var arbeidsgiver = new Organisasjon(orgnr.getId()); |
| 117 | + |
| 118 | + var arbeidsgiverIdentifikator = new ArbeidsforholdIdentifikator(arbeidsgiver, eksternRef, ArbeidType.ORDINÆRT_ARBEIDSFORHOLD.getOffisiellKode()); |
| 119 | + |
| 120 | + var arbeidsavtalerTilMap = List.of( |
| 121 | + lagArbeidsavtale(FRA_DATO, FRA_DATO.plusWeeks(2).minusDays(1), BigDecimal.valueOf(30)), |
| 122 | + lagArbeidsavtale(FRA_DATO.plusWeeks(2), null, BigDecimal.valueOf(70)) |
| 123 | + ); |
| 124 | + var permisjonerTilMap = List.of( |
| 125 | + lagPermisjon(FRA_DATO, FRA_DATO.plusWeeks(1), BigDecimal.ZERO), |
| 126 | + lagPermisjon(FRA_DATO.plusDays(1), FRA_DATO.plusDays(5), BigDecimal.valueOf(100)), |
| 127 | + lagPermisjon(FRA_DATO.plusWeeks(2), Tid.TIDENES_ENDE, BigDecimal.valueOf(20)) |
| 128 | + ); |
| 129 | + var arbeidsforhold = List.of(lagArbeidsforhold(arbeidsgiver, arbeidsavtalerTilMap, permisjonerTilMap)); |
| 130 | + |
| 131 | + when(aktørConsumer.hentIdentForAktør(any())).thenReturn(Optional.of(personIdent)); |
| 132 | + when(arbeidsforholdTjeneste.finnArbeidsforholdForIdentIPerioden(personIdent, aktørId, intervall )).thenReturn(Map.of(arbeidsgiverIdentifikator, arbeidsforhold)); |
| 133 | + |
| 134 | + var arbeidsforholdDto = arbeidsforholdDtoTjeneste.mapArbForholdOgPermisjoner(aktørId, FRA_DATO, TIL_DATO); |
| 135 | + |
| 136 | + assertThat(arbeidsforholdDto).hasSize(1); |
| 137 | + assertThat(arbeidsforholdDto.getFirst().getType()).isEqualTo(ArbeidType.ORDINÆRT_ARBEIDSFORHOLD); |
| 138 | + assertThat(arbeidsforholdDto.getFirst().getArbeidsforholdId().getEksternReferanse()).isEqualTo(eksternRef.getReferanse()); |
| 139 | + assertThat(arbeidsforholdDto.getFirst().getArbeidsgiver().getIdent()).isEqualTo(KUNSTIG_ORG); |
| 140 | + assertThat(arbeidsforholdDto.getFirst().getArbeidsavtaler()).hasSize(2); |
| 141 | + |
| 142 | + var arbeidsavtaler = arbeidsforholdDto.getFirst().getArbeidsavtaler(); |
| 143 | + assertThat(arbeidsavtaler.getFirst().periode().getFom()).isEqualTo(arbeidsavtalerTilMap.getFirst().getArbeidsavtaleFom()); |
| 144 | + assertThat(arbeidsavtaler.getFirst().periode().getTom()).isEqualTo(arbeidsavtalerTilMap.getFirst().getArbeidsavtaleTom()); |
| 145 | + assertThat(arbeidsavtaler.getFirst().stillingsprosent()).isEqualByComparingTo(arbeidsavtalerTilMap.getFirst().getStillingsprosent()); |
| 146 | + assertThat(arbeidsavtaler.get(1).periode().getFom()).isEqualTo(arbeidsavtalerTilMap.get(1).getArbeidsavtaleFom()); |
| 147 | + assertThat(arbeidsavtaler.get(1).periode().getTom()).isEqualTo(TIL_DATO); |
| 148 | + assertThat(arbeidsavtaler.get(1).stillingsprosent()).isEqualByComparingTo(arbeidsavtalerTilMap.get(1).getStillingsprosent()); |
| 149 | + |
| 150 | + var permisjoner = arbeidsforholdDto.getFirst().getPermisjoner(); |
| 151 | + assertThat(permisjoner).hasSize(5); |
| 152 | + assertThat(permisjoner.getFirst().getPeriode().getFom()).isEqualTo(permisjonerTilMap.getFirst().getPermisjonFom()); |
| 153 | + assertThat(permisjoner.get(4).getPeriode().getTom()).isEqualTo(TIL_DATO); |
| 154 | + |
| 155 | + } |
| 156 | + |
107 | 157 | @Test
|
108 | 158 | void mapArbeidsforholdUtenPermisjoner() {
|
109 | 159 |
|
|
0 commit comments