createAsserter(ThemeTypeEnum::plain()) ->with('.email')->hasNot('border')->end() ->with('html')->hasNot('background')->end() ->with('body')->hasNot('background')->end() ->with('.email-body-content')->has('color', $defaultArticleContentFG)->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'colors:background:emailBody' => $customEmailBodyBG, 'colors:background:accent' => $customAccentBG, 'colors:text:articleContent' => $customArticleContentFG, ]) ->with('.email')->hasNot('border')->end() ->with('html')->hasNot('background')->end() ->with('body')->hasNot('background')->end() ->with('.email-body-content')->has('color', $customArticleContentFG)->end(); $this->createAsserter(ThemeTypeEnum::enhanced()) ->with('.email')->has('border', '4px solid '. $defaultAccentBG)->end() ->with('html')->has('background', $defaultEmailBodyBG)->end() ->with('body')->has('background', $defaultEmailBodyBG)->end() ->with('.email-body-content')->has('color', $defaultArticleContentFG)->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'colors:background:emailBody' => $customEmailBodyBG, 'colors:background:accent' => $customAccentBG, 'colors:text:articleContent' => $customArticleContentFG, ]) ->with('.email')->has('border', '4px solid '. $customAccentBG)->end() ->with('html')->has('background', $customEmailBodyBG)->end() ->with('body')->has('background', $customEmailBodyBG)->end() ->with('.email-body-content')->has('color', $customArticleContentFG)->end(); } /** * @return void */ public function testHeader() { $this->assertCssRender(ThemeTypeEnum::plain(), [ $this->createCssAssertBuilder('.email-header') ->propertyShouldBe('color', 'white') ->propertyShouldNotBe('height', '105px'), $this->createCssAssertBuilder('.email-header-info-title') ->hasFont(new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_HEADER_SIZE )) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_HEADER), $this->createCssAssertBuilder('.email-header-info-date') ->propertyShouldBe('color', ThemeOptionColorsBackground::DEFAULT_ACCENT), ]); $this->assertCssRender(ThemeTypeEnum::plain(), [ $this->createCssAssertBuilder('.email-header') ->propertyShouldBe('color', 'white') ->propertyShouldBe('height', '105px'), $this->createCssAssertBuilder('.email-header-info-title') ->hasFont(new ThemeOptionFont( FontFamilyEnum::calibri(), 10, new ThemeOptionFontStyle(true, true, true) )) ->propertyShouldBe('color', 'rgba(124, 45, 56, 0.33)'), $this->createCssAssertBuilder('.email-header-info-date') ->propertyShouldBe('color', 'rgba(123, 44, 55, 0.32)'), ], [ 'header:imageUrl' => 'http://pic.com', 'colors:background:accent' => 'rgba(123, 44, 55, 0.32)', 'colors:text:header' => 'rgba(124, 45, 56, 0.33)', 'fonts:header:family' => FontFamilyEnum::calibri(), 'fonts:header:size' => 10, 'fonts:header:style:bold' => true, 'fonts:header:style:italic' => true, 'fonts:header:style:underline' => true, ]); } /** * @return void */ public function testTableOfContents() { $this->tableOfContentsDefault(); $this->tableOfContentsCustom(); } /** * @return void */ public function testContents() { $this->contentsDefault(); $this->contentsCustom(); } /** * @return void */ public function testFooter() { $this->createAsserter(ThemeTypeEnum::plain()) ->with('footer') ->has('border-top', '3px double #fff') ->end(); $this->createAsserter(ThemeTypeEnum::plain()) ->with('footer') ->hasNot('border-top') ->end(); } /** * @return void */ private function tableOfContentsDefault() { $defaultFont = new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_TABLE_OF_CONTENTS_SIZE ); $this->assertCssRender(ThemeTypeEnum::plain(), [ // .table-of-contents $this->createCssAssertBuilder('.table-of-contents .feeds li')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .feeds > li')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .feeds > li:before')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .documents > li:before')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents li:before') ->propertyShouldBe('font-size', NotificationThemeOptions::DEFAULT_TABLE_OF_CONTENTS_SIZE) ->propertyShouldNotBe('font-weight', 'bold') ->propertyShouldNotBe('font-style', 'italic') ->propertyShouldBe('text-decoration', 'none'), // .feed-name $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-name') ->propertyShouldNotBe('width', '48%') ->propertyShouldNotBe('display', 'inline-block') ->propertyShouldNotBe('margin-left', '20px') ->hasFont($defaultFont), // .feed-document-count $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count') ->propertyShouldNotBe('width', '48%') ->propertyShouldNotBe('display', 'inline-block') ->hasFont($defaultFont), // Document link $this->createCssAssertBuilder('.table-of-contents .documents .document a') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_ARTICLE_HEADLINE) ->hasFont($defaultFont), // Misc $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count:before') ->propertyShouldBe('content', ' '), $this->createCssAssertBuilder('.table-of-contents .documents .document a:after') ->propertyShouldBe('content', 'url(data:image') ->propertyShouldBe('padding-left', '3px'), $this->createCssAssertBuilder('.table-of-contents .documents .document .source') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_SOURCE), ]); $this->assertCssRender(ThemeTypeEnum::enhanced(), [ // .table-of-contents $this->createCssAssertBuilder('.table-of-contents .feeds li') ->propertyShouldBe('background', 'white') ->propertyShouldBe('display', 'block') ->propertyShouldBe('padding', '5px 10px'), $this->createCssAssertBuilder('.table-of-contents .feeds > li') ->propertyShouldBe('margin-bottom', '1px') ->propertyShouldBe('border-bottom', '1px solid #e6e6e6'), $this->createCssAssertBuilder('.table-of-contents .feeds > li:before') ->propertyShouldBe('width', '6px') ->propertyShouldBe('height', '8px') ->propertyShouldBe('content', 'url(data:image'), $this->createCssAssertBuilder('.table-of-contents .documents > li:before') ->propertyShouldBe('font-size', NotificationThemeOptions::DEFAULT_ARTICLE_CONTENT_SIZE) ->propertyShouldNotBe('font-weight', 'bold') ->propertyShouldNotBe('font-style', 'italic') ->propertyShouldBe('text-decoration', 'none'), $this->createCssAssertBuilder('.table-of-contents li:before')->shouldNotExists(), // .feed-name $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-name') ->propertyShouldBe('width', '48%') ->propertyShouldBe('display', 'inline-block') ->propertyShouldBe('margin-left', '20px') ->hasFont($defaultFont), // .feed-document-count $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count') ->propertyShouldBe('width', '48%') ->propertyShouldBe('display', 'inline-block') ->hasFont($defaultFont), // Document link $this->createCssAssertBuilder('.table-of-contents .documents .document a') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_ARTICLE_CONTENT) ->hasFont(new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_ARTICLE_CONTENT_SIZE )), // Misc $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count:before')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .documents .document a:after')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .documents .document .source') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_SOURCE), ]); } /** * @return void */ private function tableOfContentsCustom() { $customFont = new ThemeOptionFont( FontFamilyEnum::calibri(), 10, new ThemeOptionFontStyle(true, true, true) ); $this->assertCssRender(ThemeTypeEnum::plain(), [ // .table-of-contents $this->createCssAssertBuilder('.table-of-contents .feeds li')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .feeds > li')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .feeds > li:before')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .documents > li:before')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents li:before') ->propertyShouldBe('font-size', 10) ->propertyShouldBe('font-weight', 'bold') ->propertyShouldBe('font-style', 'italic') ->propertyShouldBe('text-decoration', 'none'), // .feed-name $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-name') ->propertyShouldNotBe('width', '48%') ->propertyShouldNotBe('display', 'inline-block') ->propertyShouldNotBe('margin-left', '20px') ->hasFont($customFont), // .feed-document-count $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count') ->propertyShouldNotBe('width', '48%') ->propertyShouldNotBe('display', 'inline-block') ->hasFont($customFont), // Document link $this->createCssAssertBuilder('.table-of-contents .documents .document a') ->propertyShouldBe('color', 'rgba(123, 44, 55, 0.32)') ->hasFont($customFont), // Misc $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count:before') ->propertyShouldBe('content', ' '), $this->createCssAssertBuilder('.table-of-contents .documents .document a:after') ->propertyShouldBe('content', 'url(data:image') ->propertyShouldBe('padding-left', '3px'), $this->createCssAssertBuilder('.table-of-contents .documents .document .source') ->propertyShouldBe('color', 'rgba(124, 45, 56, 0.33)'), ], [ 'colors:text:articleHeadline' => 'rgba(123, 44, 55, 0.32)', 'colors:text:source' => 'rgba(124, 45, 56, 0.33)', 'fonts:tableOfContents:family' => $customFont->getFamily(), 'fonts:tableOfContents:size' => $customFont->getSize(), 'fonts:tableOfContents:style:bold' => $customFont->getStyle()->isBold(), 'fonts:tableOfContents:style:italic' => $customFont->getStyle()->isItalic(), 'fonts:tableOfContents:style:underline' => $customFont->getStyle()->isUnderline(), ]); $this->assertCssRender(ThemeTypeEnum::enhanced(), [ // .table-of-contents $this->createCssAssertBuilder('.table-of-contents .feeds li') ->propertyShouldBe('background', 'white') ->propertyShouldBe('display', 'block') ->propertyShouldBe('padding', '5px 10px'), $this->createCssAssertBuilder('.table-of-contents .feeds > li') ->propertyShouldBe('margin-bottom', '1px') ->propertyShouldBe('border-bottom', '1px solid #e6e6e6'), $this->createCssAssertBuilder('.table-of-contents .feeds > li:before') ->propertyShouldBe('width', '6px') ->propertyShouldBe('height', '8px') ->propertyShouldBe('content', 'url(data:image'), $this->createCssAssertBuilder('.table-of-contents .documents > li:before') ->propertyShouldBe('font-size', 11) ->propertyShouldNotBe('font-weight', 'bold') ->propertyShouldBe('font-style', 'italic') ->propertyShouldBe('text-decoration', 'none'), $this->createCssAssertBuilder('.table-of-contents li:before')->shouldNotExists(), // .feed-name $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-name') ->propertyShouldBe('width', '48%') ->propertyShouldBe('display', 'inline-block') ->propertyShouldBe('margin-left', '20px') ->hasFont($customFont), // .feed-document-count $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count') ->propertyShouldBe('width', '48%') ->propertyShouldBe('display', 'inline-block') ->hasFont($customFont), // Document link $this->createCssAssertBuilder('.table-of-contents .documents .document a') ->propertyShouldBe('color', 'rgba(123, 44, 55, 0.32)') ->hasFont(new ThemeOptionFont( FontFamilyEnum::courierNew(), 11, new ThemeOptionFontStyle(false, true, true) )), // Misc $this->createCssAssertBuilder('.table-of-contents .feeds .feed .feed-document-count:before')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .documents .document a:after')->shouldNotExists(), $this->createCssAssertBuilder('.table-of-contents .documents .document .source') ->propertyShouldBe('color', 'rgba(124, 45, 56, 0.33)'), ], [ 'colors:text:articleContent' => 'rgba(123, 44, 55, 0.32)', 'colors:text:source' => 'rgba(124, 45, 56, 0.33)', 'fonts:tableOfContents:family' => $customFont->getFamily(), 'fonts:tableOfContents:size' => $customFont->getSize(), 'fonts:tableOfContents:style:bold' => $customFont->getStyle()->isBold(), 'fonts:tableOfContents:style:italic' => $customFont->getStyle()->isItalic(), 'fonts:tableOfContents:style:underline' => $customFont->getStyle()->isUnderline(), 'fonts:articleContent:family' => FontFamilyEnum::courierNew(), 'fonts:articleContent:size' => 11, 'fonts:articleContent:style:bold' => false, 'fonts:articleContent:style:italic' => true, 'fonts:articleContent:style:underline' => true, ]); } /** * @return void */ private function contentsDefault() { // // Plain // $feedTitleFont = new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_FEED_TITLE_SIZE ); $dateFont = new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_DATE_SIZE ); $articleContentFont = new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_ARTICLE_CONTENT_SIZE ); $articleHeadlineFont = new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_ARTICLE_HEADLINE_SIZE ); $sourceFont = new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_SOURCE_SIZE ); $authorFont = new ThemeOptionFont( FontFamilyEnum::arial(), NotificationThemeOptions::DEFAULT_AUTHOR_SIZE ); $this->assertCssRender(ThemeTypeEnum::plain(), [ // .feed-title $this->createCssAssertBuilder('.content .feed-title') ->hasFont($feedTitleFont) ->propertyShouldNotExists('background') ->propertyShouldNotExists('color'), // .document $this->createCssAssertBuilder('.content .documents .document') ->propertyShouldBe('margin-top', '10px') ->propertyShouldBe('margin-left', '5px') ->propertyShouldNotExists('display') ->propertyShouldNotExists('flex'), $this->createCssAssertBuilder('.content .documents .document:last-child'), $this->createCssAssertBuilder('.content .documents .document-aside')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-main')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-body')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-image')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-image img')->shouldNotExists(), // .document-headline link $this->createCssAssertBuilder('.content .documents .document-headline a') ->hasFont($articleHeadlineFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_ARTICLE_HEADLINE), // .document-source $this->createCssAssertBuilder('.content .documents .document-source') ->hasFont($sourceFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_SOURCE), // .document-author $this->createCssAssertBuilder('.content .documents .document-author') ->hasFont($authorFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_AUTHOR), // .document-date $this->createCssAssertBuilder('.content .documents .document-date') ->hasFont($dateFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_PUBLISH_DATE), // .document-content $this->createCssAssertBuilder('.content .document .document-content') ->hasFont($articleContentFont), // Comments $this->createCssAssertBuilder('.content .comments .comment-title')->shouldNotExists(), $this->createCssAssertBuilder('.content .comments .comment-author') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_AUTHOR) ->hasFont($authorFont), $this->createCssAssertBuilder('.content .comments .comment-date') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_PUBLISH_DATE) ->hasFont($dateFont), ]); // // Enhanced // $this->assertCssRender(ThemeTypeEnum::enhanced(), [ // .feed-title $this->createCssAssertBuilder('.content .feed-title') ->hasFont($feedTitleFont) ->propertyShouldBe('background', ThemeOptionColorsBackground::DEFAULT_ACCENT) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_HEADER), // .document $this->createCssAssertBuilder('.content .documents .document') ->propertyShouldBe('margin-top', '5px') ->propertyShouldNotExists('margin-left', '5px') ->propertyShouldExists('display') ->propertyShouldExists('flex'), $this->createCssAssertBuilder('.content .documents .document:last-child')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-aside'), $this->createCssAssertBuilder('.content .documents .document-main'), $this->createCssAssertBuilder('.content .documents .document-body'), $this->createCssAssertBuilder('.content .documents .document-image'), $this->createCssAssertBuilder('.content .documents .document-image img'), // .document-headline link $this->createCssAssertBuilder('.content .documents .document-headline a') ->hasFont($articleHeadlineFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_ARTICLE_HEADLINE), // .document-source $this->createCssAssertBuilder('.content .documents .document-source') ->hasFont($sourceFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_SOURCE), // .document-author $this->createCssAssertBuilder('.content .documents .document-author') ->hasFont($authorFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_AUTHOR), // .document-date $this->createCssAssertBuilder('.content .documents .document-date') ->hasFont($articleContentFont) ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_ARTICLE_CONTENT), // .document-content $this->createCssAssertBuilder('.content .document .document-content') ->hasFont($articleContentFont), // Comments $this->createCssAssertBuilder('.content .comments .comment-title'), $this->createCssAssertBuilder('.content .comments .comment-author') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_AUTHOR) ->hasNotAnyFonts(), $this->createCssAssertBuilder('.content .comments .comment-date') ->propertyShouldBe('color', ThemeOptionColorsText::DEFAULT_ARTICLE_CONTENT) ->hasNotAnyFonts(), ]); } /** * @return void */ private function contentsCustom() { $feedTitleFont = new ThemeOptionFont( FontFamilyEnum::calibri(), 11, new ThemeOptionFontStyle(true, true, true) ); $dateFont = new ThemeOptionFont( FontFamilyEnum::centuryGothic(), 12, new ThemeOptionFontStyle(true, false, true) ); $articleContentFont = new ThemeOptionFont( FontFamilyEnum::georgia(), 13, new ThemeOptionFontStyle(true, true, false) ); $articleHeadlineFont = new ThemeOptionFont( FontFamilyEnum::lucidaSansUnicode(), 14, new ThemeOptionFontStyle(false, true, true) ); $sourceFont = new ThemeOptionFont( FontFamilyEnum::courierNew(), 15, new ThemeOptionFontStyle(false, true, false) ); $authorFont = new ThemeOptionFont( FontFamilyEnum::tahoma(), 16, new ThemeOptionFontStyle(true, true, false) ); $diffs = [ 'colors:background:accent' => 'rgba(123, 44, 55, 0.32)', 'colors:text:header' => 'rgba(124, 45, 56, 0.33)', 'colors:text:publishDate' => 'rgba(125, 46, 57, 0.34)', 'colors:text:articleContent' => 'rgba(126, 47, 58, 0.35)', 'colors:text:articleHeadline' => 'rgba(127, 48, 59, 0.36)', 'colors:text:source' => 'rgba(128, 49, 60, 0.37)', 'colors:text:author' => 'rgba(129, 50, 61, 0.38)', 'fonts:feedTitle:family' => $feedTitleFont->getFamily(), 'fonts:feedTitle:size' => $feedTitleFont->getSize(), 'fonts:feedTitle:style:bold' => $feedTitleFont->getStyle()->isBold(), 'fonts:feedTitle:style:italic' => $feedTitleFont->getStyle()->isItalic(), 'fonts:feedTitle:style:underline' => $feedTitleFont->getStyle()->isUnderline(), 'fonts:date:family' => $dateFont->getFamily(), 'fonts:date:size' => $dateFont->getSize(), 'fonts:date:style:bold' => $dateFont->getStyle()->isBold(), 'fonts:date:style:italic' => $dateFont->getStyle()->isItalic(), 'fonts:date:style:underline' => $dateFont->getStyle()->isUnderline(), 'fonts:articleContent:family' => $articleContentFont->getFamily(), 'fonts:articleContent:size' => $articleContentFont->getSize(), 'fonts:articleContent:style:bold' => $articleContentFont->getStyle()->isBold(), 'fonts:articleContent:style:italic' => $articleContentFont->getStyle()->isItalic(), 'fonts:articleContent:style:underline' => $articleContentFont->getStyle()->isUnderline(), 'fonts:articleHeadline:family' => $articleHeadlineFont->getFamily(), 'fonts:articleHeadline:size' => $articleHeadlineFont->getSize(), 'fonts:articleHeadline:style:bold' => $articleHeadlineFont->getStyle()->isBold(), 'fonts:articleHeadline:style:italic' => $articleHeadlineFont->getStyle()->isItalic(), 'fonts:articleHeadline:style:underline' => $articleHeadlineFont->getStyle()->isUnderline(), 'fonts:source:family' => $sourceFont->getFamily(), 'fonts:source:size' => $sourceFont->getSize(), 'fonts:source:style:bold' => $sourceFont->getStyle()->isBold(), 'fonts:source:style:italic' => $sourceFont->getStyle()->isItalic(), 'fonts:source:style:underline' => $sourceFont->getStyle()->isUnderline(), 'fonts:author:family' => $authorFont->getFamily(), 'fonts:author:size' => $authorFont->getSize(), 'fonts:author:style:bold' => $authorFont->getStyle()->isBold(), 'fonts:author:style:italic' => $authorFont->getStyle()->isItalic(), 'fonts:author:style:underline' => $authorFont->getStyle()->isUnderline(), ]; // // Plain // $this->assertCssRender(ThemeTypeEnum::plain(), [ // .feed-title $this->createCssAssertBuilder('.content .feed-title') ->hasFont($feedTitleFont) ->propertyShouldNotExists('background') ->propertyShouldNotExists('color'), // .document $this->createCssAssertBuilder('.content .documents .document') ->propertyShouldBe('margin-top', '10px') ->propertyShouldBe('margin-left', '5px') ->propertyShouldNotExists('display') ->propertyShouldNotExists('flex'), $this->createCssAssertBuilder('.content .documents .document:last-child'), $this->createCssAssertBuilder('.content .documents .document-aside')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-main')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-body')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-image')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-image img')->shouldNotExists(), // .document-headline link $this->createCssAssertBuilder('.content .documents .document-headline a') ->hasFont($articleHeadlineFont) ->propertyShouldBe('color', 'rgba(127, 48, 59, 0.36)'), // .document-source $this->createCssAssertBuilder('.content .documents .document-source') ->hasFont($sourceFont) ->propertyShouldBe('color', 'rgba(128, 49, 60, 0.37)'), // .document-author $this->createCssAssertBuilder('.content .documents .document-author') ->hasFont($authorFont) ->propertyShouldBe('color', 'rgba(129, 50, 61, 0.38)'), // .document-date $this->createCssAssertBuilder('.content .documents .document-date') ->hasFont($dateFont) ->propertyShouldBe('color', 'rgba(125, 46, 57, 0.34)'), // .document-content $this->createCssAssertBuilder('.content .document .document-content') ->hasFont($articleContentFont), // Comments $this->createCssAssertBuilder('.content .comments .comment-title')->shouldNotExists(), $this->createCssAssertBuilder('.content .comments .comment-author') ->propertyShouldBe('color', 'rgba(129, 50, 61, 0.38)') ->hasFont($authorFont), $this->createCssAssertBuilder('.content .comments .comment-date') ->propertyShouldBe('color', 'rgba(125, 46, 57, 0.34)') ->hasFont($dateFont), ], $diffs); // // Enhanced // $this->assertCssRender(ThemeTypeEnum::enhanced(), [ // .feed-title $this->createCssAssertBuilder('.content .feed-title') ->hasFont($feedTitleFont) ->propertyShouldBe('background', 'rgba(123, 44, 55, 0.32)') ->propertyShouldBe('color', 'rgba(124, 45, 56, 0.33)'), // .document $this->createCssAssertBuilder('.content .documents .document') ->propertyShouldBe('margin-top', '5px') ->propertyShouldNotExists('margin-left', '5px') ->propertyShouldExists('display') ->propertyShouldExists('flex'), $this->createCssAssertBuilder('.content .documents .document:last-child')->shouldNotExists(), $this->createCssAssertBuilder('.content .documents .document-aside'), $this->createCssAssertBuilder('.content .documents .document-main'), $this->createCssAssertBuilder('.content .documents .document-body'), $this->createCssAssertBuilder('.content .documents .document-image'), $this->createCssAssertBuilder('.content .documents .document-image img'), // .document-headline link $this->createCssAssertBuilder('.content .documents .document-headline a') ->hasFont($articleHeadlineFont) ->propertyShouldBe('color', 'rgba(127, 48, 59, 0.36)'), // .document-source $this->createCssAssertBuilder('.content .documents .document-source') ->hasFont($sourceFont) ->propertyShouldBe('color', 'rgba(128, 49, 60, 0.37)'), // .document-author $this->createCssAssertBuilder('.content .documents .document-author') ->hasFont($authorFont) ->propertyShouldBe('color', 'rgba(129, 50, 61, 0.38)'), // .document-date $this->createCssAssertBuilder('.content .documents .document-date') ->hasFont($dateFont) ->propertyShouldBe('color', 'rgba(126, 47, 58, 0.35)'), // .document-content $this->createCssAssertBuilder('.content .document .document-content') ->hasFont($articleContentFont), // Comments $this->createCssAssertBuilder('.content .comments .comment-title'), $this->createCssAssertBuilder('.content .comments .comment-author') ->propertyShouldBe('color', 'rgba(129, 50, 61, 0.38)') ->hasNotAnyFonts(), $this->createCssAssertBuilder('.content .comments .comment-date') ->propertyShouldBe('color', 'rgba(126, 47, 58, 0.35)') ->hasNotAnyFonts(), ], $diffs); } /** * @param string $selector A base css element selector. * @param boolean $escape Should escape specific pattern symbols or not. * * @return CssAssertBuilder */ private function createCssAssertBuilder($selector, $escape = true) { return new CssAssertBuilder($selector, $escape); } /** * @param ThemeTypeEnum $themeType A ThemeTypeEnum instance. * @param CssAssertBuilder[] $asserts Array of css assert builders. * * @param array $diffs Notification theme diffs. * * @return void */ private function assertCssRender(ThemeTypeEnum $themeType, array $asserts, array $diffs = []) { $html = $this->render($themeType, $diffs, [ new FeedData('test', []) ]); /** @var CssAssertBuilder $assert */ foreach ($asserts as $assert) { $assert->assert($html); } } /** * @param ThemeTypeEnum $themeType A ThemeTypeEnum instance. * @param array $diffs Notification theme diffs. * * @return CssAsserter */ private function createAsserter(ThemeTypeEnum $themeType, array $diffs = []) { return CssAsserter::createFromHtml($this->render($themeType, $diffs, [ new FeedData('test', []) ])); } }