diff --git a/tests/CSSList/DocumentTest.php b/tests/CSSList/DocumentTest.php index 80fd9a94..d29da527 100644 --- a/tests/CSSList/DocumentTest.php +++ b/tests/CSSList/DocumentTest.php @@ -3,28 +3,68 @@ namespace Sabberworm\CSS\Tests\CSSList; use PHPUnit\Framework\TestCase; -use Sabberworm\CSS\Parser; +use Sabberworm\CSS\CSSList\Document; +use Sabberworm\CSS\RuleSet\DeclarationBlock; +/** + * @covers \Sabberworm\CSS\CSSList\Document + */ class DocumentTest extends TestCase { + /** + * @var Document + */ + private $subject; + + protected function setUp() + { + $this->subject = new Document(); + } + + /** + * @test + */ + public function getContentsInitiallyReturnsEmptyArray() + { + self::assertSame([], $this->subject->getContents()); + } + + /** + * @param array>> + */ + public function contentsDataProvider() + { + return [ + 'empty array' => [[]], + '1 item' => [[new DeclarationBlock()]], + '2 items' => [[new DeclarationBlock(), new DeclarationBlock()]], + ]; + } + /** * @test + * + * @param array + * + * @dataProvider contentsDataProvider */ - public function overrideContents() + public function setContentsSetsContents(array $contents) { - $sCss = '.thing { left: 10px; }'; - $oParser = new Parser($sCss); - $oDoc = $oParser->parse(); - $aContents = $oDoc->getContents(); - self::assertCount(1, $aContents); - - $sCss2 = '.otherthing { right: 10px; }'; - $oParser2 = new Parser($sCss); - $oDoc2 = $oParser2->parse(); - $aContents2 = $oDoc2->getContents(); - - $oDoc->setContents([$aContents[0], $aContents2[0]]); - $aFinalContents = $oDoc->getContents(); - self::assertCount(2, $aFinalContents); + $this->subject->setContents($contents); + + self::assertSame($contents, $this->subject->getContents()); + } + + /** + * @test + */ + public function setContentsReplacesContentsSetInPreviousCall() + { + $contents2 = [new DeclarationBlock()]; + + $this->subject->setContents([new DeclarationBlock()]); + $this->subject->setContents($contents2); + + self::assertSame($contents2, $this->subject->getContents()); } } diff --git a/tests/ParserTest.php b/tests/ParserTest.php index 7f624ba9..ab247c3d 100644 --- a/tests/ParserTest.php +++ b/tests/ParserTest.php @@ -14,6 +14,7 @@ use Sabberworm\CSS\Property\Selector; use Sabberworm\CSS\RuleSet\AtRuleSet; use Sabberworm\CSS\RuleSet\DeclarationBlock; +use Sabberworm\CSS\RuleSet\RuleSet; use Sabberworm\CSS\Settings; use Sabberworm\CSS\Value\Color; use Sabberworm\CSS\Value\Size; @@ -33,6 +34,23 @@ */ class ParserTest extends TestCase { + /** + * @test + */ + public function parseForOneRuleSetReturnsDocumentWithOneRuleSet() + { + $css = '.thing { left: 10px; }'; + $parser = new Parser($css); + + $document = $parser->parse(); + + self::assertInstanceOf(Document::class, $document); + + $cssList = $document->getContents(); + self::assertCount(1, $cssList); + self::assertInstanceOf(RuleSet::class, $cssList[0]); + } + /** * @test */