Skip to content

Commit

Permalink
add unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
boal committed Nov 27, 2024
1 parent 04e9800 commit 6e6cbba
Show file tree
Hide file tree
Showing 3 changed files with 144 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ public AuswertungMessstelleWithFileDTO ladeAuswertungMessstellen(final Messstell
* Bereitet die im Parameter gegebenen Zähldaten für die Gangliniendarstellung auf.
*
* @param fahrzeugOptions die Optionen zur Aufbereitung der Zähldaten für die Gangliniendarstellung.
* @param auswertungenMessstellen die Auswertungen der Messstellen zur Aufbereitung für die Gangliniendarstellung.
* @param auswertungenMessstellen die Auswertungen der Messstellen zur Aufbereitung für die
* Gangliniendarstellung.
* @return die aufbereiteten Daten für die Gangliniendarstellung.
*/
protected LadeZaehldatenSteplineDTO createZaehldatenForGanglinie(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;

Expand Down Expand Up @@ -133,12 +134,15 @@ public LadeZaehldatenSteplineDTO createGanglinieForSingleMessstelle(
zaehldatenStepline.setXAxisDataFirstChart(newXAxisData);

});

zaehldatenStepline.setSeriesEntriesFirstChart(seriesEntries.getChosenStepLineSeriesEntries(fahrzeugOptions));
return zaehldatenStepline;

}

