Skip to content

Commit c198bd5

Browse files
authored
Lagt til metode for å kontrollere overlapp i Periode-klassen (#278)
1 parent c44fa88 commit c198bd5

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

soknad/src/main/java/no/nav/k9/søknad/felles/type/Periode.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,19 @@ public boolean inneholder(Periode periode) {
110110
&& (this.tilOgMed == null || (periode.tilOgMed != null && !this.tilOgMed.isBefore(periode.tilOgMed)));
111111
}
112112

113+
/**
114+
* Sjekk om denne perioden og annenPeriode har overlappende tidsintervaller.
115+
*/
116+
public boolean overlapper(Periode annenPeriode) {
117+
boolean starterFørEllerSamtidigSomAnnenPeriodeSlutter = this.fraOgMed == null || this.fraOgMed != null && annenPeriode.getTilOgMed() == null || this.fraOgMed != null && annenPeriode.getTilOgMed() != null && (this.fraOgMed.isEqual(annenPeriode.getTilOgMed()) || this.fraOgMed.isBefore(annenPeriode.getTilOgMed()));
118+
if (!starterFørEllerSamtidigSomAnnenPeriodeSlutter) {
119+
return false;
120+
} else {
121+
boolean slutterEtterEllerSamtidigSomPeriodeStarter = this.tilOgMed == null || this.tilOgMed != null && annenPeriode.getFraOgMed() == null || this.tilOgMed != null && annenPeriode.getFraOgMed() != null && (this.tilOgMed.isEqual(annenPeriode.getFraOgMed()) || this.tilOgMed.isAfter(annenPeriode.getFraOgMed()));
122+
return slutterEtterEllerSamtidigSomPeriodeStarter;
123+
}
124+
}
125+
113126
private static void verifiserKanVæreGyldigPeriode(String iso8601) {
114127
if (iso8601 == null || iso8601.split(SKILLE).length != 2) {
115128
throw new IllegalArgumentException("Periode på ugylig format '" + iso8601 + "'.");

soknad/src/test/java/no/nav/k9/søknad/PeriodeTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,24 @@ public void TestLeggTilPeriodeUtenDuplikater() {
146146
assertThat(perioder).hasSize(2);
147147
assertThat(perioder.keySet()).containsAll(Set.of(periode1, periode2));
148148
}
149+
150+
/*
151+
* Kontrollerer at perioder som ikke overlapper får forventede resultater ved å kalle Periode#overlapper.
152+
* Tester både med periode som ligger kant-til-kant og perioder som ikke ligger kant-til-kant.
153+
*/
154+
@Test
155+
public void TestOverlapperPåIkkeOverlappendePerioder() {
156+
var periode1 = Periode.parse("2020-01-01/2020-01-10");
157+
var periode2 = Periode.parse("2020-01-11/2020-01-20");
158+
var periode3 = Periode.parse("2020-01-20/2020-01-30");
159+
assertThat(periode1.overlapper(periode2)).isFalse();
160+
assertThat(periode1.overlapper(periode3)).isFalse();
161+
}
162+
163+
@Test
164+
public void TestOverlapperPåOverlappendePerioder() {
165+
var periode1 = Periode.parse("2020-01-01/2020-01-10");
166+
var periode2 = Periode.parse("2020-01-10/2020-01-19");
167+
assertThat(periode1.overlapper(periode2)).isTrue();
168+
}
149169
}

0 commit comments

Comments
 (0)