diff --git a/recipe_scrapers/hellofresh.py b/recipe_scrapers/hellofresh.py index 871995213..b45d231b2 100644 --- a/recipe_scrapers/hellofresh.py +++ b/recipe_scrapers/hellofresh.py @@ -17,7 +17,10 @@ def yields(self): return self.schema.yields() def ingredients(self): - return self.schema.ingredients() + if not self._serving_one_on_page(): + return self.schema.ingredients() + else: + return [f"2 * {ingredient}" for ingredient in self.schema.ingredients()] def instructions(self): return self.schema.instructions() @@ -33,3 +36,19 @@ def cuisine(self): def category(self): return self.schema.category() + + def _serving_one_on_page(self): + # ad-hoc solution for https://github.com/hhursev/recipe-scrapers/issues/527 + try: + return ( + self.soup.find("div", {"data-test-id": "serving-amount-container"}) + .find("div", {"class": "fela-_txm046"}) + .select("div[class*=ds]")[0] + .get_text() + == "1" + ) + except (AttributeError, IndexError): + # AttributeError if .find(..) method errored + # IndexError if the .select(..)[0] did not work as expected + # both cases to fall back to default behaviour + return True diff --git a/tests/test_data/hellofresh_adhoc.testhtml b/tests/test_data/hellofresh_adhoc.testhtml new file mode 100644 index 000000000..a2b0df5cc --- /dev/null +++ b/tests/test_data/hellofresh_adhoc.testhtml @@ -0,0 +1,376 @@ + + + + Chakchouka au fromage de chèvre Recipe | HelloFresh + + + + + + + + + + + + + + + + + + + + + +
If you are using a screen reader and are having problems using this website, please call 1-646-846-3663 for assistance.Skip to main content
HelloFresharrow right iconarrow right iconRecipesarrow right iconarrow right iconChakchouka Au Fromage De Chèvre
topBanner
Chakchouka au fromage de chèvre

Chakchouka au fromage de chèvre

avec du piment, des œufs et du persil

Read more

La + chakchouka est l'un de nos plats végétariens préférés. Vous avez +énormément de possibilités avec ce plat, par exemple en variant le type +de fromage utilisé. Les œufs sont pleins de bons nutriments, tels que +des vitamines, des minéraux et bien sûr des protéines - un choix +végétarien nutritif.

Tags:Végétarien
Allergens:ŒufLait (dont lactose)MoutardeGluten/GlutenCéréales contenant du gluten

Produced in a facility that processes eggs, milk, fish, peanuts, sesame, shellfish, soy, tree nuts, and wheat.

Total Time35 minutes
Cooking difficultyMedium
Ingredients
serving amount
Ingredientsarrow down iconarrow down icon
serving amount
Oignon jaune

1 pièce

Oignon jaune

Gousse d'ail

2 pièce

Gousse d'ail

Piment rouge

½ pièce

Piment rouge

Poivron rouge

1 pièce

Poivron rouge

Tomate allongée

4 pièce

Tomate allongée

Œuf de poule élevée en plein air

4 pièce

Œuf de poule élevée en plein air

(ContainsŒuf)
Fromage de chèvre frais

75 g

Fromage de chèvre frais

(ContainsŒuf, Lait (dont lactose), Moutarde, Gluten/GlutenMay containŒuf, Moutarde, Gluten/Gluten)
Persil plat

5 g

Persil plat

(May containCéléri)
Demi-baguette

2 pièce

Demi-baguette

(ContainsCéréales contenant du gluten)

Not included in your delivery

Cube de bouillon de légumes

½ pièce

Cube de bouillon de légumes

Huile d'olive

1 cs

Huile d'olive

Poivre et sel

selon le goût

Poivre et sel

Nutrition Values
Nutrition Valuesarrow down iconarrow down icon
Énergie (kJ)3584 kJ
Énergie (kcal)857 kcal
Matières grasses28 g
dont acides gras saturés10 g
Glucides109 g
dont sucres15 g
Protéines35 g
Sel4 g
Due + to the different suppliers we purchase our products from, nutritional +facts per meal can vary from the website to what is received in the +delivered box, depending on your region.
Utensils
Utensilsarrow down iconarrow down icon
Couteau
Wok avec couvercle
Instructions
Instructionsarrow up iconarrow up icon
Préparer
1

Préchauffez + le four à 210 degrés. Hachez l'oignon et écrasez ou émincez l'ail. +Épépinez le piment rouge et le poivron rouge et coupez-les en lanières. +Coupez les tomates prunes en petits dés et ciselez finement le persil +frisé.

Cuire les légumes
2

Faites + chauffer l’huile d’olive dans un wok ou une sauteuse avec couvercle et +faites-y revenir l’oignon, l’ail et le piment rouge 2 minutes à feu +moyen-vif. Puis, ajoutez le poivron, la tomate et la moitié du persil.

Faire mijoter les légumes
3

Ajoutez + ensuite 30 ml d’eau par personne dans le wok ou la sauteuse, puis +émiettez le cube de bouillon par-dessus. Portez à ébullition tout en +remuant, puis laissez mijoter 5 minutes à couvert sur feu moyen-vif. +Salez et poivrez.

