+ /**
+ * @dataProvider provideFeedLinkData
+ * @covers OutputPage::getHeadLinksArray
+ */
+ public function testRecentChangesFeed( $feed, $advertised_feed_types,
+ $message, $present, $non_present ) {
+ $outputPage = $this->setupFeedLinks( $feed, $advertised_feed_types );
+ $this->assertFeedLinks( $outputPage, $message, $present, $non_present );
+ }
+
+ public static function provideAdditionalFeedData() {
+ return [
+ [
+ true, [ 'atom' ], 'Additional Atom feed should be offered',
+ 'atom',
+ [ self::ATOM_TEST_LINK, self::ATOM_RC_LINK ],
+ [ self::RSS_TEST_LINK, self::RSS_RC_LINK ],
+ true,
+ ],
+ [
+ true, [ 'rss' ], 'Additional RSS feed should be offered',
+ 'rss',
+ [ self::RSS_TEST_LINK, self::RSS_RC_LINK ],
+ [ self::ATOM_TEST_LINK, self::ATOM_RC_LINK ],
+ true,
+ ],
+ [
+ true, [ 'rss' ], 'Additional Atom feed should NOT be offered with RSS enabled',
+ 'atom',
+ [ self::RSS_RC_LINK ],
+ [ self::RSS_TEST_LINK, self::ATOM_TEST_LINK, self::ATOM_RC_LINK ],
+ false,
+ ],
+ [
+ false, [ 'atom' ], 'Additional Atom feed should NOT be offered, all feeds disabled',
+ 'atom',
+ [],
+ [
+ self::RSS_TEST_LINK, self::ATOM_TEST_LINK,
+ self::ATOM_RC_LINK, self::ATOM_RC_LINK,
+ ],
+ false,
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideAdditionalFeedData
+ * @covers OutputPage::getHeadLinksArray
+ * @covers OutputPage::addFeedLink
+ * @covers OutputPage::getSyndicationLinks
+ * @covers OutputPage::isSyndicated
+ */
+ public function testAdditionalFeeds( $feed, $advertised_feed_types, $message,
+ $additional_feed_type, $present, $non_present, $any_ui_links ) {
+ $outputPage = $this->setupFeedLinks( $feed, $advertised_feed_types );
+ $outputPage->addFeedLink( $additional_feed_type, 'fake-link' );
+ $this->assertFeedLinks( $outputPage, $message, $present, $non_present );
+ $this->assertFeedUILinks( $outputPage, $any_ui_links );
+ }
+