From 27d566885ab9a8c8af033417909172b2a6f1ede8 Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Wed, 19 Feb 2025 23:19:27 +0100 Subject: [PATCH 1/3] [TASK] Add Tests for `Document::getAllDeclarationBlocks()` Also remove a misleading and incorrect comment. Part of #757 --- src/CSSList/Document.php | 1 - tests/Unit/CSSList/DocumentTest.php | 95 +++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) diff --git a/src/CSSList/Document.php b/src/CSSList/Document.php index c79ae9a2..00d4cabd 100644 --- a/src/CSSList/Document.php +++ b/src/CSSList/Document.php @@ -32,7 +32,6 @@ public static function parse(ParserState $parserState): Document /** * Gets all `DeclarationBlock` objects recursively, no matter how deeply nested the selectors are. - * Aliased as `getAllSelectors()`. * * @return array */ diff --git a/tests/Unit/CSSList/DocumentTest.php b/tests/Unit/CSSList/DocumentTest.php index 494b4a49..733f1639 100644 --- a/tests/Unit/CSSList/DocumentTest.php +++ b/tests/Unit/CSSList/DocumentTest.php @@ -6,11 +6,18 @@ use PHPUnit\Framework\TestCase; use Sabberworm\CSS\Comment\Commentable; +use Sabberworm\CSS\CSSList\AtRuleBlockList; use Sabberworm\CSS\CSSList\Document; +use Sabberworm\CSS\Property\Charset; +use Sabberworm\CSS\Property\Import; use Sabberworm\CSS\Renderable; use Sabberworm\CSS\RuleSet\DeclarationBlock; +use Sabberworm\CSS\Value\CSSString; +use Sabberworm\CSS\Value\URL; /** + * @covers \Sabberworm\CSS\CSSList\CSSBlockList + * @covers \Sabberworm\CSS\CSSList\CSSList * @covers \Sabberworm\CSS\CSSList\Document */ final class DocumentTest extends TestCase @@ -142,4 +149,92 @@ public function insertContentBeforeAppendsIfSiblingNotFound(): void self::assertCount(4, $subject->getContents()); self::assertSame([$bogusOne, $sibling, $bogusTwo, $item], $subject->getContents()); } + + /** + * @test + */ + public function getAllDeclarationBlocksForNoContentsReturnsEmptyArray(): void + { + $subject = new Document(); + + self::assertSame([], $subject->getAllDeclarationBlocks()); + } + + /** + * @test + */ + public function getAllDeclarationBlocksCanReturnOneDirectDeclarationBlockContent(): void + { + $subject = new Document(); + + $declarationBlock = new DeclarationBlock(); + $subject->setContents([$declarationBlock]); + + $result = $subject->getAllDeclarationBlocks(); + + self::assertSame([$declarationBlock], $result); + } + + /** + * @test + */ + public function getAllDeclarationBlocksCanReturnMultipleDirectDeclarationBlockContents(): void + { + $subject = new Document(); + + $declarationBlock1 = new DeclarationBlock(); + $declarationBlock2 = new DeclarationBlock(); + $subject->setContents([$declarationBlock1, $declarationBlock2]); + + $result = $subject->getAllDeclarationBlocks(); + + self::assertSame([$declarationBlock1, $declarationBlock2], $result); + } + + /** + * @test + */ + public function getAllDeclarationBlocksAlsoReturnsDeclarationBlocksWithinAtRuleBlockList(): void + { + $subject = new Document(); + + $declarationBlock = new DeclarationBlock(); + $atRuleBlockList = new AtRuleBlockList('media'); + $atRuleBlockList->setContents([$declarationBlock]); + $subject->setContents([$atRuleBlockList]); + + $result = $subject->getAllDeclarationBlocks(); + + self::assertSame([$declarationBlock], $result); + } + + /** + * @test + */ + public function getAllDeclarationBlocksIgnoresImport(): void + { + $subject = new Document(); + + $import = new Import(new URL(new CSSString('')), ''); + $subject->setContents([$import]); + + $result = $subject->getAllDeclarationBlocks(); + + self::assertSame([], $result); + } + + /** + * @test + */ + public function getAllDeclarationBlocksIgnoresCharset(): void + { + $subject = new Document(); + + $charset = new Charset(new CSSString('')); + $subject->setContents([$charset]); + + $result = $subject->getAllDeclarationBlocks(); + + self::assertSame([], $result); + } } From b51d69a89216f5e386883092db375d3eedad46d2 Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Thu, 20 Feb 2025 12:11:35 +0100 Subject: [PATCH 2/3] Changes suggested in code review --- tests/Unit/CSSList/DocumentTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Unit/CSSList/DocumentTest.php b/tests/Unit/CSSList/DocumentTest.php index 733f1639..f341de57 100644 --- a/tests/Unit/CSSList/DocumentTest.php +++ b/tests/Unit/CSSList/DocumentTest.php @@ -215,7 +215,7 @@ public function getAllDeclarationBlocksIgnoresImport(): void { $subject = new Document(); - $import = new Import(new URL(new CSSString('')), ''); + $import = new Import(new URL(new CSSString('https://www.example.com/')), ''); $subject->setContents([$import]); $result = $subject->getAllDeclarationBlocks(); @@ -230,7 +230,7 @@ public function getAllDeclarationBlocksIgnoresCharset(): void { $subject = new Document(); - $charset = new Charset(new CSSString('')); + $charset = new Charset(new CSSString('UTF-8')); $subject->setContents([$charset]); $result = $subject->getAllDeclarationBlocks(); From 997eaf7614355903814daac3de5bbed9560260ca Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Thu, 20 Feb 2025 13:31:14 +0100 Subject: [PATCH 3/3] Also, no. --- tests/Unit/CSSList/DocumentTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Unit/CSSList/DocumentTest.php b/tests/Unit/CSSList/DocumentTest.php index f341de57..7b6a3df9 100644 --- a/tests/Unit/CSSList/DocumentTest.php +++ b/tests/Unit/CSSList/DocumentTest.php @@ -194,7 +194,7 @@ public function getAllDeclarationBlocksCanReturnMultipleDirectDeclarationBlockCo /** * @test */ - public function getAllDeclarationBlocksAlsoReturnsDeclarationBlocksWithinAtRuleBlockList(): void + public function getAllDeclarationBlocksReturnsDeclarationBlocksWithinAtRuleBlockList(): void { $subject = new Document();