Skip to content

Commit

Permalink
improved tests
Browse files Browse the repository at this point in the history
  • Loading branch information
oscarotero committed Jul 20, 2019
1 parent b7d1a72 commit c45c697
Show file tree
Hide file tree
Showing 3 changed files with 1,603 additions and 8 deletions.
52 changes: 44 additions & 8 deletions tests/EncodingsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,54 @@
use PHPUnit\Framework\TestCase;
use HtmlParser\Parser;
use DOMDocument;
use DOMElement;
use DOMXPath;
use DOMDocumentFragment;

class EncodingsTest extends TestCase
{
public function testRussian()
public function encodingDataProvider(): array
{
$document = Parser::parse(\file_get_contents(__DIR__.'/assets/tjournal.ru.html'));
$title = $document->getElementsByTagName('title')->item(0);
return [
[
'tjournal.ru.html',
'Еврокомиссия проверит Amazon на предмет нарушения антимонопольного законодательства — Новости на TJ',
'Ведомство предполагает, что площадка собирает и использует данные от сторонних продавцов.',
],
[
'blockpost.com.html',
'삼성페이에 암호화폐 결합될까?...삼성전자 블록체인TF, 서비스사업실로 이관 | 블록포스트 - 믿음직한 블록체인 정보 포털',
'삼성전자가 최근 무선사업부 산하에 있던 블록체인TF를 서비스사업실로 이관한 것으로 전해졌다. 지난 3월 출시한 전략 스마트폰 갤럭시 S10에 ‘삼성 블록체인 키스토어’와 ‘삼성 블록체인 월렛’ 탑재를 주도한 블록체인TF가 삼성페이 등 스마트폰용 핵심 서비스 개발‧운용을 맡는 하는 서비스사업실로 합쳐진 것이다. 블록체인‧암호화폐 업계 관계자 및 정보기술(IT',
],
[
'marketing.itmedia.co.jp.html',
' 「マーケティング4.0」とは結局どういうことなのか? (1/2) - ITmedia マーケティング',
'「マーケティング4.0」とは何か。本稿では、首都大学東京大学院准教授の水越康介氏とネスレ日本の津田匡保氏の講演から、その概念と実践について探る。【更新】 (1/2)',
],
];
}

$this->assertSame(
'Еврокомиссия проверит Amazon на предмет нарушения антимонопольного законодательства — Новости на TJ',
$title->textContent
);
}
/**
* @dataProvider encodingDataProvider
*/
public function testRussian(string $file, string $title, string $description = null)
{
$document = Parser::parse(\file_get_contents(__DIR__."/assets/{$file}"));
$titleElement = $document->getElementsByTagName('title')->item(0);

$this->assertSame($title, $titleElement->textContent);

if ($description) {
$descriptionElement = self::xpathQuery($document, './/meta[@name="description"]');
$this->assertSame($description, $descriptionElement->getAttribute('content'));
}
}

private static function xpathQuery(DOMDocument $document, $query): ?DOMElement
{
$xpath = new DOMXPath($document);
$entries = $xpath->query($query);

return $entries->length ? $entries->item(0) : null;
}
}
Loading

0 comments on commit c45c697

Please sign in to comment.