Skip to content

Commit b47f2f8

Browse files
committed
[TASK] Add Tests for Document::getAllDeclarationBlocks()
Also remove a misleading and incorrect comment. Part of #757
1 parent ee3d57c commit b47f2f8

File tree

2 files changed

+95
-1
lines changed

2 files changed

+95
-1
lines changed

src/CSSList/Document.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ public static function parse(ParserState $parserState): Document
3232

3333
/**
3434
* Gets all `DeclarationBlock` objects recursively, no matter how deeply nested the selectors are.
35-
* Aliased as `getAllSelectors()`.
3635
*
3736
* @return array<int, DeclarationBlock>
3837
*/

tests/Unit/CSSList/DocumentTest.php

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,18 @@
66

77
use PHPUnit\Framework\TestCase;
88
use Sabberworm\CSS\Comment\Commentable;
9+
use Sabberworm\CSS\CSSList\AtRuleBlockList;
910
use Sabberworm\CSS\CSSList\Document;
11+
use Sabberworm\CSS\Property\Charset;
12+
use Sabberworm\CSS\Property\Import;
1013
use Sabberworm\CSS\Renderable;
1114
use Sabberworm\CSS\RuleSet\DeclarationBlock;
15+
use Sabberworm\CSS\Value\CSSString;
16+
use Sabberworm\CSS\Value\URL;
1217

1318
/**
19+
* @covers \Sabberworm\CSS\CSSList\CSSBlockList
20+
* @covers \Sabberworm\CSS\CSSList\CSSList
1421
* @covers \Sabberworm\CSS\CSSList\Document
1522
*/
1623
final class DocumentTest extends TestCase
@@ -142,4 +149,92 @@ public function insertContentBeforeAppendsIfSiblingNotFound(): void
142149
self::assertCount(4, $subject->getContents());
143150
self::assertSame([$bogusOne, $sibling, $bogusTwo, $item], $subject->getContents());
144151
}
152+
153+
/**
154+
* @test
155+
*/
156+
public function getAllDeclarationBlocksForNoContentsReturnsEmptyArray(): void
157+
{
158+
$subject = new Document();
159+
160+
self::assertSame([], $subject->getAllDeclarationBlocks());
161+
}
162+
163+
/**
164+
* @test
165+
*/
166+
public function getAllDeclarationBlocksCanReturnOneDirectDeclarationBlockContent(): void
167+
{
168+
$subject = new Document();
169+
170+
$declarationBlock = new DeclarationBlock();
171+
$subject->setContents([$declarationBlock]);
172+
173+
$result = $subject->getAllDeclarationBlocks();
174+
175+
self::assertSame([$declarationBlock], $result);
176+
}
177+
178+
/**
179+
* @test
180+
*/
181+
public function getAllDeclarationBlocksCanReturnMultipleDirectDeclarationBlockContents(): void
182+
{
183+
$subject = new Document();
184+
185+
$declarationBlock1 = new DeclarationBlock();
186+
$declarationBlock2 = new DeclarationBlock();
187+
$subject->setContents([$declarationBlock1, $declarationBlock2]);
188+
189+
$result = $subject->getAllDeclarationBlocks();
190+
191+
self::assertSame([$declarationBlock1, $declarationBlock2], $result);
192+
}
193+
194+
/**
195+
* @test
196+
*/
197+
public function getAllDeclarationBlocksAlsoReturnsDeclarationBlocksWithinAtRuleBlockList(): void
198+
{
199+
$subject = new Document();
200+
201+
$declarationBlock = new DeclarationBlock();
202+
$atRuleBlockList = new AtRuleBlockList('media');
203+
$atRuleBlockList->setContents([$declarationBlock]);
204+
$subject->setContents([$atRuleBlockList]);
205+
206+
$result = $subject->getAllDeclarationBlocks();
207+
208+
self::assertSame([$declarationBlock], $result);
209+
}
210+
211+
/**
212+
* @test
213+
*/
214+
public function getAllDeclarationBlocksIgnoresImport(): void
215+
{
216+
$subject = new Document();
217+
218+
$import = new Import(new URL(new CSSString('')), '');
219+
$subject->setContents([$import]);
220+
221+
$result = $subject->getAllDeclarationBlocks();
222+
223+
self::assertSame([], $result);
224+
}
225+
226+
/**
227+
* @test
228+
*/
229+
public function getAllDeclarationBlocksIgnoresCharset(): void
230+
{
231+
$subject = new Document();
232+
233+
$charset = new Charset(new CSSString(''));
234+
$subject->setContents([$charset]);
235+
236+
$result = $subject->getAllDeclarationBlocks();
237+
238+
self::assertSame([], $result);
239+
}
145240
}

0 commit comments

Comments
 (0)