From 55ddc4418ba4ae9e38b0b00acea3b8a57b3a3d99 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Fri, 23 Jan 2026 19:22:15 +0100 Subject: [PATCH] Add a PHPUnit base TestCase to support testing RewriteHandler implementations --- src/Test/TagRewriterTestCase.php | 31 +++++++++++ .../Html5TagRewriterTest.php | 2 +- tests/Test/TagRewriterTestCaseTest.php | 52 +++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 src/Test/TagRewriterTestCase.php rename tests/{ => Implementation}/Html5TagRewriterTest.php (99%) create mode 100644 tests/Test/TagRewriterTestCaseTest.php diff --git a/src/Test/TagRewriterTestCase.php b/src/Test/TagRewriterTestCase.php new file mode 100644 index 0000000..1b99daf --- /dev/null +++ b/src/Test/TagRewriterTestCase.php @@ -0,0 +1,31 @@ +rewriter = new Html5TagRewriter(); + } + + public function assertRewriteResultEquals(string $expected, string $input): void + { + $result = $this->rewriter->processFragment($input); + + $this->assertXmlStringEqualsXmlString($expected, $result); + } + + public function assertRewriteResultUnchanged(string $input): void + { + $this->assertRewriteResultEquals($input, $input); + } +} diff --git a/tests/Html5TagRewriterTest.php b/tests/Implementation/Html5TagRewriterTest.php similarity index 99% rename from tests/Html5TagRewriterTest.php rename to tests/Implementation/Html5TagRewriterTest.php index 70b6edf..3561c4e 100644 --- a/tests/Html5TagRewriterTest.php +++ b/tests/Implementation/Html5TagRewriterTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Webfactory\Html5TagRewriter\Tests; +namespace Webfactory\Html5TagRewriter\Tests\Implementation; use Dom\Element; use PHPUnit\Framework\Attributes\DataProvider; diff --git a/tests/Test/TagRewriterTestCaseTest.php b/tests/Test/TagRewriterTestCaseTest.php new file mode 100644 index 0000000..1aa5ec2 --- /dev/null +++ b/tests/Test/TagRewriterTestCaseTest.php @@ -0,0 +1,52 @@ +onMatch(function (Element $element) { + $element->textContent = 'bar'; + }); + $this->rewriter->register($handler); + + $this->assertRewriteResultEquals('

bar

', '

foo

'); + } + + #[Test] + public function assertRewriteResultEquals_when_no_RewriteHandler_fails(): void + { + $this->expectException(ExpectationFailedException::class); + + $this->assertRewriteResultEquals('

bar

', '

foo

'); + } + + #[Test] + public function assertRewriteResultUnchanged_fails_when_RewriteHandler_registered(): void + { + $handler = new TestRewriteHandler('//html:p'); + $handler->onMatch(function (Element $element) { + $element->textContent = 'bar'; + }); + $this->rewriter->register($handler); + + $this->expectException(ExpectationFailedException::class); + + $this->assertRewriteResultUnchanged('

foo

'); + } + + #[Test] + public function assertRewriteResultUnchanged_when_no_RewriteHandler_fails(): void + { + $this->assertRewriteResultUnchanged('

bar

', '

foo

'); + } +}