return self::makeTitle( MWNamespace::getTalk( $this->getNamespace() ), $this->getDBkey() );
}
+ /**
+ * Get a Title object associated with the talk page of this article,
+ * if such a talk page can exist.
+ *
+ * @return Title The object for the talk page,
+ * or null if no associated talk page can exist, according to canHaveTalkPage().
+ */
+ public function getTalkPageIfDefined() {
+ if ( !$this->canHaveTalkPage() ) {
+ return null;
+ }
+
+ return $this->getTalkPage();
+ }
+
/**
* Get a title object associated with the subject page of this
* talk page
$this->assertSame( $expected, $actual, $title->getPrefixedDBkey() );
}
+ public static function provideGetTalkPage_good() {
+ return [
+ [ Title::makeTitle( NS_MAIN, 'Test' ), Title::makeTitle( NS_TALK, 'Test' ) ],
+ [ Title::makeTitle( NS_TALK, 'Test' ), Title::makeTitle( NS_TALK, 'Test' ) ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideGetTalkPage_good
+ * @covers Title::getTalkPage
+ */
+ public function testGetTalkPage_good( Title $title, Title $expected ) {
+ $talk = $title->getTalkPage();
+ $this->assertSame(
+ $expected->getPrefixedDBKey(),
+ $talk->getPrefixedDBKey(),
+ $title->getPrefixedDBKey()
+ );
+ }
+
+ /**
+ * @dataProvider provideGetTalkPage_good
+ * @covers Title::getTalkPageIfDefined
+ */
+ public function testGetTalkPageIfDefined_good( Title $title ) {
+ $talk = $title->getTalkPageIfDefined();
+ $this->assertInstanceOf(
+ Title::class,
+ $talk,
+ $title->getPrefixedDBKey()
+ );
+ }
+
+ public static function provideGetTalkPage_bad() {
+ return [
+ [ Title::makeTitle( NS_SPECIAL, 'Test' ) ],
+ [ Title::makeTitle( NS_MEDIA, 'Test' ) ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideGetTalkPage_bad
+ * @covers Title::getTalkPageIfDefined
+ */
+ public function testGetTalkPageIfDefined_bad( Title $title ) {
+ $talk = $title->getTalkPageIfDefined();
+ $this->assertNull(
+ $talk,
+ $title->getPrefixedDBKey()
+ );
+ }
+
public function provideCreateFragmentTitle() {
return [
[ Title::makeTitle( NS_MAIN, 'Test' ), 'foo' ],