diff --git a/src/entities.py b/src/entities.py index 3651efe294..2d2a13e52d 100644 --- a/src/entities.py +++ b/src/entities.py @@ -8,7 +8,10 @@ class Dish: def __init__(self, name, price, ingredients): self.name = name - self.price = price + try: + self.price = float(price) + except ValueError: + self.price = price self.ingredients = ingredients def __repr__(self): diff --git a/src/menu_parser.py b/src/menu_parser.py index da7ac51333..7c7f93f846 100644 --- a/src/menu_parser.py +++ b/src/menu_parser.py @@ -178,9 +178,9 @@ def __parse_dishes(menu_html, location): class FMIBistroMenuParser(MenuParser): url = "http://www.wilhelm-gastronomie.de/tum-garching" - allergens = ["Gluten", "Laktose", "Milcheiweiß", "Hühnerei", "Soja", "Nüsse", "Erdnuss", "Sellerie", "Fisch", + allergens = ["Gluten", "Laktose", "Milcheiweiß", "Hühnerei", "Soja", "Nüsse", "Erdnuss", "Sellerie", "Fisch", "Krebstiere", "Weichtiere", "Sesam", "Senf", "Milch", "Ei"] - allergens_regex = r"(Allergene:((\s|\n)*(Gluten|Laktose|Milcheiweiß|Hühnerei|Soja|Nüsse|Erdnuss|Sellerie|Fisch|Krebstiere|Weichtiere|Sesam|Senf|Milch|Ei),?(?![\w-]))*)" + allergens_regex = r"(Allergene:((\s|\n)*(Gluten|Laktose|Milcheiweiß|Hühnerei|Soja|Nüsse|Erdnuss|Sellerie|Fisch|Krebstiere|Weichtiere|Sesam|Senf|Milch|Ei),?(?![\w-]))*)" price_regex = r"\€\s\d+,\d+" dish_regex = r".+?\€\s\d+,\d+" @@ -329,8 +329,9 @@ class IPPBistroMenuParser(MenuParser): split_days_regex_soup_one_line = re.compile(r'T agessuppe siehe Aushang|Tagessuppe siehe Aushang', re.IGNORECASE) split_days_regex_soup_two_line = re.compile(r'Aushang', re.IGNORECASE) split_days_regex_closed = re.compile(r'Aschermittwoch|Feiertag|Geschlossen', re.IGNORECASE) - price_regex = re.compile(r"\d+,\d+\s€[^)]") - dish_regex = re.compile(r".+?\d+,\d+\s€[^)]") + surprise_without_price_regex = re.compile(r"(Überraschungsmenü\s)(\s+[^\s\d]+)") + """Detects the ‚Überraschungsmenü‘ keyword if it has not a price. The price is expected between the groups.""" + dish_regex = re.compile(r"(.+?)(\d+,\d+|\?€)\s€[^)]") def parse(self, location): page = requests.get(self.url) @@ -451,25 +452,22 @@ def get_menus(self, text, year, week_number): lines_weekdays["fri"] += " " + line[pos_fri:].replace("\n", " ") for key in lines_weekdays: + # Appends `?€` to „Überraschungsmenü“ if it do not have a price. The second '€' is a separator for the + # later split + lines_weekdays[key] = self.surprise_without_price_regex.sub(r"\g<1>?€ € \g<2>", lines_weekdays[key]) # get rid of two-character umlauts (e.g. SMALL_LETTER_A+COMBINING_DIACRITICAL_MARK_UMLAUT) lines_weekdays[key] = unicodedata.normalize("NFKC", lines_weekdays[key]) # remove multi-whitespaces lines_weekdays[key] = ' '.join(lines_weekdays[key].split()) # get all dish including name and price - dish_names = re.findall(self.dish_regex, lines_weekdays[key] + " ") - # get dish prices - prices = re.findall(self.price_regex, ' '.join(dish_names)) - # convert prices to float - prices = [float(price.replace("€", "").replace(",", ".").strip()) for price in prices] - # remove price and commas from dish names - dish_names = [re.sub(self.price_regex, "", dish).strip() for dish in dish_names] + dish_names_price = re.findall(self.dish_regex, lines_weekdays[key] + ' ') # create ingredients # all dishes have the same ingridients ingredients = Ingredients("ipp-bistro") ingredients.parse_ingredients("Mi,Gl,Sf,Sl,Ei,Se,4") # create list of Dish objects - dishes = [Dish(dish_name, price, ingredients.ingredient_set) for (dish_name, price) in - list(zip(dish_names, prices))] + dishes = [Dish(dish_name.strip(), price.replace(',', '.').strip(), ingredients.ingredient_set) + for (dish_name, price) in dish_names_price] date = self.get_date(year, week_number, self.weekday_positions[key]) # create new Menu object and add it to dict menu = Menu(date, dishes) diff --git a/src/test/assets/ipp/KW_22-27.05.-31.05.19.txt b/src/test/assets/ipp/KW_22-27.05.-31.05.19.txt new file mode 100644 index 0000000000..0e7451338a --- /dev/null +++ b/src/test/assets/ipp/KW_22-27.05.-31.05.19.txt @@ -0,0 +1,60 @@ + KONRADHOF CATERING - Betriebskantine IPP + + Speiseplan KW 22 Montag, 27. Mai 2019 bis Freitag, 31. Mai 2019 + + Montag Dienstag Mittwoch Feiertag Geschlossen + + + + + Tagessuppe siehe Aushang Tagessuppe siehe Aushang Tagessuppe siehe Aushang + Suppentopf Preis ab 0,90 € Preis ab 0,90 € Preis ab 0,90 € + + + + + Kohlrabieintopf mit Kartoffeln Puddingmilchreis mit + Veggie Überraschungsmenü + (mit Wiener 4,50 €) Himbeersauce + + 3,50 € 3,70 € 3,50 € + + + + + Putenschnitzel in Zitronen- + Pfefferrahmgeschnetzeltes von Gnocchi Aurora, dazu Pesto +Traditionelle Küche Kapernsauce mit + der Pute mit Reis und Grana + Petersilienkartoffeln + 5,90 € 4,80 € 6,90 € + + + + Wokgericht + Penne "Diabolo" mit Cabanossi, + Gemüse-Couscous mit + Überraschungsmenü Peperoni,Paprika, Zucchini, +Internationale Küche mariniertem Harissa-Honig- + Chilipulver und Mais, dazu Grana + Hühnchen (leicht scharf) + 6,90 € 4,90 € + + + + + Luganer Schweinesteak mit "Kentucky-fried-Schnitzel", + "Battala Curry", süße Kartoffeln, + Senf, Schinken, Käse und Schweineschnitzel in Paprika- + Specials Erbsen, Kokosmilch, Senfkörner + Tomatenragout gratiniert, dazu Oregano-Panade, dazu + und Reis + Pommes frites Pommes frites + 6,90 € 6,20 € 4,90 € + + + Änderungen vorbehalten - Allergene und Zusatzstoffe siehe Tagesaushänge + Wir sind immer offen für Anregungen, Kritik und Fragen. Senden Sie uns einfach eine E-Mail an haage@konradhof.de + Wir möchten darauf hinweisen, daß Bestandteile von Laktose 19, glutenhaltigem Getreide 20, Senf 23, Sellerie 22, Eiern 31, Sesam 24 und Geschmacksverstärker 4 in allen unseren Gerichte enthalten sein können. + Obwohl wir in unserer Küche auf jegliche Geschmacksverstärker wie z.B. Fondor verzichten, beinhalten leider viele Produkte Glutamat (z.B. Gewürzmischungen, Käse, Panaden, Sojasauce aber auch Tomaten) + \ No newline at end of file diff --git a/src/test/test_menu_parser.py b/src/test/test_menu_parser.py index b71d819df3..4b825e9ea4 100644 --- a/src/test/test_menu_parser.py +++ b/src/test/test_menu_parser.py @@ -7,7 +7,8 @@ from datetime import date import main -from menu_parser import MenuParser, StudentenwerkMenuParser, FMIBistroMenuParser, IPPBistroMenuParser, MedizinerMensaMenuParser +from menu_parser import MenuParser, StudentenwerkMenuParser, FMIBistroMenuParser, IPPBistroMenuParser, \ + MedizinerMensaMenuParser from entities import Dish, Menu, Week import json @@ -38,9 +39,12 @@ class StudentenwerkMenuParserTest(unittest.TestCase): # dishes in Garching dish1_1_garching = Dish("Kartoffelgulasch mit Paprika", 1, set()) - dish1_2_garching = Dish("Hackfleischbällchen mit Champignonrahmsauce", 1.9, set(["R", "S", "Ei", "Gl", "GlW", "Kn", "Mi"])) - dish1_3_garching = Dish("Seelachsfilet (MSC) im Sesammantel mit Remouladensauce", 2.4, set(["1", "2", "3", "9", "Ei", "Fi", "Gl", "GlW", "Mi", "Se", "Sf"])) - dish1_4_garching = Dish("Gebackene Calamari-Ringe mit Remouladensauce", 2.6, set(["1", "2", "3", "9", "Ei", "Gl", "GlW", "Mi", "Sf", "Wt"])) + dish1_2_garching = Dish("Hackfleischbällchen mit Champignonrahmsauce", 1.9, + set(["R", "S", "Ei", "Gl", "GlW", "Kn", "Mi"])) + dish1_3_garching = Dish("Seelachsfilet (MSC) im Sesammantel mit Remouladensauce", 2.4, + set(["1", "2", "3", "9", "Ei", "Fi", "Gl", "GlW", "Mi", "Se", "Sf"])) + dish1_4_garching = Dish("Gebackene Calamari-Ringe mit Remouladensauce", 2.6, + set(["1", "2", "3", "9", "Ei", "Gl", "GlW", "Mi", "Sf", "Wt"])) dish2_1_garching = Dish("Kartoffeleintopf mit Majoran", 1, set(["Sl"])) dish2_2_garching = Dish("Gulasch vom Schwein", 1.9, set(["S", "Gl", "GlG", "GlW", "Kn", "Mi"])) @@ -51,11 +55,15 @@ class StudentenwerkMenuParserTest(unittest.TestCase): # dishes in Arcisstrasse dish1_1_arcisstrasse = Dish("Kartoffelgulasch mit Paprika", 1, set()) - dish1_2_arcisstrasse = Dish("Hackfleischbällchen mit Champignonrahmsauce", 1.55, set(["R", "S", "Ei", "Gl", "GlW", "Kn", "Mi"])) - dish1_3_arcisstrasse = Dish("Hackfleischbällchen mit Champignonrahmsauce (2)", 1.9, set(["R", "S", "Ei", "Gl", "GlW", "Kn", "Mi"])) + dish1_2_arcisstrasse = Dish("Hackfleischbällchen mit Champignonrahmsauce", 1.55, + set(["R", "S", "Ei", "Gl", "GlW", "Kn", "Mi"])) + dish1_3_arcisstrasse = Dish("Hackfleischbällchen mit Champignonrahmsauce (2)", 1.9, + set(["R", "S", "Ei", "Gl", "GlW", "Kn", "Mi"])) dish1_4_arcisstrasse = Dish("Pasta Pomodori", 1.9, set(["Gl", "GlW", "Kn"])) - dish1_5_arcisstrasse = Dish("Gebackene Calamari-Ringe mit Zitronen-Knoblauch-Dip", 2.6, set(["1", "2", "3", "9", "Ei", "Gl", "GlW", "Kn", "Mi", "Sf", "Wt"])) - dish1_6_arcisstrasse = Dish("Seelachsfilet (MSC) im Sesammantel mit Zitronen-Knoblauch-Dip", 2.6, set(["1", "3", "9", "Ei", "Fi", "Gl", "GlW", "Kn", "Mi", "Se", "Sf"])) + dish1_5_arcisstrasse = Dish("Gebackene Calamari-Ringe mit Zitronen-Knoblauch-Dip", 2.6, + set(["1", "2", "3", "9", "Ei", "Gl", "GlW", "Kn", "Mi", "Sf", "Wt"])) + dish1_6_arcisstrasse = Dish("Seelachsfilet (MSC) im Sesammantel mit Zitronen-Knoblauch-Dip", 2.6, + set(["1", "3", "9", "Ei", "Fi", "Gl", "GlW", "Kn", "Mi", "Se", "Sf"])) dish1_7_arcisstrasse = Dish("Pasta Pomodori (2)", "0.68€ / 100g", set(["Gl", "GlW", "Kn"])) dish1_8_arcisstrasse = Dish("Kartoffelgulasch mit Paprika (2)", "0.68€ / 100g", set()) dish1_9_arcisstrasse = Dish("Pasta mit Sojabolognese", "0.68€ / 100g", set(["Sl", "So"])) @@ -65,23 +73,29 @@ class StudentenwerkMenuParserTest(unittest.TestCase): # dishes in Großhadern dish1_1_großhadern = Dish("Pasta-Gemüse-Auflauf mit Tomatensauce", 1.9, set(["1", "Ei", "Gl", "GlW", "Kn", "Mi"])) - dish1_2_großhadern = Dish("Rinderroulade nach Hausfrauenart mit Senf-Gemüse-Sauce", 3, set(["R", "S", "2", "3", "99", "Gl", "GlG", "GlW", "Kn", "Mi", "Sf", "Sl", "Sw"])) + dish1_2_großhadern = Dish("Rinderroulade nach Hausfrauenart mit Senf-Gemüse-Sauce", 3, + set(["R", "S", "2", "3", "99", "Gl", "GlG", "GlW", "Kn", "Mi", "Sf", "Sl", "Sw"])) menu1_großhadern = Menu(menu3_date, [dish1_1_großhadern, dish1_2_großhadern]) def test_Should_ReturnMenu_When_PassedDateIsCorrect(self): self.assertEqual(self.menu1_garching, - self.studentenwerk_menu_parser.get_menus(self.menu_html_garching, "mensa-garching")[self.menu1_date]) + self.studentenwerk_menu_parser.get_menus(self.menu_html_garching, "mensa-garching")[ + self.menu1_date]) self.assertEqual(self.menu2_garching, - self.studentenwerk_menu_parser.get_menus(self.menu_html_garching, "mensa-garching")[self.menu2_date]) + self.studentenwerk_menu_parser.get_menus(self.menu_html_garching, "mensa-garching")[ + self.menu2_date]) self.assertEqual(self.menu1_arcisstrasse, - self.studentenwerk_menu_parser.get_menus(self.menu_html_arcisstrasse, "mensa-arcisstrasse")[self.menu1_date]) + self.studentenwerk_menu_parser.get_menus(self.menu_html_arcisstrasse, "mensa-arcisstrasse")[ + self.menu1_date]) self.assertEqual(self.menu1_großhadern, - self.studentenwerk_menu_parser.get_menus(self.menu_html_großhadern, "stubistro-grosshadern")[self.menu3_date]) + self.studentenwerk_menu_parser.get_menus(self.menu_html_großhadern, "stubistro-grosshadern")[ + self.menu3_date]) def test_Should_IgnoreDay_When_DateOfTheDayIsInAWrongFormat(self): - self.assertEqual(22, len(self.studentenwerk_menu_parser.get_menus(self.menu_html_wrong_date_format, "mensa-garching"))) + self.assertEqual(22, len( + self.studentenwerk_menu_parser.get_menus(self.menu_html_wrong_date_format, "mensa-garching"))) def test_Should_ReturnWeeks_When_ConvertingMenuToWeekObjects(self): menus = self.studentenwerk_menu_parser.get_menus(self.menu_html_garching, "mensa-garching") @@ -202,7 +216,8 @@ class FMIBistroParserTest(unittest.TestCase): dish2_mon2 = Dish("Valess-Schnitzel mit Tomaten-Couscous", 4.3, set(["Sl", "Gl", "Ei", "Mi"])) dish3_mon2 = Dish("Kasslerpfanne mit frischen Champignons und Spätzle", 4.9, set(["Sl", "Mi"])) dish1_tue2 = Dish("Gemüsereispfanne mit geräuchertem Tofu", 3.6, set(["Sl"])) - dish2_tue2 = Dish("Schweineschnitzel in Karottenpanade mit Rosmarin- Risoleekartoffeln", 5.3, set(["Sl", "Gl", "Ei"])) + dish2_tue2 = Dish("Schweineschnitzel in Karottenpanade mit Rosmarin- Risoleekartoffeln", 5.3, + set(["Sl", "Gl", "Ei"])) dish1_wed2 = Dish("Spaghetti al Pomodoro", 3.6, set(["Sl", "Gl"])) dish2_wed2 = Dish("Krustenbraten vom Schwein mit Kartoffelknödel und Krautsalat", 5.3, set(["Sl", "Gl"])) dish1_thu2 = Dish("Red-Thaicurrysuppe mit Gemüse und Kokosmilch", 2.9, set(["Sl"])) @@ -248,30 +263,40 @@ class IPPBistroParserTest(unittest.TestCase): date_wed1 = date(2017, 11, 22) date_thu1 = date(2017, 11, 23) date_fri1 = date(2017, 11, 24) - dish1_mon1 = Dish("Gefüllter Germknödel mit Vanillesauce", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_mon1 = Dish("Ofengulasch vom Rind mit Kürbis und Pflaumen, dazu Rigatoni", 5.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_mon1 = Dish("\"Palek Tofu\" Gebratener Tofu mit Spinat, Ingwer, Curry-Sahnesauce und Basmatireis", 5.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish4_mon1 = Dish("Gebratene Hähnchenbrust auf Fenchelgemüse, dazu Kräuterreis und Orangensauce", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish1_tue1 = Dish("Gebratene Weißkohl-Kartoffelpfanne mit gerösteten Sonnenblumenkernen", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_tue1 = Dish("Jägerschnitzel mit Spätzle oder Reis", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_tue1 = Dish("Vegetarisch gefüllte Tortelli mit leichter Zitronen-Buttersauce und gehobeltem Parmesan", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + dish1_mon1 = Dish("Gefüllter Germknödel mit Vanillesauce", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_mon1 = Dish("Ofengulasch vom Rind mit Kürbis und Pflaumen, dazu Rigatoni", 5.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_mon1 = Dish("\"Palek Tofu\" Gebratener Tofu mit Spinat, Ingwer, Curry-Sahnesauce und Basmatireis", 5.2, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish4_mon1 = Dish("Gebratene Hähnchenbrust auf Fenchelgemüse, dazu Kräuterreis und Orangensauce", 6.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish1_tue1 = Dish("Gebratene Weißkohl-Kartoffelpfanne mit gerösteten Sonnenblumenkernen", 3.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_tue1 = Dish("Jägerschnitzel mit Spätzle oder Reis", 4.8, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_tue1 = Dish("Vegetarisch gefüllte Tortelli mit leichter Zitronen-Buttersauce und gehobeltem Parmesan", 4.8, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) dish4_tue1 = Dish("\"Bami Goreng\" indonesische Bratnudeln mit Gemüse, Huhn, Schweinefleisch und Pilzen, " \ - "dazu Honig-Chili- Dip", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish1_wed1 = Dish("Erbseneintopf (mit Wienerle 4,20 €)", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_wed1 = Dish("Hackbraten mit Zigeunersauce und Reis", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + "dazu Honig-Chili- Dip", 6.9, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish1_wed1 = Dish("Erbseneintopf (mit Wienerle 4,20 €)", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_wed1 = Dish("Hackbraten mit Zigeunersauce und Reis", 4.8, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) dish3_wed1 = Dish("\"Farfalle Rustico\" mit Champignons, Schinken Tomaten und Peperoni (auf Wunsch mit " - "Reibekäse)", 4.6, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish4_wed1 = Dish("Rumpsteak mit Balsamico Pilzen und Wedges", 7.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + "Reibekäse)", 4.6, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish4_wed1 = Dish("Rumpsteak mit Balsamico Pilzen und Wedges", 7.9, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) dish1_thu1 = Dish("Mediterrane Frittata mit Zucchini, Kartoffeln, Paprika, kleiner Salatbeilage und " - "Joghurt-Limetten Dip", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_thu1 = Dish("Frischer Bayrischer Schweinenackenbraten vom Brett geschnitten dazu Kartoffel- Gurkensalat", 4.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + "Joghurt-Limetten Dip", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_thu1 = Dish("Frischer Bayrischer Schweinenackenbraten vom Brett geschnitten dazu Kartoffel- Gurkensalat", 4.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) dish3_thu1 = Dish("\"Enchilada Verdura\", überbackene Weizentortilla, gefüllt mit Hähnchenfleisch, Sauerrahm, " - "Kidneybohnen, Mais, dazu", 5.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish4_thu1 = Dish("\"Lamm Palak\" mit Spinat und Curry (mittelscharf), dazu Reis", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish1_fri1 = Dish("Nudelpfanne mit Gemüsesauce (auf Wunsch mit Reibekäse)", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_fri1 = Dish("Matjes \"Hausfrauen Art\" mit Salzkartoffeln", 5.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_fri1 = Dish("Currygeschnetzeltes von der Pute mit Früchten und Reis", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish4_fri1 = Dish("Honig-Kassler mit Apfel-Spitzkohl und Kartoffelspalten", 6.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + "Kidneybohnen, Mais, dazu", 5.9, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish4_thu1 = Dish("\"Lamm Palak\" mit Spinat und Curry (mittelscharf), dazu Reis", 6.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish1_fri1 = Dish("Nudelpfanne mit Gemüsesauce (auf Wunsch mit Reibekäse)", 3.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_fri1 = Dish("Matjes \"Hausfrauen Art\" mit Salzkartoffeln", 5.2, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_fri1 = Dish("Currygeschnetzeltes von der Pute mit Früchten und Reis", 4.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish4_fri1 = Dish("Honig-Kassler mit Apfel-Spitzkohl und Kartoffelspalten", 6.2, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) menu_mon1 = Menu(date_mon1, [dish1_mon1, dish2_mon1, dish3_mon1, dish4_mon1]) menu_tue1 = Menu(date_tue1, [dish1_tue1, dish2_tue1, dish3_tue1, dish4_tue1]) menu_wed1 = Menu(date_wed1, [dish1_wed1, dish2_wed1, dish3_wed1, dish4_wed1]) @@ -283,29 +308,40 @@ class IPPBistroParserTest(unittest.TestCase): date_wed2 = date(2017, 11, 29) date_thu2 = date(2017, 11, 30) date_fri2 = date(2017, 12, 1) - dish1_mon2 = Dish("Wirsing-Kartoffelauflauf mit Bechamel und Käse", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_mon2 = Dish("Paprikarahm Geschnetzeltes mit Paprikamix und Nudeln", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_mon2 = Dish("\"Dal Curry\" mit Kartoffeln, Kokosmilch, Ingwer, Koriander, Reis und scharfem Chutney", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + dish1_mon2 = Dish("Wirsing-Kartoffelauflauf mit Bechamel und Käse", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_mon2 = Dish("Paprikarahm Geschnetzeltes mit Paprikamix und Nudeln", 4.8, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_mon2 = Dish("\"Dal Curry\" mit Kartoffeln, Kokosmilch, Ingwer, Koriander, Reis und scharfem Chutney", 4.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) dish4_mon2 = Dish("Deftiger Hüttenschmaus, Rinderrostbraten mit Zwiebeln, Semmelknödel und gebratenem Gemüse", - 7.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish1_tue2 = Dish("Herbstliche Gemüse-Reis Pfanne mit pikantem Mango Dip", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_tue2 = Dish("Krautwickerl mit Speck-Zwieblsauce und Püree", 4.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_tue2 = Dish("Rigatoni mit Rosenkohl und Schnittlauch", 4.6, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish4_tue2 = Dish("Spanferkelrücken mit Knödel und Bayerisch Kraut", 6.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + 7.9, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish1_tue2 = Dish("Herbstliche Gemüse-Reis Pfanne mit pikantem Mango Dip", 3.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_tue2 = Dish("Krautwickerl mit Speck-Zwieblsauce und Püree", 4.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_tue2 = Dish("Rigatoni mit Rosenkohl und Schnittlauch", 4.6, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish4_tue2 = Dish("Spanferkelrücken mit Knödel und Bayerisch Kraut", 6.8, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) dish1_wed2 = Dish("Weißwurst Gröst ́l mit Knödel, Lauchzwiebeln, Karotten und Kräuter auf Wunsch mit " - "Bratenjus", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_wed2 = Dish("Estragonrahmschnitzel mit Pommes frites oder Reis", 4.6, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_wed2 = Dish("Gemüse Lasagne", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish4_wed2 = Dish("\"Tandoori Chicken\" mit Auberginen, Tomaten, Zucchini, Zitronenschale Minze und Reis", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish1_thu2 = Dish("Rote Beete Eintopf mit Kartoffeln, Nudeln und Dill", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_thu2 = Dish("Sauerbraten \"Nepal\" mit weißen Bohnen, getrockneten Tomaten und Pasta", 5.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_thu2 = Dish("\"Kaku Chicken\" mit geröstetem Curry, Kokosraspel, Tomaten und Reis", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish4_thu2 = Dish("Leberkäs Burger special mit Pommes frites und Cole slaw", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish1_fri2 = Dish("Exotische Linsen-Spätzle Pfanne", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish2_fri2 = Dish("Seelachsfilet gebacken mit Sardellenmayonnaise und Pommes frites", 4.6, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) - dish3_fri2 = Dish("Gemüse-Linguini mit Pesto-Rahmsauce und Parmesankäse", 4.4, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + "Bratenjus", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_wed2 = Dish("Estragonrahmschnitzel mit Pommes frites oder Reis", 4.6, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_wed2 = Dish("Gemüse Lasagne", 4.9, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish4_wed2 = Dish("\"Tandoori Chicken\" mit Auberginen, Tomaten, Zucchini, Zitronenschale Minze und Reis", 6.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish1_thu2 = Dish("Rote Beete Eintopf mit Kartoffeln, Nudeln und Dill", 3.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_thu2 = Dish("Sauerbraten \"Nepal\" mit weißen Bohnen, getrockneten Tomaten und Pasta", 5.8, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_thu2 = Dish("\"Kaku Chicken\" mit geröstetem Curry, Kokosraspel, Tomaten und Reis", 6.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish4_thu2 = Dish("Leberkäs Burger special mit Pommes frites und Cole slaw", 4.8, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish1_fri2 = Dish("Exotische Linsen-Spätzle Pfanne", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish2_fri2 = Dish("Seelachsfilet gebacken mit Sardellenmayonnaise und Pommes frites", 4.6, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) + dish3_fri2 = Dish("Gemüse-Linguini mit Pesto-Rahmsauce und Parmesankäse", 4.4, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) dish4_fri2 = Dish("Schweinefilet Medaillons in grüner Pfefferrahmsauce mit Kroketten und karamellisierten " - "Möhren", 7.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + "Möhren", 7.2, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) menu_mon2 = Menu(date_mon2, [dish1_mon2, dish2_mon2, dish3_mon2, dish4_mon2]) menu_tue2 = Menu(date_tue2, [dish1_tue2, dish2_tue2, dish3_tue2, dish4_tue2]) @@ -342,25 +378,33 @@ def test_Should_Return_Menu2(self): y18w18_date_fri = date(2018, 5, 4) y18w18_dishes_wed = [ - Dish("Kirschmichel mit Vanillesauce", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), + Dish("Kirschmichel mit Vanillesauce", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), Dish("Fitnessteak vom Grill, dazu Zitrone oder Kräuterbutter, Grilltomate und Ofenkartoffel mit " - "Sauerrahmdip oder bunter Salatauswahl", 8.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("\"Chana Dal\" Kichererbsen, Kartoffeln, Kokosmilch, Curryblätter und Reis", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), + "Sauerrahmdip oder bunter Salatauswahl", 8.2, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("\"Chana Dal\" Kichererbsen, Kartoffeln, Kokosmilch, Curryblätter und Reis", 4.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), Dish("Calamari alla Romana, gebackene Tintenfischringe mit Knoblauchmayonnaise und " - "gemischtem Blattsalat mit Tomate und Gurke", 6.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])) + "gemischtem Blattsalat mit Tomate und Gurke", 6.2, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}) ] y18w18_dishes_thu = [ - Dish("Grenaillekartoffeln mit Apfel-Möhren-Quark, auf Wunsch mit gerösteten Sonnenblumenkernen", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Böfflamott, gebeizter Rinderschmorbraten mit Rotwein, dazu Frühlingsgemüse und Semmelknödel", 6.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Fussili mit Lauch, Ricotta, Meerrettich und frischem Basilikum", 4.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Aus dem Wok Putengeschnetzeltes mit Mangold, Möhren, Frühlings- zwiebeln und Basmatireis", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"]))] + Dish("Grenaillekartoffeln mit Apfel-Möhren-Quark, auf Wunsch mit gerösteten Sonnenblumenkernen", 3.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Böfflamott, gebeizter Rinderschmorbraten mit Rotwein, dazu Frühlingsgemüse und Semmelknödel", 6.8, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Fussili mit Lauch, Ricotta, Meerrettich und frischem Basilikum", 4.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Aus dem Wok Putengeschnetzeltes mit Mangold, Möhren, Frühlings- zwiebeln und Basmatireis", 6.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"})] y18w18_dishes_fri = [ - Dish("Curryreispfanne mit Gemüse, Ananas, Kreuzkümmel, Koriander und Chili-Dip", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Zitronen Seelachs auf Paprika-Champignon Gemüse, Petersilien- Kartoffeln und leichter Buttersauce", 5.90, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Paprikarahmgeschnetzeltes mit Hörnchennudeln", 5.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("\"Pasta Arora\" italienische Nudeln mit Tomatensahne, Mozzarella und Basilikum", 4.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"]))] + Dish("Curryreispfanne mit Gemüse, Ananas, Kreuzkümmel, Koriander und Chili-Dip", 3.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Zitronen Seelachs auf Paprika-Champignon Gemüse, Petersilien- Kartoffeln und leichter Buttersauce", 5.90, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Paprikarahmgeschnetzeltes mit Hörnchennudeln", 5.2, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("\"Pasta Arora\" italienische Nudeln mit Tomatensahne, Mozzarella und Basilikum", 4.5, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"})] y18w18_menu_mon = Menu(y18w18_date_mon, set()) y18w18_menu_tue = Menu(y18w18_date_tue, set()) @@ -389,29 +433,37 @@ def test_Holiday_Should_Return_Menu_y18w18(self): y18w19_date_fri = date(2018, 5, 11) y18w19_dishes_mon = [ - Dish("Gemüse-Schupfnudeln dazu Sauerrahm-Dip", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Würziger Putenbrustbraten mit Frühlingsgemüse und Kroketten", 7.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Gnocchi-Lauch Gratin mit Käse überbacken", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Schweinefleisch süß-sauer mit Ananas, Paprika, Tomaten und Reis", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"]))] + Dish("Gemüse-Schupfnudeln dazu Sauerrahm-Dip", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Würziger Putenbrustbraten mit Frühlingsgemüse und Kroketten", 7.2, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Gnocchi-Lauch Gratin mit Käse überbacken", 4.8, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Schweinefleisch süß-sauer mit Ananas, Paprika, Tomaten und Reis", 6.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"})] y18w19_dishes_tue = [ - Dish("Gebackener Edamer mit Rohkostsalat und Preiselbeeren", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Köttbullar (Hackfleischbällchen) mit Rahmsauce, Preiselbeeren und Petersilienkartoffeln", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Burgunderbraten vom Rind mit Knödel und Blaukraut", 6.2, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Quarkknödel auf Erdbeer-Rhabarber Kompott", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"]))] + Dish("Gebackener Edamer mit Rohkostsalat und Preiselbeeren", 4.9, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Köttbullar (Hackfleischbällchen) mit Rahmsauce, Preiselbeeren und Petersilienkartoffeln", 4.8, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Burgunderbraten vom Rind mit Knödel und Blaukraut", 6.2, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Quarkknödel auf Erdbeer-Rhabarber Kompott", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"})] y18w19_dishes_wed = [ - Dish("Italienische Minestrone mit Reis", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Gebackenes Schweineschnitzel mit Zitrone und Pommes frites", 5.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("\"Vegetarian Vindaloo\" Kartoffeln und Tomaten in Currysauce, dazu Reis und frischer Koriander", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), + Dish("Italienische Minestrone mit Reis", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Gebackenes Schweineschnitzel mit Zitrone und Pommes frites", 5.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("\"Vegetarian Vindaloo\" Kartoffeln und Tomaten in Currysauce, dazu Reis und frischer Koriander", 4.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), # Note the " after the Basilikum is correct since it is part of the PDF - Dish("Farfalle \"al Tonno\" mit Thunfisch, Kapern, Oliven, Tomaten und Basilikum\"", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"]))] + Dish("Farfalle \"al Tonno\" mit Thunfisch, Kapern, Oliven, Tomaten und Basilikum\"", 4.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"})] y18w19_dishes_fri = [ - Dish("Spaghetti mit Tomatensauce und Reibekäse", 3.5, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("2 Paar Schweinswürst ́l auf Sauerkraut und Püree", 4.8, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("\"Chicken Padam Pasanda\" mit Nusssauce, Kokos- flocken und indischen Gewürzen, dazu Basmatireis", 6.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"])), - Dish("Kartoffeltasche, gefüllt mit Kräuterfrischkäse auf Paprikagemüse", 4.9, set(["Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"]))] + Dish("Spaghetti mit Tomatensauce und Reibekäse", 3.5, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("2 Paar Schweinswürst ́l auf Sauerkraut und Püree", 4.8, {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("\"Chicken Padam Pasanda\" mit Nusssauce, Kokos- flocken und indischen Gewürzen, dazu Basmatireis", 6.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"}), + Dish("Kartoffeltasche, gefüllt mit Kräuterfrischkäse auf Paprikagemüse", 4.9, + {"Mi", "Gl", "Sf", "Sl", "Ei", "Se", "4"})] y18w19_menu_mon = Menu(y18w19_date_mon, y18w19_dishes_mon) y18w19_menu_tue = Menu(y18w19_date_tue, y18w19_dishes_tue) @@ -431,6 +483,51 @@ def test_Holiday_Should_Return_Menu_y18w19(self): self.assertEqual(self.y18w19_menu_thu, menus_actual[self.y18w19_date_thu]) self.assertEqual(self.y18w19_menu_fri, menus_actual[self.y18w19_date_fri]) + ## "Überraschungsmenü" and "Geschlossen" in first line of table + + y19w22_dishes_mon = [ + Dish("Kohlrabieintopf mit Kartoffeln (mit Wiener 4,50 €)", 3.5, {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("Pfefferrahmgeschnetzeltes von der Pute mit Reis", 5.9, {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("Überraschungsmenü", "?€", {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("Luganer Schweinesteak mit Senf, Schinken, Käse und Tomatenragout gratiniert, dazu Pommes frites", 6.9, + {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'})] + y19w22_dishes_tue = [ + Dish("Überraschungsmenü", 3.7, {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("Gnocchi Aurora, dazu Pesto und Grana", 4.8, {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("Wokgericht Gemüse-Couscous mit mariniertem Harissa-Honig- Hühnchen (leicht scharf)", 6.9, + {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("\"Kentucky-fried-Schnitzel\", Schweineschnitzel in Paprika- Oregano-Panade, dazu Pommes frites", 6.2, + {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'})] + y19w22_dishes_wed = [ + Dish("Puddingmilchreis mit Himbeersauce", 3.5, {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("Putenschnitzel in Zitronen- Kapernsauce mit Petersilienkartoffeln", 6.9, + {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("Penne \"Diabolo\" mit Cabanossi, Peperoni,Paprika, Zucchini, Chilipulver und Mais, dazu Grana", 4.9, + {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'}), + Dish("\"Battala Curry\", süße Kartoffeln, Erbsen, Kokosmilch, Senfkörner und Reis", 4.9, + {'Sf', 'Mi', 'Sl', 'Ei', '4', 'Se', 'Gl'})] + + y19w22_date_mon = date(2019, 5, 27) + y19w22_date_tue = date(2019, 5, 28) + y19w22_date_wed = date(2019, 5, 29) + y19w22_date_thu = date(2019, 5, 30) + y19w22_date_fri = date(2019, 5, 30) + + y19w22_menu_mon = Menu(y19w22_date_mon, y19w22_dishes_mon) + y19w22_menu_tue = Menu(y19w22_date_tue, y19w22_dishes_tue) + y19w22_menu_wed = Menu(y19w22_date_wed, y19w22_dishes_wed) + + y19w22_test_menu = open('src/test/assets/ipp/KW_22-27.05.-31.05.19.txt', 'r').read() + + def test_surprise_holiday_first_line_y19w22(self): + menus_actual = self.ipp_parser.get_menus(self.y19w22_test_menu, year=2019, week_number=22) + + self.assertEqual(self.y19w22_menu_mon, menus_actual[self.y19w22_date_mon]) + self.assertEqual(self.y19w22_menu_tue, menus_actual[self.y19w22_date_tue]) + self.assertEqual(self.y19w22_menu_wed, menus_actual[self.y19w22_date_wed]) + self.assertEqual(Menu(self.y19w22_date_thu, []), menus_actual[self.y19w22_date_thu]) + self.assertEqual(Menu(self.y19w22_date_fri, []), menus_actual[self.y19w22_date_fri]) + class MedizinerMensaParserTest(unittest.TestCase): mediziner_mensa_parser = MedizinerMensaMenuParser() @@ -501,27 +598,32 @@ class MedizinerMensaParserTest(unittest.TestCase): dish1_mon2 = Dish("Blumenkohlcremesuppe", "N/A", set(["Gl", "Mi"])) dish2_mon2 = Dish("Pfannengyros mit Tzaziki", "N/A", set(["S", "Mi"])) dish3_mon2 = Dish("Spaghetti \" Gemüsebolognese \"", "N/A", set(["Sl", "Gl"])) - dish4_mon2 = Dish("Thai-Curry aus Blumenkohl und Kartoffeln mit Gemüsreis und Salat", 2.2, set(["Sw", "So", "Gl", "Mi"])) + dish4_mon2 = Dish("Thai-Curry aus Blumenkohl und Kartoffeln mit Gemüsreis und Salat", 2.2, + set(["Sw", "So", "Gl", "Mi"])) dish1_tue2 = Dish("Gelbe Erbsensuppe", "N/A", set(["Gl", "Mi"])) dish2_tue2 = Dish("Grüner Bohneneintopf mit Rindfleisch", "N/A", set(["Sl", "R"])) dish3_tue2 = Dish("Veggi-Gulasch", "N/A", set(["Sl", "Gl"])) - dish4_tue2 = Dish("Rotbarschfischfilet in Dillsoße mit Kürbisgemüse und Wacholderreis", 3.65, set(["Mi", "Gl", "Fi"])) + dish4_tue2 = Dish("Rotbarschfischfilet in Dillsoße mit Kürbisgemüse und Wacholderreis", 3.65, + set(["Mi", "Gl", "Fi"])) dish1_wed2 = Dish("Rinderbrühe \" Gärtnerin \"", "N/A", set(["Sl", "R"])) dish2_wed2 = Dish("Schweinegulasch", "N/A", set(["Gl", "S"])) dish3_wed2 = Dish("Gemüsekuchen mit Mozzarella überbacken", "N/A", set(["Sl", "Ei", "Gl", "Mi"])) - dish4_wed2 = Dish("Schinkennudeln mit Tomatensoße, dazu gemischter Salat", 2.1, set(["Gl", "Mi", "Sf", "Sw", "2", "3", "8", "G"])) + dish4_wed2 = Dish("Schinkennudeln mit Tomatensoße, dazu gemischter Salat", 2.1, + set(["Gl", "Mi", "Sf", "Sw", "2", "3", "8", "G"])) dish1_thu2 = Dish("Kürbiscremesuppe", "N/A", set(["Gl", "Mi"])) dish2_thu2 = Dish("Rinderhackbraten", "N/A", set(["Gl", "Ei", "Mi", "Sf", "So", "R"])) dish3_thu2 = Dish("Dinkel-Kräuterbratling", "N/A", set(["Ei", "Gl", "Mi"])) - dish4_thu2 = Dish("Pikantes Risotto mit buntem Gemüse und Tomatensalat mit Basilikum", 2.15, set(["Mi", "1", "2", "Sw"])) + dish4_thu2 = Dish("Pikantes Risotto mit buntem Gemüse und Tomatensalat mit Basilikum", 2.15, + set(["Mi", "1", "2", "Sw"])) dish1_fri2 = Dish("Minestrone", "N/A", set(["Sl", "Ei", "Gl"])) dish2_fri2 = Dish("Gebratene Hähnchenbrust", "N/A", set(["G"])) dish3_fri2 = Dish("Scheiterhaufen mit Apfel-Vanille-Ragout", "N/A", set(["Ei", "Gl", "Mi", "So", "9", "3"])) - dish4_fri2 = Dish("Paniertes Schnitzel vom Schwein und Pute mit Kartoffelmayosalat und Zitronenecke", 3.6, set(["Gl", "Ei", "Sf", "4", "3", "G", "S"])) + dish4_fri2 = Dish("Paniertes Schnitzel vom Schwein und Pute mit Kartoffelmayosalat und Zitronenecke", 3.6, + set(["Gl", "Ei", "Sf", "4", "3", "G", "S"])) dish1_sat2 = Dish("Tomatencremesuppe", "N/A", set(["Gl", "Mi"])) dish2_sat2 = Dish("Pichelsteiner Gemüseeintopf mit Rindfleisch", "N/A", set(["Sl", "R"]))