diff --git a/cli/pom.xml b/cli/pom.xml
index 67ad2b9..f42cef2 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -7,7 +7,7 @@
edu.kit.aifb.atks
mensascraper
- 1.1.4
+ 1.1.5
edu.kit.aifb.atks.mensascraper
diff --git a/cli/src/main/java/edu/kit/aifb/atks/mensascraper/cli/Main.java b/cli/src/main/java/edu/kit/aifb/atks/mensascraper/cli/Main.java
index 7c13d60..cd14fcf 100644
--- a/cli/src/main/java/edu/kit/aifb/atks/mensascraper/cli/Main.java
+++ b/cli/src/main/java/edu/kit/aifb/atks/mensascraper/cli/Main.java
@@ -11,7 +11,7 @@ public static void main(String[] args) {
final var scraper = new KITMensaScraper();
final var day = args.length > 0
? LocalDate.parse(args[0])
- : LocalDate.now();
+ : LocalDate.now(); // TODO: make time-zone aware -> always use "now" for time zone the requested mensa is located in
final var meals = scraper.fetchMeals(MensaLocation.ADENAUERRING, day);
System.out.println(new Gson().toJson(meals));
}
diff --git a/lib/pom.xml b/lib/pom.xml
index 9c15374..bd18ebb 100644
--- a/lib/pom.xml
+++ b/lib/pom.xml
@@ -7,12 +7,12 @@
edu.kit.aifb.atks
mensascraper
- 1.1.4
+ 1.1.5
edu.kit.aifb.atks.mensascraper
lib
- 1.1.4
+ 1.1.5
mensascraper-lib
jar
diff --git a/lib/src/main/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraper.java b/lib/src/main/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraper.java
index 5b0d71b..e9ad010 100644
--- a/lib/src/main/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraper.java
+++ b/lib/src/main/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraper.java
@@ -109,6 +109,8 @@ private static List parseMeals(Element root, LocalDate day) {
.parallel()
.map(KITMensaScraper::parseSingleLine)
.flatMap(Collection::stream)
+ .filter(m -> m.getPrice() > 0)
+ .distinct()
.collect(Collectors.toList());
}
@@ -138,8 +140,9 @@ private static List parseSingleLine(Element el) {
if (isNutrition) {
// parse nutrition info
+ // nutrition info always comes second, after the meal entry
if (currentMeal == null) {
- throw new MensaScraperException("got nutrition table without preceeding meal");
+ throw new MensaScraperException("got nutrition table without preceding meal");
}
currentMeal.setKcal(parseKcal(mealRow));
currentMeal.setProteins(parseProteins(mealRow));
@@ -150,15 +153,12 @@ private static List parseSingleLine(Element el) {
currentMeal.setSalt(parseSalt(mealRow));
} else {
// parse meal info
- if (currentMeal != null) {
- meals.add(currentMeal);
- }
-
currentMeal = new MensaMeal();
currentMeal.setName(parseMealName(mealRow));
currentMeal.setAdditives(parseMealAdditives(mealRow));
currentMeal.setPrice(parseMealPrice(mealRow));
currentMeal.setType(parseMealType(mealRow));
+ meals.add(currentMeal);
}
}
diff --git a/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperIntegrationTest.java b/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperIntegrationTest.java
index 642f583..5e6349b 100644
--- a/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperIntegrationTest.java
+++ b/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperIntegrationTest.java
@@ -5,7 +5,8 @@
import org.junit.jupiter.api.Test;
import java.time.DayOfWeek;
-import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
import java.time.temporal.TemporalAdjusters;
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -28,7 +29,7 @@ void tearDown() {
void testFetchMealsLive() {
// fetch live data for today, if today is a weekday or next monday otherwise
// note: this test will fail when run on days when canteen is closed, but should be acceptable
- final var now = LocalDate.now();
+ final var now = ZonedDateTime.now(ZoneId.of("Europe/Berlin")).toLocalDate();
final var targetDate = now.getDayOfWeek().getValue() >= DayOfWeek.SATURDAY.getValue()
? now.with(TemporalAdjusters.next(DayOfWeek.MONDAY))
: now;
diff --git a/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperTest.java b/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperTest.java
index ce32437..e384cde 100644
--- a/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperTest.java
+++ b/lib/src/test/java/edu/kit/aifb/atks/mensascraper/lib/KITMensaScraperTest.java
@@ -62,16 +62,18 @@ void testFetchMeals() throws IOException, InterruptedException {
verify(httpClient, times(2)).send(captor1.capture(), any());
assertEquals("kw=19", captor1.getValue().uri().getQuery());
- assertEquals(23, tuesday.size());
- assertEquals(24, wednesday.size());
+ assertEquals(32, tuesday.size());
+ assertEquals(32, wednesday.size());
+ assertEquals(tuesday.size(), tuesday.stream().distinct().count());
+ assertEquals(wednesday.size(), wednesday.stream().distinct().count());
assertEquals("Mini Frühlingsrollen mit Sweet Chili Soße und Mienudeln", tuesday.get(2).getName());
- assertEquals("Hausgemachte Gnocchi in Bechamelsoße mit Chorizo", tuesday.get(5).getName()); // bold + normal font
+ assertEquals("Hausgemachte Gnocchi in Bechamelsoße mit Chorizo", tuesday.get(6).getName()); // bold + normal font
assertEquals(3, tuesday.get(2).getAdditives().size());
assertEquals("Sa", tuesday.get(2).getAdditives().get(0));
assertEquals(3.8f, tuesday.get(2).getPrice());
- assertEquals(3.5f, tuesday.get(5).getPrice());
+ assertEquals(3.5f, tuesday.get(6).getPrice());
assertEquals(1147.0f, tuesday.get(2).getKcal());
- assertEquals(1121.0f, tuesday.get(5).getKcal());
+ assertEquals(1121.0f, tuesday.get(6).getKcal());
assertEquals(23.0f, tuesday.get(2).getProteins());
assertEquals(MensaLine.LINIE_2, tuesday.get(2).getLine());
assertEquals(MensaMealType.VEGAN, tuesday.get(2).getType());
diff --git a/pom.xml b/pom.xml
index 18ccfda..f42966c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
edu.kit.aifb.atks
mensascraper
- 1.1.4
+ 1.1.5
pom