Cuire les oeufs
4

Pour + chaque œuf, faites un petit cratère dans le mélange de légumes, puis +cassez-y les œufs. Saupoudrez-les de sel et de poivre. Disposez le +chèvre frais émietté sur l’ensemble, couvrez et laissez les œufs cuire +pendant 10 minutes. Lors des 4 dernières minutes, retirez le couvercle, +augmentez un peu le feu et laissez l’excédent d’eau s’évaporer.

Cuire les dmi-baguettes
5

Pendant ce temps, enfournez les demi-baguettes 6 à 8 minutes ou jusqu’à ce qu’elles soient dorées.

Servir
6

Servez le chakchouka dans les assiettes. Garnissez du reste de persil et présentez les demi-baguettes en accompagnement.

+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/tests/test_hellofresh_adhoc.py b/tests/test_hellofresh_adhoc.py new file mode 100644 index 000000000..04a039cdf --- /dev/null +++ b/tests/test_hellofresh_adhoc.py @@ -0,0 +1,72 @@ +from recipe_scrapers.hellofresh import HelloFresh +from tests import ScraperTest + + +class TestHelloFreshScraperAdHoc(ScraperTest): + + scraper_class = HelloFresh + test_file_name = "hellofresh_adhoc" + + def test_canonical_url(self): + self.assertEqual( + "https://www.hellofresh.fr/recipes/chakchouka-au-fromage-de-chevre-5eb41aa7d5418a482a67b864", + self.harvester_class.canonical_url(), + ) + + def test_title(self): + self.assertEqual( + "Chakchouka au fromage de chèvre avec du piment, des œufs et du persil", + self.harvester_class.title(), + ) + + def test_total_time(self): + self.assertEqual(35, self.harvester_class.total_time()) + + def test_yields(self): + self.assertEqual("2 servings", self.harvester_class.yields()) + + def test_ingredients(self): + self.assertEqual( + [ + "2 * ¼ pièce Cube de bouillon de légumes", + "2 * ½ pièce Oignon jaune", + "2 * 1 pièce Gousse d'ail", + "2 * ¼ pièce Piment rouge", + "2 * ½ pièce Poivron rouge", + "2 * 2 pièce Tomate allongée", + "2 * 2 pièce Œuf de poule élevée en plein air", + "2 * 50 g Fromage de chèvre frais", + "2 * 2.5 g Persil plat", + "2 * 1 pièce Demi-baguette", + "2 * 1 cs Huile d'olive", + "2 * selon le goût Poivre et sel", + ], + self.harvester_class.ingredients(), + ) + + def test_instructions(self): + self.assertEqual( + """Préchauffez le four à 210 degrés. Hachez l'oignon et écrasez ou émincez l'ail. Épépinez le piment rouge et le poivron rouge et coupez-les en lanières. Coupez les tomates prunes en petits dés et ciselez finement le persil frisé.\nFaites chauffer l’huile d’olive dans un wok ou une sauteuse avec couvercle et faites-y revenir l’oignon, l’ail et le piment rouge 2 minutes à feu moyen-vif. Puis, ajoutez le poivron, la tomate et la moitié du persil.\nAjoutez ensuite 30 ml d’eau par personne dans le wok ou la sauteuse, puis émiettez le cube de bouillon par-dessus. Portez à ébullition tout en remuant, puis laissez mijoter 5 minutes à couvert sur feu moyen-vif. Salez et poivrez.\nPour chaque œuf, faites un petit cratère dans le mélange de légumes, puis cassez-y les œufs. Saupoudrez-les de sel et de poivre. Disposez le chèvre frais émietté sur l’ensemble, couvrez et laissez les œufs cuire pendant 10 minutes. Lors des 4 dernières minutes, retirez le couvercle, augmentez un peu le feu et laissez l’excédent d’eau s’évaporer.\nPendant ce temps, enfournez les demi-baguettes 6 à 8 minutes ou jusqu’à ce qu’elles soient dorées.\nServez le chakchouka dans les assiettes. Garnissez du reste de persil et présentez les demi-baguettes en accompagnement.""", + self.harvester_class.instructions(), + ) + + def test_nutrients(self): + self.assertEqual( + { + "calories": "857 kcal", + "fatContent": "28 g", + "saturatedFatContent": "10 g", + "carbohydrateContent": "109 g", + "sugarContent": "15 g", + "proteinContent": "35 g", + "sodiumContent": "4 g", + "servingSize": "654", + }, + self.harvester_class.nutrients(), + ) + + def test_cuisine(self): + self.assertEqual("Middle Eastern", self.harvester_class.cuisine()) + + def test_category(self): + self.assertEqual("main course", self.harvester_class.category()) diff --git a/tests/test_madewithlau.py b/tests/test_madewithlau.py index 041dc8ac8..70aecef64 100644 --- a/tests/test_madewithlau.py +++ b/tests/test_madewithlau.py @@ -10,7 +10,6 @@ def test_host(self): self.assertEqual("madewithlau.com", self.harvester_class.host()) def test_author(self): - print(self.harvester_class.host()) self.assertEqual("Made With Lau", self.harvester_class.author()) def test_title(self):