Skip to content

Commit cef3d61

Browse files
committed
Add failing test and fix for microformats#182
1 parent 00b70ee commit cef3d61

File tree

2 files changed

+36
-20
lines changed

2 files changed

+36
-20
lines changed

Mf2/Parser.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ public function parseP(\DOMElement $p) {
634634
public function parseU(\DOMElement $u) {
635635
if (($u->tagName == 'a' or $u->tagName == 'area' or $u->tagName == 'link') and $u->hasAttribute('href')) {
636636
$uValue = $u->getAttribute('href');
637-
} elseif (in_array($u->tagName, array('img', 'audio', 'video', 'source')) and $u->hasAttribute('src')) {
637+
} elseif (in_array($u->tagName, array('img', 'audio', 'video', 'source', 'iframe')) and $u->hasAttribute('src')) {
638638
$uValue = $u->getAttribute('src');
639639
} elseif ($u->tagName == 'video' and !$u->hasAttribute('src') and $u->hasAttribute('poster')) {
640640
$uValue = $u->getAttribute('poster');

tests/Mf2/ParseUTest.php

+35-19
Original file line numberDiff line numberDiff line change
@@ -275,33 +275,49 @@ public function testImpliedUWithEmptyHref() {
275275
$this->assertEquals('http://example.com/', $output['items'][4]['children'][0]['properties']['url'][0]);
276276
}
277277

278-
public function testValueFromLinkTag() {
279-
$input = <<< END
278+
public function testValueFromLinkTag() {
279+
$input = <<< END
280280
<!doctype html>
281281
<html class="h-entry">
282-
<head>
283-
<link rel="canonical" class="u-url p-name" href="https://example.com/" title="Example.com homepage">
284-
</head>
285-
<body></body>
282+
<head>
283+
<link rel="canonical" class="u-url p-name" href="https://example.com/" title="Example.com homepage">
284+
</head>
285+
<body></body>
286286
</html>
287287
END;
288288

289-
$parser = new Parser($input, 'https://example.com');
290-
$output = $parser->parse();
289+
$parser = new Parser($input, 'https://example.com');
290+
$output = $parser->parse();
291+
292+
$this->assertArrayHasKey('url', $output['items'][0]['properties']);
293+
$this->assertEquals('https://example.com/', $output['items'][0]['properties']['url'][0]);
291294

292-
$this->assertArrayHasKey('url', $output['items'][0]['properties']);
293-
$this->assertEquals('https://example.com/', $output['items'][0]['properties']['url'][0]);
295+
$this->assertArrayHasKey('name', $output['items'][0]['properties']);
296+
$this->assertEquals('Example.com homepage', $output['items'][0]['properties']['name'][0]);
297+
}
294298

295-
$this->assertArrayHasKey('name', $output['items'][0]['properties']);
296-
$this->assertEquals('Example.com homepage', $output['items'][0]['properties']['name'][0]);
297-
}
299+
public function testResolveFromDataElement() {
300+
$parser = new Parser('<div class="h-test"><data class="u-url" value="relative.html"></data></div>', 'https://example.com/index.html');
301+
$output = $parser->parse();
298302

299-
public function testResolveFromDataElement() {
300-
$parser = new Parser('<div class="h-test"><data class="u-url" value="relative.html"></data></div>', 'https://example.com/index.html');
301-
$output = $parser->parse();
303+
$this->assertArrayHasKey('url', $output['items'][0]['properties']);
304+
$this->assertEquals('https://example.com/relative.html', $output['items'][0]['properties']['url'][0]);
305+
}
302306

303-
$this->assertArrayHasKey('url', $output['items'][0]['properties']);
304-
$this->assertEquals('https://example.com/relative.html', $output['items'][0]['properties']['url'][0]);
305-
}
307+
/**
308+
* @see https://github.com/microformats/php-mf2/issues/182
309+
*/
310+
public function testResolveFromIframeElement() {
311+
$input = '<div class="h-entry">
312+
<h1 class="p-name">Title</h1>
313+
<iframe src="https://example.com/index.html" class="u-url">
314+
<p>Your browser does not support iframes.</p>
315+
</iframe>
316+
</div>';
317+
$parser = new Parser($input, 'https://example.com');
318+
$output = $parser->parse();
306319

320+
$this->assertArrayHasKey('url', $output['items'][0]['properties']);
321+
$this->assertEquals('https://example.com/index.html', $output['items'][0]['properties']['url'][0]);
322+
}
307323
}

0 commit comments

Comments
 (0)