/**
* Erstellt die Repräsentation der Zähldaten (Summe KFZ) zur Gangliniendarstellung für mehrere Messstellen.
* Erstellt die Repräsentation der Zähldaten (Summe KFZ) zur Gangliniendarstellung für mehrere
* Messstellen.
*
* @param auswertungMessstellen mit den Zähldaten.
* @return die Repräsentation der Zähldaten (Summe KFZ) für die Gangliniendarstellung.
Expand Down Expand Up @@ -172,27 +176,35 @@ public LadeZaehldatenSteplineDTO createGanglinieForMultipleMessstellen(final Lis
}));

// Aufbereitung der im oberen Abschnitt gruppierten Zähldaten für Gangliniendarstellung.
auswertungByZeitraum.values().forEach(auswertungZeitraum -> {
auswertungZeitraum.summeKfzByMstId.forEach((mstId, summeKfz) -> {
final var stepLineSeriesEntryMessstelle = new StepLineSeriesEntryIntegerDTO();
stepLineSeriesEntryMessstelle.setName("MST " + mstId);
GanglinieUtil.setSeriesIndexForFirstChartValue(stepLineSeriesEntryMessstelle);
stepLineSeriesEntryMessstelle.getYAxisData().add(GanglinieUtil.getIntValueIfNotNull(summeKfz));
GanglinieUtil.setLegendInZaehldatenStepline(
zaehldatenStepline,
stepLineSeriesEntryMessstelle.getName());
GanglinieUtil.setRangeMaxRoundedToTwentyInZaehldatenStepline(
zaehldatenStepline,
GanglinieUtil.getIntValueIfNotNull(summeKfz));
});

final var currentXAxisData = zaehldatenStepline.getXAxisDataFirstChart();
final var newXAxisData = ZaehldatenProcessingUtil.checkAndAddToXAxisWhenNotAvailable(
currentXAxisData,
getZeitraumForXaxis(auswertungZeitraum.getZeitraum()));
zaehldatenStepline.setXAxisDataFirstChart(newXAxisData);

});
auswertungByZeitraum
.values()
.stream()
.sorted(Comparator.comparing(auswertungZeitraum -> auswertungZeitraum.getZeitraum().getStart()))
.forEach(auswertungZeitraum -> {

final var stepLineSeriesEntryMessstelle = new StepLineSeriesEntryIntegerDTO();

auswertungZeitraum.summeKfzByMstId.forEach((mstId, summeKfz) -> {
stepLineSeriesEntryMessstelle.setName("MST " + mstId);
GanglinieUtil.setSeriesIndexForFirstChartValue(stepLineSeriesEntryMessstelle);
stepLineSeriesEntryMessstelle.getYAxisData().add(GanglinieUtil.getIntValueIfNotNull(summeKfz));
GanglinieUtil.setLegendInZaehldatenStepline(
zaehldatenStepline,
stepLineSeriesEntryMessstelle.getName());
GanglinieUtil.setRangeMaxRoundedToTwentyInZaehldatenStepline(
zaehldatenStepline,
GanglinieUtil.getIntValueIfNotNull(summeKfz));

zaehldatenStepline.getSeriesEntriesFirstChart().add(stepLineSeriesEntryMessstelle);
});

final var currentXAxisData = zaehldatenStepline.getXAxisDataFirstChart();
final var newXAxisData = ZaehldatenProcessingUtil.checkAndAddToXAxisWhenNotAvailable(
currentXAxisData,
getZeitraumForXaxis(auswertungZeitraum.getZeitraum()));
zaehldatenStepline.setXAxisDataFirstChart(newXAxisData);

});

return zaehldatenStepline;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,123 @@
package de.muenchen.dave.services.messstelle.auswertung;

import de.muenchen.dave.domain.dtos.laden.LadeZaehldatenSteplineDTO;
import de.muenchen.dave.domain.dtos.messstelle.auswertung.Auswertung;
import de.muenchen.dave.domain.dtos.messstelle.auswertung.AuswertungMessstelle;
import de.muenchen.dave.domain.enums.AuswertungsZeitraum;
import de.muenchen.dave.geodateneai.gen.model.TagesaggregatDto;
import de.muenchen.dave.services.messstelle.Zeitraum;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.time.YearMonth;
import java.util.ArrayList;

class GanglinieGesamtauswertungServiceTest {

private GanglinieGesamtauswertungService ganglinieGesamtauswertungService = new GanglinieGesamtauswertungService();

@Test
void createGanglinieForMultipleMessstellen() {
final var auswertungMessstellen = new ArrayList<AuswertungMessstelle>();
var auswertungMessstelle = new AuswertungMessstelle();
auswertungMessstelle.setMstId("1");

var auswertung = new Auswertung();
var zeitraum = new Zeitraum(YearMonth.of(2024, 1), YearMonth.of(2024, 3), AuswertungsZeitraum.QUARTAL_1);
var tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(100));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2024, 4), YearMonth.of(2024, 6), AuswertungsZeitraum.QUARTAL_2);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(101));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2024, 7), YearMonth.of(2024, 9), AuswertungsZeitraum.QUARTAL_3);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(102));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2024, 10), YearMonth.of(2024, 12), AuswertungsZeitraum.QUARTAL_4);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(103));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2025, 1), YearMonth.of(2025, 3), AuswertungsZeitraum.QUARTAL_1);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(104));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertungMessstellen.add(auswertungMessstelle);

auswertungMessstelle = new AuswertungMessstelle();
auswertungMessstelle.setMstId("2");

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2024, 1), YearMonth.of(2024, 3), AuswertungsZeitraum.QUARTAL_1);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(200));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2024, 4), YearMonth.of(2024, 6), AuswertungsZeitraum.QUARTAL_2);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(201));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2024, 7), YearMonth.of(2024, 9), AuswertungsZeitraum.QUARTAL_3);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(202));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2024, 10), YearMonth.of(2024, 12), AuswertungsZeitraum.QUARTAL_4);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(203));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertung = new Auswertung();
zeitraum = new Zeitraum(YearMonth.of(2025, 1), YearMonth.of(2025, 3), AuswertungsZeitraum.QUARTAL_1);
tagesaggregat = new TagesaggregatDto();
tagesaggregat.setSummeKraftfahrzeugverkehr(BigDecimal.valueOf(204));
auswertung.setZeitraum(zeitraum);
auswertung.setDaten(tagesaggregat);
auswertungMessstelle.getAuswertungenProZeitraum().add(auswertung);

auswertungMessstellen.add(auswertungMessstelle);

final var result = ganglinieGesamtauswertungService.createGanglinieForMultipleMessstellen(auswertungMessstellen);

final var expected = new LadeZaehldatenSteplineDTO();

Assertions.assertThat(result).isNotNull().isEqualTo(expected);

}

@Test
void getZeitraumForXaxis() {
var zeitraum = new Zeitraum(YearMonth.of(2024, 11), null, AuswertungsZeitraum.SEPTEMBER);
Expand All @@ -30,4 +137,4 @@ void getZeitraumForXaxis() {
Assertions.assertThat(result).isNotNull().isEqualTo("2024");
}

}
}

0 comments on commit 6e6cbba

Please sign in to comment.