createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::simple(), ]) ->hasNotNode('.email-summary') ->hasNotNode('.email-conclusion'); $this->createAsserter(ThemeTypeEnum::plain(), [ 'summary' => 'summary text', 'conclusion' => 'conclusion text', ]) ->with('.email-summary')->contains('summary text')->end() ->with('.email-conclusion')->contains('conclusion text')->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'conclusion' => 'conclusion text', ]) ->hasNotNode('.email-summary') ->with('.email-conclusion')->contains('conclusion text')->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'summary' => 'summary text', ]) ->with('.email-summary')->contains('summary text')->end() ->hasNotNode('.email-conclusion'); // // Enhanced // $this->createAsserter(ThemeTypeEnum::enhanced()) ->hasNotNode('.email-summary') ->hasNotNode('.email-conclusion'); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'summary' => 'summary text', 'conclusion' => 'conclusion text', ]) ->with('.email-summary')->contains('summary text')->end() ->with('.email-conclusion')->contains('conclusion text')->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'conclusion' => 'conclusion text', ]) ->hasNotNode('.email-summary') ->with('.email-conclusion')->contains('conclusion text')->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'summary' => 'summary text', ]) ->with('.email-summary')->contains('summary text')->end() ->hasNotNode('.email-conclusion'); } /** * @return void */ public function testTableOfContentsPlain() { $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::no(), 'content:showInfo:articleCount' => true, ]) ->hasNotNode('.table-of-contents')->end() ->hasNotNode('.table-of-contents .feed-document-count')->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::no(), 'content:showInfo:articleCount' => false, ]) ->hasNotNode('.table-of-contents')->end() ->hasNotNode('.table-of-contents .feed-document-count')->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::simple(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('(%d articles)', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('(%d articles)', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('(%d articles)', self::THIRD_FEED_COUNT))->end() ->end() ->hasNotNode('.documents .document') ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::simple(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->hasNotNode('.documents .document') ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headline(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('(%d articles)', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('(%d articles)', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('(%d articles)', self::THIRD_FEED_COUNT))->end() ->end() ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1', true) ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headline(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1', true) ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headlineSourceDate(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('(%d articles)', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('(%d articles)', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('(%d articles)', self::THIRD_FEED_COUNT))->end() ->end() ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1 | CNN | January 01, 2017') ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headlineSourceDate(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1 | CNN | January 01, 2017') ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::sourceHeadlineDate(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('(%d articles)', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('(%d articles)', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('(%d articles)', self::THIRD_FEED_COUNT))->end() ->end() ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('CNN | Feed1 Document1 | January 01, 2017') ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::sourceHeadlineDate(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('CNN | Feed1 Document1 | January 01, 2017') ->end() ->end() ->end() ->end(); } /** * @return void */ public function testTableOfContainsEnhanced() { $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::no(), 'content:showInfo:articleCount' => true, ]) ->hasNotNode('.table-of-contents')->end() ->hasNotNode('.table-of-contents .feed-document-count')->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::no(), 'content:showInfo:articleCount' => false, ]) ->hasNotNode('.table-of-contents')->end() ->hasNotNode('.table-of-contents .feed-document-count')->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::simple(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('%d articles', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('%d articles', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('%d articles', self::THIRD_FEED_COUNT))->end() ->end() ->hasNotNode('.documents .document') ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::simple(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->hasNotNode('.documents .document') ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headline(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('%d articles', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('%d articles', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('%d articles', self::THIRD_FEED_COUNT))->end() ->end() ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1', true) ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headline(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1', true) ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headlineSourceDate(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('%d articles', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('%d articles', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('%d articles', self::THIRD_FEED_COUNT))->end() ->end() ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1 | CNN | January 01, 2017') ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::headlineSourceDate(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1 | CNN | January 01, 2017') ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::sourceHeadlineDate(), 'content:showInfo:articleCount' => true, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->with('.feed-document-count') ->child(0)->contains(sprintf('%d articles', self::FIRST_FEED_COUNT))->end() ->child(1)->contains(sprintf('%d articles', self::SECOND_FEED_COUNT))->end() ->child(2)->contains(sprintf('%d articles', self::THIRD_FEED_COUNT))->end() ->end() ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('CNN | Feed1 Document1 | January 01, 2017') ->end() ->end() ->end() ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:tableOfContents' => ThemeOptionsTableOfContentsEnum::sourceHeadlineDate(), 'content:showInfo:articleCount' => false, ]) ->with('.table-of-contents') ->with('.feed-name') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNotNode('.feed-document-count') ->with('.documents .document') ->child(0) ->with('a') ->hasAttr('href', 'http://permalink') ->contains('CNN | Feed1 Document1 | January 01, 2017') ->end() ->end() ->end() ->end(); } /** * @return void */ public function testContentPlain() { $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:sectionDivider' => false, 'content:showInfo:sourceCountry' => false, 'content:showInfo:userComments' => ThemeOptionsUserCommentsEnum::no(), 'content:showInfo:images' => false, ]) ->with('.content') ->with('.feed-title') ->child(0)->contains('feed1:')->end() ->child(1)->contains('feed2:')->end() ->child(2)->contains('feed3:')->end() ->end() ->hasNotNode('.feed-title img') ->notContains('Comments') ->with('.documents') ->hasNotNode('.document-aside') ->with('.document') ->child(0) ->with('.document-headline a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1') ->end() ->with('.document-source') ->contains('CNN') ->notContains('(Russian)') ->end() ->with('.document-author')->contains('John Smith')->end() ->with('.document-date') ->contains('-') ->contains(date_create('2017-01-01 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed1 Document1 Main')->end() ->hasNotNode('.comments') ->hasNotNode('.document-image') ->end() ->child(1) ->with('.document-headline a') ->hasAttr('href', 'http://permalink_next') ->contains('Feed2 Document1') ->end() ->with('.document-source') ->contains('Test') ->notContains('(USA)') ->end() ->hasNotNode('.document-author') ->with('.document-date') ->contains('-') ->contains(date_create('2017-01-10 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed2 Document1 Main')->end() ->hasNotNode('.comments') ->hasNotNode('.document-image') ->end() ->end() ->end() ->hasNotNode('.feed-divider') ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:sectionDivider' => true, 'content:showInfo:sourceCountry' => true, 'content:showInfo:userComments' => ThemeOptionsUserCommentsEnum::withAuthorDate(), 'content:showInfo:images' => true, ]) ->with('.content') ->with('.feed-title') ->child(0)->contains('feed1:')->end() ->child(1)->contains('feed2:')->end() ->child(2)->contains('feed3:')->end() ->end() ->hasNotNode('.feed-title img') ->notContains('Comments') ->with('.documents') ->hasNotNode('.document-aside') ->with('.document') ->child(0) ->with('.document-headline a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1') ->end() ->with('.document-source') ->contains('CNN') ->contains('(Russian)') ->end() ->with('.document-author')->contains('John Smith')->end() ->with('.document-date') ->contains('-') ->contains(date_create('2017-01-01 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed1 Document1 Main')->end() ->hasNotNode('.comments') ->hasNotNode('.document-image') ->end() ->child(1) ->with('.document-headline a') ->hasAttr('href', 'http://permalink_next') ->contains('Feed2 Document1') ->end() ->with('.document-source')->contains('Test')->end() ->hasNotNode('.document-author') ->with('.document-date') ->contains('-') ->contains(date_create('2017-01-10 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed2 Document1 Main')->end() ->with('.comments .comment') ->child(0) ->with('.comment-title')->contains('Feed2 Document1 comment1 title')->end() ->with('.comment-author') ->contains('User1 first name') ->contains('User1 last name') ->end() ->with('.comment-date') ->contains(date_create('2017-01-02 10:00:00')->format('F d, Y H:i')) ->end() ->with('.comment-body')->contains('Feed2 Document1 comment1')->end() ->end() ->child(1) ->hasNotNode('.comment-title') ->with('.comment-author') ->contains('User2 first name') ->contains('User2 last name') ->end() ->with('.comment-date') ->contains(date_create('2017-01-03 10:00:00')->format('F d, Y H:i')) ->end() ->with('.comment-body')->contains('Feed2 Document1 comment2')->end() ->end() ->end() ->hasNotNode('.document-image') ->end() ->end() ->end() ->hasNode('.feed-divider', 2) ->end(); $this->createAsserter(ThemeTypeEnum::plain(), [ 'content:showInfo:userComments' => ThemeOptionsUserCommentsEnum::withoutAuthorDate(), ]) ->with('.content') ->with('.document') ->child(1) ->with('.comments') ->hasNotNode('.comment-date') ->end() ->end() ->end() ->end(); } /** * @return void */ public function testContentEnhanced() { $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:sectionDivider' => false, 'content:showInfo:sourceCountry' => false, 'content:showInfo:userComments' => ThemeOptionsUserCommentsEnum::no(), 'content:showInfo:images' => false, ]) ->with('.content') ->with('.feed-title') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNode('.feed-title img', 3) ->with('.documents') ->hasNode('.document-aside', 2) ->with('.document') ->child(0) ->with('.document-headline a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1') ->end() ->with('.document-source') ->contains('CNN') ->notContains('(Russian)') ->end() ->with('.document-author')->contains('John Smith')->end() ->with('.document-date') ->contains('|') ->contains(date_create('2017-01-01 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed1 Document1 Main')->end() ->hasNotNode('.comments') ->hasNotNode('.document-image') ->end() ->child(1) ->with('.document-headline a') ->hasAttr('href', 'http://permalink_next') ->contains('Feed2 Document1') ->end() ->with('.document-source') ->contains('Test') ->notContains('(USA)') ->end() ->hasNotNode('.document-author') ->with('.document-date') ->contains('|') ->contains(date_create('2017-01-10 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed2 Document1 Main')->end() ->hasNotNode('.comments') ->hasNotNode('.document-image') ->end() ->end() ->end() ->hasNotNode('.feed-divider') ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:sectionDivider' => true, 'content:showInfo:sourceCountry' => true, 'content:showInfo:userComments' => ThemeOptionsUserCommentsEnum::withAuthorDate(), 'content:showInfo:images' => true, ]) ->with('.content') ->with('.feed-title') ->child(0)->contains('feed1')->end() ->child(1)->contains('feed2')->end() ->child(2)->contains('feed3')->end() ->end() ->hasNode('.feed-title img', 3) ->with('.documents') ->hasNode('.document-aside', 2) ->with('.document') ->child(0) ->with('.document-headline a') ->hasAttr('href', 'http://permalink') ->contains('Feed1 Document1') ->end() ->with('.document-source') ->contains('CNN') ->contains('(Russian)') ->end() ->with('.document-author')->contains('John Smith')->end() ->with('.document-date') ->contains('|') ->contains(date_create('2017-01-01 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed1 Document1 Main')->end() ->hasNotNode('.comments') ->hasNode('.document-image') ->end() ->child(1) ->with('.document-headline a') ->hasAttr('href', 'http://permalink_next') ->contains('Feed2 Document1') ->end() ->with('.document-source')->contains('Test')->end() ->hasNotNode('.document-author') ->with('.document-date') ->contains('|') ->contains(date_create('2017-01-10 10:00:00')->format('F d, Y H:i')) ->end() ->with('.document-content')->contains('Feed2 Document1 Main')->end() ->with('.comments .comment') ->child(0) ->with('.comment-title')->contains('Feed2 Document1 comment1 title')->end() ->with('.comment-author') ->contains('User1 first name') ->contains('User1 last name') ->end() ->with('.comment-date') ->contains(date_create('2017-01-02 10:00:00')->format('F d, Y H:i')) ->end() ->with('.comment-body')->contains('Feed2 Document1 comment1')->end() ->end() ->child(1) ->hasNotNode('.comment-title') ->with('.comment-author') ->contains('User2 first name') ->contains('User2 last name') ->end() ->with('.comment-date') ->contains(date_create('2017-01-03 10:00:00')->format('F d, Y H:i')) ->end() ->with('.comment-body')->contains('Feed2 Document1 comment2')->end() ->end() ->end() ->hasNotNode('.document-image') ->end() ->end() ->end() ->hasNotNode('.feed-divider') ->end(); $this->createAsserter(ThemeTypeEnum::enhanced(), [ 'content:showInfo:userComments' => ThemeOptionsUserCommentsEnum::withoutAuthorDate(), ]) ->with('.content') ->with('.document') ->child(1) ->with('.comments') ->hasNotNode('.comment-date') ->end() ->end() ->end() ->end(); } /** * @param ThemeTypeEnum $themeType A ThemeTypeEnum instance. * @param array $diffs Notification theme diffs. * * @return HtmlAsserter */ private function createAsserter(ThemeTypeEnum $themeType, array $diffs = []) { $comment1 = new Comment( User::create('some@main.com') ->setFirstName('User1 first name') ->setLastName('User1 last name'), 'Feed2 Document1 comment1', 'Feed2 Document1 comment1 title' ); $comment1->setCreatedAt(date_create('2017-01-02 10:00:00')); $comment2 = new Comment( User::create('some@main.com') ->setFirstName('User2 first name') ->setLastName('User2 last name'), 'Feed2 Document1 comment2' ); $comment2->setCreatedAt(date_create('2017-01-03 10:00:00')); /** @var IndexStrategyInterface|\PHPUnit_Framework_MockObject_MockObject $strategy */ $strategy = $this->getMockForInterface(IndexStrategyInterface::class); $strategy ->method('normalizeDocumentData') ->willReturnCallback(function (array $data) { return $data; }); $strategy ->method('normalizeFieldName') ->willReturnCallback(function ($fieldName) { return $fieldName; }); $strategy ->method('normalizePublisherType') ->willReturnCallback(function ($type) { return $type; }); $crawler = new Crawler($this->render($themeType, $diffs, [ new FeedData('feed1', [ new ArticleDocument($strategy, [ 'title' => 'Feed1 Document1', 'permalink' => 'http://permalink', 'content' => 'Feed1 Document1 Main', 'published' => date_create('2017-01-01 10:00:00'), 'source' => [ 'title' => 'CNN', 'country' => 'Russian', ], 'author' => [ 'name' => 'John Smith', ], 'image' => 'http://image.dev', ]), ]), new FeedData('feed2', [ new ArticleDocument($strategy, [ 'title' => 'Feed2 Document1', 'permalink' => 'http://permalink_next', 'content' => 'Feed2 Document1 Main', 'published' => date_create('2017-01-10 10:00:00'), 'source' => [ 'title' => 'Test', 'country' => 'USA', ], 'comments' => [ $comment1, $comment2, ], ]), ]), new FeedData('feed3', []), ])); return new HtmlAsserter($crawler); } }