Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5980652
TitleFormatterTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
TitleFormatterTest.php
View Options
<?php
use
MediaWiki\Page\PageIdentity
;
use
MediaWiki\Page\PageIdentityValue
;
use
MediaWiki\Title\TitleValue
;
/**
* @covers \MediaWiki\Title\TitleParser
*
* @group Title
* @group Database
*/
class
TitleFormatterTest
extends
TitleCodecTestBase
{
public
static
function
provideFormat
()
{
return
[
[
NS_MAIN
,
'Foo_Bar'
,
''
,
''
,
'en'
,
'Foo Bar'
],
[
NS_USER
,
'Hansi_Maier'
,
'stuff_and_so_on'
,
''
,
'en'
,
'User:Hansi Maier#stuff and so on'
],
[
false
,
'Hansi_Maier'
,
''
,
''
,
'en'
,
'Hansi Maier'
],
[
NS_USER_TALK
,
'hansi__maier'
,
''
,
''
,
'en'
,
'User talk:hansi maier'
,
'User talk:Hansi maier'
],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
[
NS_USER
,
'Lisa_Müller'
,
''
,
''
,
'de'
,
'Benutzerin:Lisa Müller'
],
[
NS_MAIN
,
'FooBar'
,
''
,
'remotetestiw'
,
'en'
,
'remotetestiw:FooBar'
],
];
}
/**
* @dataProvider provideFormat
*/
public
function
testFormat
(
$namespace
,
$text
,
$fragment
,
$interwiki
,
$lang
,
$expected
,
$normalized
=
null
)
{
$normalized
??=
$expected
;
$parser
=
$this
->
makeParser
(
$lang
);
$formatter
=
$this
->
makeFormatter
(
$lang
);
$actual
=
$formatter
->
formatTitle
(
$namespace
,
$text
,
$fragment
,
$interwiki
);
$this
->
assertEquals
(
$expected
,
$actual
,
'formatted'
);
// test round trip
$parsed
=
$parser
->
parseTitle
(
$actual
,
NS_MAIN
);
$actual2
=
$formatter
->
formatTitle
(
$parsed
->
getNamespace
(),
$parsed
->
getText
(),
$parsed
->
getFragment
(),
$parsed
->
getInterwiki
()
);
$this
->
assertEquals
(
$normalized
,
$actual2
,
'normalized after round trip'
);
}
public
static
function
provideGetText
()
{
// $title = new TitleValue( $namespace, $dbkey, $fragment );
return
[
[
new
TitleValue
(
NS_MAIN
,
'Foo_Bar'
,
''
),
'en'
,
'Foo Bar'
],
[
new
TitleValue
(
NS_USER
,
'Hansi_Maier'
,
'stuff_and_so_on'
),
'en'
,
'Hansi Maier'
],
[
new
PageIdentityValue
(
37
,
NS_MAIN
,
'Foo_Bar'
,
PageIdentity
::
LOCAL
),
'en'
,
'Foo Bar'
],
[
new
PageIdentityValue
(
37
,
NS_USER
,
'Hansi_Maier'
,
PageIdentity
::
LOCAL
),
'en'
,
'Hansi Maier'
],
];
}
/**
* @dataProvider provideGetText
*/
public
function
testGetText
(
$title
,
$lang
,
$expected
)
{
$formatter
=
$this
->
makeFormatter
(
$lang
);
$actual
=
$formatter
->
getText
(
$title
);
$this
->
assertEquals
(
$expected
,
$actual
);
}
public
static
function
provideGetPrefixedText
()
{
return
[
[
new
TitleValue
(
NS_MAIN
,
'Foo_Bar'
,
''
),
'en'
,
'Foo Bar'
],
[
new
TitleValue
(
NS_USER
,
'Hansi_Maier'
,
'stuff_and_so_on'
),
'en'
,
'User:Hansi Maier'
],
// No capitalization or normalization is applied while formatting!
[
new
TitleValue
(
NS_USER_TALK
,
'hansi__maier'
,
''
),
'en'
,
'User talk:hansi maier'
],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
[
new
TitleValue
(
NS_USER
,
'Lisa_Müller'
,
''
),
'de'
,
'Benutzerin:Lisa Müller'
],
[
new
TitleValue
(
1000000
,
'Invalid_namespace'
,
''
),
'en'
,
'Special:Badtitle/NS1000000:Invalid namespace'
],
[
new
PageIdentityValue
(
37
,
NS_MAIN
,
'Foo_Bar'
,
PageIdentity
::
LOCAL
),
'en'
,
'Foo Bar'
],
[
new
PageIdentityValue
(
37
,
NS_USER
,
'Hansi_Maier'
,
PageIdentity
::
LOCAL
),
'en'
,
'User:Hansi Maier'
],
[
new
PageIdentityValue
(
37
,
NS_USER_TALK
,
'hansi__maier'
,
PageIdentity
::
LOCAL
),
'en'
,
'User talk:hansi maier'
],
[
new
PageIdentityValue
(
37
,
NS_USER
,
'Lisa_Müller'
,
PageIdentity
::
LOCAL
),
'de'
,
'Benutzerin:Lisa Müller'
],
[
new
PageIdentityValue
(
37
,
1000000
,
'Invalid_namespace'
,
PageIdentity
::
LOCAL
),
'en'
,
'Special:Badtitle/NS1000000:Invalid namespace'
],
];
}
/**
* @dataProvider provideGetPrefixedText
*/
public
function
testGetPrefixedText
(
$title
,
$lang
,
$expected
)
{
$formatter
=
$this
->
makeFormatter
(
$lang
);
$actual
=
$formatter
->
getPrefixedText
(
$title
);
$this
->
assertEquals
(
$expected
,
$actual
);
}
public
static
function
provideGetPrefixedDBkey
()
{
return
[
[
new
TitleValue
(
NS_MAIN
,
'Foo_Bar'
,
''
,
''
),
'en'
,
'Foo_Bar'
],
[
new
TitleValue
(
NS_USER
,
'Hansi_Maier'
,
'stuff_and_so_on'
,
''
),
'en'
,
'User:Hansi_Maier'
],
// No capitalization or normalization is applied while formatting!
[
new
TitleValue
(
NS_USER_TALK
,
'hansi__maier'
,
''
,
''
),
'en'
,
'User_talk:hansi__maier'
],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
[
new
TitleValue
(
NS_USER
,
'Lisa_Müller'
,
''
,
''
),
'de'
,
'Benutzerin:Lisa_Müller'
],
[
new
TitleValue
(
NS_MAIN
,
'Remote_page'
,
''
,
'remotetestiw'
),
'en'
,
'remotetestiw:Remote_page'
],
// non-existent namespace
[
new
TitleValue
(
10000000
,
'Foobar'
,
''
,
''
),
'en'
,
'Special:Badtitle/NS10000000:Foobar'
],
[
new
PageIdentityValue
(
37
,
NS_MAIN
,
'Foo_Bar'
,
PageIdentity
::
LOCAL
),
'en'
,
'Foo_Bar'
],
[
new
PageIdentityValue
(
37
,
NS_USER
,
'Hansi_Maier'
,
PageIdentity
::
LOCAL
),
'en'
,
'User:Hansi_Maier'
],
[
new
PageIdentityValue
(
37
,
NS_USER_TALK
,
'hansi__maier'
,
PageIdentity
::
LOCAL
),
'en'
,
'User_talk:hansi__maier'
],
[
new
PageIdentityValue
(
37
,
NS_USER
,
'Lisa_Müller'
,
PageIdentity
::
LOCAL
),
'de'
,
'Benutzerin:Lisa_Müller'
],
[
new
PageIdentityValue
(
37
,
NS_MAIN
,
'Remote_page'
,
PageIdentity
::
LOCAL
),
'en'
,
'Remote_page'
],
[
new
PageIdentityValue
(
37
,
10000000
,
'Foobar'
,
PageIdentity
::
LOCAL
),
'en'
,
'Special:Badtitle/NS10000000:Foobar'
],
];
}
/**
* @dataProvider provideGetPrefixedDBkey
*/
public
function
testGetPrefixedDBkey
(
$title
,
$lang
,
$expected
)
{
$formatter
=
$this
->
makeFormatter
(
$lang
);
$actual
=
$formatter
->
getPrefixedDBkey
(
$title
);
$this
->
assertEquals
(
$expected
,
$actual
);
}
public
static
function
provideGetFullText
()
{
return
[
[
new
TitleValue
(
NS_MAIN
,
'Foo_Bar'
,
''
),
'en'
,
'Foo Bar'
],
[
new
TitleValue
(
NS_USER
,
'Hansi_Maier'
,
'stuff_and_so_on'
),
'en'
,
'User:Hansi Maier#stuff and so on'
],
// No capitalization or normalization is applied while formatting!
[
new
TitleValue
(
NS_USER_TALK
,
'hansi__maier'
,
''
),
'en'
,
'User talk:hansi maier'
],
[
new
TitleValue
(
NS_MAIN
,
'Foo_Bar'
),
'en'
,
'Foo Bar'
],
[
new
TitleValue
(
NS_USER
,
'Hansi_Maier'
),
'en'
,
'User:Hansi Maier'
],
[
new
PageIdentityValue
(
37
,
NS_MAIN
,
'Foo_Bar'
,
PageIdentity
::
LOCAL
),
'en'
,
'Foo Bar'
],
[
new
PageIdentityValue
(
37
,
NS_USER
,
'Hansi_Maier'
,
PageIdentity
::
LOCAL
),
'en'
,
'User:Hansi Maier'
],
[
new
PageIdentityValue
(
37
,
NS_USER_TALK
,
'hansi__maier'
,
PageIdentity
::
LOCAL
),
'en'
,
'User talk:hansi maier'
],
];
}
/**
* @dataProvider provideGetFullText
*/
public
function
testGetFullText
(
$title
,
$lang
,
$expected
)
{
$formatter
=
$this
->
makeFormatter
(
$lang
);
$actual
=
$formatter
->
getFullText
(
$title
);
$this
->
assertEquals
(
$expected
,
$actual
);
}
public
static
function
provideGetNamespaceName
()
{
return
[
[
NS_MAIN
,
'Foo'
,
'en'
,
''
],
[
NS_USER
,
'Foo'
,
'en'
,
'User'
],
[
NS_USER
,
'Hansi Maier'
,
'de'
,
'Benutzer'
],
// getGenderCache() provides a mock that considers first
// names ending in "a" to be female.
[
NS_USER
,
'Lisa Müller'
,
'de'
,
'Benutzerin'
],
];
}
/**
* @dataProvider provideGetNamespaceName
*/
public
function
testGetNamespaceName
(
$namespace
,
$text
,
$lang
,
$expected
)
{
$formatter
=
$this
->
makeFormatter
(
$lang
);
$name
=
$formatter
->
getNamespaceName
(
$namespace
,
$text
);
$this
->
assertEquals
(
$expected
,
$name
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 21:29 (1 w, 1 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
00/f0/ad957172eabf72d7dc8407436549
Default Alt Text
TitleFormatterTest.php (7 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment