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..7b6a3df9 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 getAllDeclarationBlocksReturnsDeclarationBlocksWithinAtRuleBlockList(): 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('https://www.example.com/')), ''); + $subject->setContents([$import]); + + $result = $subject->getAllDeclarationBlocks(); + + self::assertSame([], $result); + } + + /** + * @test + */ + public function getAllDeclarationBlocksIgnoresCharset(): void + { + $subject = new Document(); + + $charset = new Charset(new CSSString('UTF-8')); + $subject->setContents([$charset]); + + $result = $subject->getAllDeclarationBlocks(); + + self::assertSame([], $result); + } }