diff --git a/lib/Helper/HTMLParser/HttpJsonLdParser.php b/lib/Helper/HTMLParser/HttpJsonLdParser.php
index d4a08b3d..fb4545b6 100644
--- a/lib/Helper/HTMLParser/HttpJsonLdParser.php
+++ b/lib/Helper/HTMLParser/HttpJsonLdParser.php
@@ -117,7 +117,7 @@ class HttpJsonLdParser extends AbstractHtmlParser {
*/
private function mapGraphField(array &$json) {
if (isset($json['@graph']) && is_array($json['@graph'])) {
- $tmp = $this->searchForRecipeInArray($json[@graph]);
+ $tmp = $this->searchForRecipeInArray($json['@graph']);
if ($tmp !== null) {
$json = $tmp;
diff --git a/tests/Unit/Helper/HTMLParser/HttpJsonLdParserTest.php b/tests/Unit/Helper/HTMLParser/HttpJsonLdParserTest.php
index 1fcb41cc..032a84bf 100644
--- a/tests/Unit/Helper/HTMLParser/HttpJsonLdParserTest.php
+++ b/tests/Unit/Helper/HTMLParser/HttpJsonLdParserTest.php
@@ -6,18 +6,49 @@ use PHPUnit\Framework\TestCase;
use OCA\Cookbook\Service\JsonService;
use OCP\IL10N;
use OCA\Cookbook\Helper\HTMLParser\HttpJsonLdParser;
+use OCA\Cookbook\Exception\HtmlParsingException;
+/**
+ * @coversDefaultClass \OCA\Cookbook\Helper\HTMLParser\HttpJsonLdParser
+ * @covers ::
+ * @covers ::
+ * @author christian
+ *
+ */
class HttpJsonLdParserTest extends TestCase {
-
public function dataProvider(): array {
return [
- ['res/caseA.html', true, 'res/caseA.json']
+ 'caseA' => ['res/caseA.html', true, 'res/caseA.json'],
+ 'caseB' => ['res/caseB.html', true, 'res/caseB.json'],
+ 'caseC' => ['res/caseC.html', false, null],
+ 'caseD' => ['res/caseD.html', false, null],
+ 'caseE' => ['res/caseE.html', false, null],
+ 'caseF' => ['res/caseF.html', true, 'res/caseF.json'],
+ 'caseG' => ['res/caseG.html', true, 'res/caseG.json'],
+ 'caseH' => ['res/caseH.html', true, 'res/caseH.json'],
];
}
+ /**
+ * @covers ::__construct
+ * @covers \OCA\Cookbook\Helper\HTMLParser\AbstractHtmlParser::__construct
+ */
+ public function testConstructor(): void {
+ $jsonService = $this->createStub(JsonService::class);
+ $l = $this->createStub(IL10N::class);
+
+ $parser = new HttpJsonLdParser($l, $jsonService);
+
+ $lProperty = new \ReflectionProperty(HttpJsonLdParser::class, 'l');
+ $lProperty->setAccessible(true);
+ $lSaved = $lProperty->getValue($parser);
+ $this->assertSame($l, $lSaved);
+ }
+
/**
* @dataProvider dataProvider
+ * @covers ::parse
* @param string $file
*/
public function testHTMLFile($file, $valid, $jsonFile): void {
@@ -39,7 +70,7 @@ class HttpJsonLdParserTest extends TestCase {
$this->assertTrue($valid);
$this->assertEquals($expected, $res);
- } catch (\OCA\Cookbook\Exception\ImportException $ex) {
+ } catch (HtmlParsingException $ex) {
$this->assertFalse($valid);
}
}
diff --git a/tests/Unit/Helper/HTMLParser/res/caseB.html b/tests/Unit/Helper/HTMLParser/res/caseB.html
new file mode 100644
index 00000000..28877781
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseB.html
@@ -0,0 +1,64 @@
+
+
+
+
+ Lamm-Tajine mit Walnüssen und Feigen von Gallo | Chefkoch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Unit/Helper/HTMLParser/res/caseE.html b/tests/Unit/Helper/HTMLParser/res/caseE.html
new file mode 100644
index 00000000..8ae804f3
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseE.html
@@ -0,0 +1,14 @@
+
+
+
+
+ Lamm-Tajine mit Walnüssen und Feigen von Gallo | Chefkoch
+
+
+
+
+
+
+
+
+
diff --git a/tests/Unit/Helper/HTMLParser/res/caseF.html b/tests/Unit/Helper/HTMLParser/res/caseF.html
new file mode 100644
index 00000000..589a3f8a
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseF.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Unit/Helper/HTMLParser/res/caseF.json b/tests/Unit/Helper/HTMLParser/res/caseF.json
new file mode 100644
index 00000000..77dcb5eb
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseF.json
@@ -0,0 +1,27 @@
+{
+ "@context": "http://schema.org",
+ "@type": "Recipe",
+ "image": "https://img.chefkoch-cdn.de/rezepte/3728791565272416/bilder/1230011/crop-960x540/lamm-tajine-mit-walnuessen-und-feigen.jpg",
+ "recipeCategory": "Schmoren",
+ "recipeIngredient": [
+ "800 g Lammschulter", "1 gro\u00dfe Zwiebel(n)", "2 M\u00f6hre(n)", "1 Handvoll Waln\u00fcsse", "200 g Feige(n) , getrocknete", "1 Knoblauchzehe(n)", "1 St\u00fcck(e) Ingwer , walnussgro\u00df", "1 TL Kurkuma", "1 TL Pfeffer, schwarzer", "\u00bd TL Kreuzk\u00fcmmel", "1 TL Paprikapulver", "1 TL Zimt", "1 TL Salz", " \u00d6l , 3 - 4 EL", "200 ml Gallo Family Vineyards Zinfandel" ],
+ "name": "Lamm-Tajine mit Waln\u00fcssen und Feigen",
+ "description": "Lamm-Tajine mit Waln\u00fcssen und Feigen - Orientalisch-w\u00fcrziger Genuss mit Fr\u00fcchten und N\u00fcssen. Gib jetzt die erste Bewertung f\u00fcr das Rezept von Gallo ab! Mit \u25ba Portionsrechner \u25ba Kochbuch \u25ba Video-Tipps!",
+ "recipeInstructions": "1. Das Fleisch in mundgerechte St\u00fccke schneiden, zusammen mit den Gew\u00fcrzen in 3 - 4 EL \u00d6l marinieren und etwa 30 Minuten im K\u00fchlschrank ruhen lassen.\n\n2. In der Zwischenzeit Zwiebel, Knoblauch, Ingwer und M\u00f6hren sch\u00e4len. \n\n3. Knoblauch und Ingwer fein hacken. Das restliche Gem\u00fcse in mundgerechte St\u00fccke schneiden.\n\n4. Die Tajine langsam erhitzen und das Fleisch darin anbraten. \n\n5. Nach etwa 10 Minuten das Gem\u00fcse, die N\u00fcsse und die Feigen hinzugeben. Das Ganze mit 200 ml Rotwein abl\u00f6schen, den Deckel auf die Tajine setzen und etwa 60 Minuten auf kleiner Flamme schmoren lassen.\n\n6. Dazu passen Couscous und etwas Petersilie.",
+ "author": {
+ "@type": "Person",
+ "name": "Gallo"
+ },
+ "publisher": {
+ "@type": "Organization",
+ "name": "Chefkoch.de"
+ },
+ "datePublished": "2019-08-08",
+ "prepTime": "P0DT0H20M",
+ "cookTime": "P0DT1H10M",
+ "totalTime": "P0DT2H0M"
+ ,
+ "recipeYield": "2 Portion(en)"
+ ,
+ "keywords": ["Gem\u00fcse","Hauptspeise","einfach","Schmoren","Lamm oder Ziege","Frucht"]
+ }
diff --git a/tests/Unit/Helper/HTMLParser/res/caseG.html b/tests/Unit/Helper/HTMLParser/res/caseG.html
new file mode 100644
index 00000000..7346f805
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseG.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Unit/Helper/HTMLParser/res/caseG.json b/tests/Unit/Helper/HTMLParser/res/caseG.json
new file mode 100644
index 00000000..77dcb5eb
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseG.json
@@ -0,0 +1,27 @@
+{
+ "@context": "http://schema.org",
+ "@type": "Recipe",
+ "image": "https://img.chefkoch-cdn.de/rezepte/3728791565272416/bilder/1230011/crop-960x540/lamm-tajine-mit-walnuessen-und-feigen.jpg",
+ "recipeCategory": "Schmoren",
+ "recipeIngredient": [
+ "800 g Lammschulter", "1 gro\u00dfe Zwiebel(n)", "2 M\u00f6hre(n)", "1 Handvoll Waln\u00fcsse", "200 g Feige(n) , getrocknete", "1 Knoblauchzehe(n)", "1 St\u00fcck(e) Ingwer , walnussgro\u00df", "1 TL Kurkuma", "1 TL Pfeffer, schwarzer", "\u00bd TL Kreuzk\u00fcmmel", "1 TL Paprikapulver", "1 TL Zimt", "1 TL Salz", " \u00d6l , 3 - 4 EL", "200 ml Gallo Family Vineyards Zinfandel" ],
+ "name": "Lamm-Tajine mit Waln\u00fcssen und Feigen",
+ "description": "Lamm-Tajine mit Waln\u00fcssen und Feigen - Orientalisch-w\u00fcrziger Genuss mit Fr\u00fcchten und N\u00fcssen. Gib jetzt die erste Bewertung f\u00fcr das Rezept von Gallo ab! Mit \u25ba Portionsrechner \u25ba Kochbuch \u25ba Video-Tipps!",
+ "recipeInstructions": "1. Das Fleisch in mundgerechte St\u00fccke schneiden, zusammen mit den Gew\u00fcrzen in 3 - 4 EL \u00d6l marinieren und etwa 30 Minuten im K\u00fchlschrank ruhen lassen.\n\n2. In der Zwischenzeit Zwiebel, Knoblauch, Ingwer und M\u00f6hren sch\u00e4len. \n\n3. Knoblauch und Ingwer fein hacken. Das restliche Gem\u00fcse in mundgerechte St\u00fccke schneiden.\n\n4. Die Tajine langsam erhitzen und das Fleisch darin anbraten. \n\n5. Nach etwa 10 Minuten das Gem\u00fcse, die N\u00fcsse und die Feigen hinzugeben. Das Ganze mit 200 ml Rotwein abl\u00f6schen, den Deckel auf die Tajine setzen und etwa 60 Minuten auf kleiner Flamme schmoren lassen.\n\n6. Dazu passen Couscous und etwas Petersilie.",
+ "author": {
+ "@type": "Person",
+ "name": "Gallo"
+ },
+ "publisher": {
+ "@type": "Organization",
+ "name": "Chefkoch.de"
+ },
+ "datePublished": "2019-08-08",
+ "prepTime": "P0DT0H20M",
+ "cookTime": "P0DT1H10M",
+ "totalTime": "P0DT2H0M"
+ ,
+ "recipeYield": "2 Portion(en)"
+ ,
+ "keywords": ["Gem\u00fcse","Hauptspeise","einfach","Schmoren","Lamm oder Ziege","Frucht"]
+ }
diff --git a/tests/Unit/Helper/HTMLParser/res/caseH.html b/tests/Unit/Helper/HTMLParser/res/caseH.html
new file mode 100644
index 00000000..46a6c9b3
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseH.html
@@ -0,0 +1,59 @@
+
+
+
+
+ Lamm-Tajine mit Walnüssen und Feigen von Gallo | Chefkoch
+
+
+
+
+
+
+
+
diff --git a/tests/Unit/Helper/HTMLParser/res/caseH.json b/tests/Unit/Helper/HTMLParser/res/caseH.json
new file mode 100644
index 00000000..77dcb5eb
--- /dev/null
+++ b/tests/Unit/Helper/HTMLParser/res/caseH.json
@@ -0,0 +1,27 @@
+{
+ "@context": "http://schema.org",
+ "@type": "Recipe",
+ "image": "https://img.chefkoch-cdn.de/rezepte/3728791565272416/bilder/1230011/crop-960x540/lamm-tajine-mit-walnuessen-und-feigen.jpg",
+ "recipeCategory": "Schmoren",
+ "recipeIngredient": [
+ "800 g Lammschulter", "1 gro\u00dfe Zwiebel(n)", "2 M\u00f6hre(n)", "1 Handvoll Waln\u00fcsse", "200 g Feige(n) , getrocknete", "1 Knoblauchzehe(n)", "1 St\u00fcck(e) Ingwer , walnussgro\u00df", "1 TL Kurkuma", "1 TL Pfeffer, schwarzer", "\u00bd TL Kreuzk\u00fcmmel", "1 TL Paprikapulver", "1 TL Zimt", "1 TL Salz", " \u00d6l , 3 - 4 EL", "200 ml Gallo Family Vineyards Zinfandel" ],
+ "name": "Lamm-Tajine mit Waln\u00fcssen und Feigen",
+ "description": "Lamm-Tajine mit Waln\u00fcssen und Feigen - Orientalisch-w\u00fcrziger Genuss mit Fr\u00fcchten und N\u00fcssen. Gib jetzt die erste Bewertung f\u00fcr das Rezept von Gallo ab! Mit \u25ba Portionsrechner \u25ba Kochbuch \u25ba Video-Tipps!",
+ "recipeInstructions": "1. Das Fleisch in mundgerechte St\u00fccke schneiden, zusammen mit den Gew\u00fcrzen in 3 - 4 EL \u00d6l marinieren und etwa 30 Minuten im K\u00fchlschrank ruhen lassen.\n\n2. In der Zwischenzeit Zwiebel, Knoblauch, Ingwer und M\u00f6hren sch\u00e4len. \n\n3. Knoblauch und Ingwer fein hacken. Das restliche Gem\u00fcse in mundgerechte St\u00fccke schneiden.\n\n4. Die Tajine langsam erhitzen und das Fleisch darin anbraten. \n\n5. Nach etwa 10 Minuten das Gem\u00fcse, die N\u00fcsse und die Feigen hinzugeben. Das Ganze mit 200 ml Rotwein abl\u00f6schen, den Deckel auf die Tajine setzen und etwa 60 Minuten auf kleiner Flamme schmoren lassen.\n\n6. Dazu passen Couscous und etwas Petersilie.",
+ "author": {
+ "@type": "Person",
+ "name": "Gallo"
+ },
+ "publisher": {
+ "@type": "Organization",
+ "name": "Chefkoch.de"
+ },
+ "datePublished": "2019-08-08",
+ "prepTime": "P0DT0H20M",
+ "cookTime": "P0DT1H10M",
+ "totalTime": "P0DT2H0M"
+ ,
+ "recipeYield": "2 Portion(en)"
+ ,
+ "keywords": ["Gem\u00fcse","Hauptspeise","einfach","Schmoren","Lamm oder Ziege","Frucht"]
+ }