@@ -140,6 +140,108 @@ void testLagTidslinjeUtenRapportertInntekt() {
140
140
76 );
141
141
}
142
142
143
+ @ Test
144
+ void skal_lage_tilkjent_ytelse_for_første_periode_når_andre_periode_ikke_er_kontrollert () {
145
+ // Arrange
146
+ final var fom1 = LocalDate .of (2023 , 1 , 1 );
147
+ final var tom1 = LocalDate .of (2023 , 1 , 31 );
148
+ final var fom2 = LocalDate .of (2023 , 2 , 1 );
149
+ final var tom2 = LocalDate .of (2023 , 2 , 28 );
150
+ final var fom3 = LocalDate .of (2023 , 3 , 1 );
151
+ final var tom3 = LocalDate .of (2023 , 3 , 15 );
152
+
153
+
154
+ LocalDateTimeline <Boolean > godkjentTidslinje = new LocalDateTimeline <>(List .of (
155
+ new LocalDateSegment <>(fom1 , tom1 , true ),
156
+ new LocalDateSegment <>(fom2 , tom2 , true ),
157
+ new LocalDateSegment <>(fom3 , tom3 , true )
158
+
159
+ ));
160
+
161
+ final var grunnsats1 = BigDecimal .valueOf (100 );
162
+ final var grunnsats2 = BigDecimal .valueOf (150 );
163
+ final var barnetilleggSats1 = 200 ;
164
+ final var barnetilleggSats2 = 250 ;
165
+ LocalDateTimeline <BeregnetSats > totalsatsTidslinje = new LocalDateTimeline <>(List .of (
166
+ lagSatsperiode (grunnsats1 , barnetilleggSats1 , fom1 , tom1 ),
167
+ lagSatsperiode (grunnsats2 , barnetilleggSats2 , fom2 , tom2 ),
168
+ lagSatsperiode (grunnsats2 , barnetilleggSats2 , fom3 , tom3 )
169
+ ));
170
+
171
+ LocalDateTimeline <Set <RapportertInntekt >> rapportertInntektTidslinje = TOM_TIDSLINJE ;
172
+
173
+ // Act
174
+ LocalDateTimeline <TilkjentYtelseVerdi > resultat = getResultat (godkjentTidslinje , totalsatsTidslinje , rapportertInntektTidslinje );
175
+
176
+ // Assert
177
+ // Forventer ingen reduksjon og tilkjent ytelse for første periode
178
+ assertNotNull (resultat );
179
+ assertEquals (1 , resultat .getLocalDateIntervals ().size ());
180
+
181
+ final var iterator = resultat .toSegments ().iterator ();
182
+ final var forventetDagsats1 = BigDecimal .valueOf (14 );
183
+ final var forventetUredusertBeløp1 = grunnsats1 .add (BigDecimal .valueOf (barnetilleggSats1 ));
184
+ LocalDateSegment <TilkjentYtelseVerdi > segment1 = iterator .next ();
185
+ assertSegment (segment1 , fom1 , tom1 , forventetUredusertBeløp1 , forventetDagsats1 , BigDecimal .ZERO , forventetUredusertBeløp1 , 100 );
186
+ }
187
+
188
+
189
+ @ Test
190
+ void skal_lage_tilkjent_ytelse_for_siste_periode_når_nest_siste_periode_er_kontrollert () {
191
+ // Arrange
192
+ final var fom1 = LocalDate .of (2023 , 1 , 1 );
193
+ final var tom1 = LocalDate .of (2023 , 1 , 31 );
194
+ final var fom2 = LocalDate .of (2023 , 2 , 1 );
195
+ final var tom2 = LocalDate .of (2023 , 2 , 28 );
196
+ final var fom3 = LocalDate .of (2023 , 3 , 1 );
197
+ final var tom3 = LocalDate .of (2023 , 3 , 15 );
198
+
199
+
200
+ LocalDateTimeline <Boolean > godkjentTidslinje = new LocalDateTimeline <>(List .of (
201
+ new LocalDateSegment <>(fom1 , tom1 , true ),
202
+ new LocalDateSegment <>(fom2 , tom2 , true ),
203
+ new LocalDateSegment <>(fom3 , tom3 , true )
204
+
205
+ ));
206
+
207
+ final var grunnsats1 = BigDecimal .valueOf (100 );
208
+ final var grunnsats2 = BigDecimal .valueOf (150 );
209
+ final var barnetilleggSats1 = 200 ;
210
+ final var barnetilleggSats2 = 250 ;
211
+ LocalDateTimeline <BeregnetSats > totalsatsTidslinje = new LocalDateTimeline <>(List .of (
212
+ lagSatsperiode (grunnsats1 , barnetilleggSats1 , fom1 , tom1 ),
213
+ lagSatsperiode (grunnsats2 , barnetilleggSats2 , fom2 , tom2 ),
214
+ lagSatsperiode (grunnsats2 , barnetilleggSats2 , fom3 , tom3 )
215
+ ));
216
+
217
+ LocalDateTimeline <Set <RapportertInntekt >> rapportertInntektTidslinje = new LocalDateTimeline <>(fom2 , tom2 , Set .of ());
218
+
219
+ // Act
220
+ LocalDateTimeline <TilkjentYtelseVerdi > resultat = getResultat (godkjentTidslinje , totalsatsTidslinje , rapportertInntektTidslinje );
221
+
222
+ // Assert
223
+ // Forventer ingen reduksjon og tilkjent ytelse for første periode
224
+ assertNotNull (resultat );
225
+ assertEquals (3 , resultat .getLocalDateIntervals ().size ());
226
+
227
+ final var iterator = resultat .toSegments ().iterator ();
228
+ final var forventetDagsats1 = BigDecimal .valueOf (14 );
229
+ final var forventetUredusertBeløp1 = grunnsats1 .add (BigDecimal .valueOf (barnetilleggSats1 ));
230
+ LocalDateSegment <TilkjentYtelseVerdi > segment1 = iterator .next ();
231
+ assertSegment (segment1 , fom1 , tom1 , forventetUredusertBeløp1 , forventetDagsats1 , BigDecimal .ZERO , forventetUredusertBeløp1 , 100 );
232
+
233
+ LocalDateSegment <TilkjentYtelseVerdi > segment2 = iterator .next ();
234
+ final var forventetUredusertBeløp2 = grunnsats2 .add (BigDecimal .valueOf (barnetilleggSats2 ));
235
+ final var forventetDagsats2 = BigDecimal .valueOf (20 );
236
+ assertSegment (segment2 , fom2 , tom2 , forventetUredusertBeløp2 , forventetDagsats2 , BigDecimal .ZERO , forventetUredusertBeløp2 , 100 );
237
+
238
+ LocalDateSegment <TilkjentYtelseVerdi > segment3 = iterator .next ();
239
+ final var forventetUredusertBeløp3 = grunnsats2 .add (BigDecimal .valueOf (barnetilleggSats2 ));
240
+ final var forventetDagsats3 = BigDecimal .valueOf (36 );
241
+ assertSegment (segment3 , fom3 , tom3 , forventetUredusertBeløp3 , forventetDagsats3 , BigDecimal .ZERO , forventetUredusertBeløp3 , 100 );
242
+ }
243
+
244
+
143
245
144
246
145
247
private static void assertSegment (LocalDateSegment <TilkjentYtelseVerdi > segment2 ,
0 commit comments