Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4097576
ApiQueryRevisionsTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
ApiQueryRevisionsTest.php
View Options
<?php
namespace
MediaWiki\Tests\Api\Query
;
use
MediaWiki\CommentStore\CommentStoreComment
;
use
MediaWiki\Content\WikitextContent
;
use
MediaWiki\Permissions\UltimateAuthority
;
use
MediaWiki\Revision\SlotRecord
;
use
MediaWiki\Tests\Api\ApiTestCase
;
use
MediaWiki\Tests\User\TempUser\TempUserTestTrait
;
use
MediaWiki\User\UserIdentityValue
;
/**
* @group API
* @group Database
* @group medium
* @covers MediaWiki\Api\ApiQueryRevisions
*/
class
ApiQueryRevisionsTest
extends
ApiTestCase
{
use
TempUserTestTrait
;
/**
* @group medium
*/
public
function
testContentComesWithContentModelAndFormat
()
{
$pageName
=
'Help:'
.
__METHOD__
;
$page
=
$this
->
getExistingTestPage
(
$pageName
);
$user
=
$this
->
getTestUser
()->
getUser
();
$page
->
newPageUpdater
(
$user
)
->
setContent
(
SlotRecord
::
MAIN
,
new
WikitextContent
(
'Some text'
)
)
->
saveRevision
(
CommentStoreComment
::
newUnsavedComment
(
'inserting content'
)
);
$apiResult
=
$this
->
doApiRequest
(
[
'action'
=>
'query'
,
'prop'
=>
'revisions'
,
'titles'
=>
$pageName
,
'rvprop'
=>
'content'
,
'rvslots'
=>
'main'
,
]
);
$this
->
assertArrayHasKey
(
'query'
,
$apiResult
[
0
]
);
$this
->
assertArrayHasKey
(
'pages'
,
$apiResult
[
0
][
'query'
]
);
foreach
(
$apiResult
[
0
][
'query'
][
'pages'
]
as
$page
)
{
$this
->
assertArrayHasKey
(
'revisions'
,
$page
);
foreach
(
$page
[
'revisions'
]
as
$revision
)
{
$this
->
assertArrayHasKey
(
'slots'
,
$revision
);
$this
->
assertArrayHasKey
(
'main'
,
$revision
[
'slots'
]
);
$this
->
assertArrayHasKey
(
'contentformat'
,
$revision
[
'slots'
][
'main'
],
'contentformat should be included when asking content so client knows how to interpret it'
);
$this
->
assertArrayHasKey
(
'contentmodel'
,
$revision
[
'slots'
][
'main'
],
'contentmodel should be included when asking content so client knows how to interpret it'
);
}
}
}
/**
* @group Database
* @group medium
*/
public
function
testRevisionMadeByTempUser
()
{
$this
->
enableAutoCreateTempUser
();
$tempUser
=
new
UserIdentityValue
(
1236764321
,
'~1'
);
$title
=
$this
->
getNonexistingTestPage
(
'TestPage1'
)->
getTitle
();
$this
->
editPage
(
$title
,
'Some Content'
,
'Create Page'
,
NS_MAIN
,
new
UltimateAuthority
(
$tempUser
)
);
$apiResult
=
$this
->
doApiRequest
(
[
'action'
=>
'query'
,
'prop'
=>
'revisions'
,
'titles'
=>
'TestPage1'
]
);
$this
->
assertArrayHasKey
(
'query'
,
$apiResult
[
0
]
);
$this
->
assertArrayHasKey
(
'pages'
,
$apiResult
[
0
][
'query'
]
);
$this
->
assertArrayHasKey
(
'temp'
,
$apiResult
[
0
][
'query'
][
'pages'
][
1
][
'revisions'
][
0
]
);
$this
->
assertTrue
(
$apiResult
[
0
][
'query'
][
'pages'
][
1
][
'revisions'
][
0
][
'temp'
]
);
}
/**
* @group medium
*/
public
function
testResolvesPrevNextInDiffto
()
{
$pageName
=
'Help:'
.
__METHOD__
;
$page
=
$this
->
getExistingTestPage
(
$pageName
);
$user
=
$this
->
getTestUser
()->
getUser
();
$revRecord
=
$page
->
newPageUpdater
(
$user
)
->
setContent
(
SlotRecord
::
MAIN
,
new
WikitextContent
(
'Some text'
)
)
->
saveRevision
(
CommentStoreComment
::
newUnsavedComment
(
'inserting more content'
)
);
[
$rvDiffToPrev
]
=
$this
->
doApiRequest
(
[
'action'
=>
'query'
,
'prop'
=>
'revisions'
,
'titles'
=>
$pageName
,
'rvdiffto'
=>
'prev'
,
]
);
$this
->
assertSame
(
$revRecord
->
getId
(),
$rvDiffToPrev
[
'query'
][
'pages'
][
$page
->
getId
()][
'revisions'
][
0
][
'revid'
]
);
$this
->
assertSame
(
$revRecord
->
getId
(),
$rvDiffToPrev
[
'query'
][
'pages'
][
$page
->
getId
()][
'revisions'
][
0
][
'diff'
][
'to'
]
);
$this
->
assertSame
(
$revRecord
->
getParentId
(),
$rvDiffToPrev
[
'query'
][
'pages'
][
$page
->
getId
()][
'revisions'
][
0
][
'diff'
][
'from'
]
);
[
$rvDiffToNext
]
=
$this
->
doApiRequest
(
[
'action'
=>
'query'
,
'prop'
=>
'revisions'
,
'titles'
=>
$pageName
,
'rvdiffto'
=>
'next'
,
'rvdir'
=>
'newer'
]
);
$this
->
assertSame
(
$revRecord
->
getParentId
(),
$rvDiffToNext
[
'query'
][
'pages'
][
$page
->
getId
()][
'revisions'
][
0
][
'revid'
]
);
$this
->
assertSame
(
$revRecord
->
getId
(),
$rvDiffToNext
[
'query'
][
'pages'
][
$page
->
getId
()][
'revisions'
][
0
][
'diff'
][
'to'
]
);
$this
->
assertSame
(
$revRecord
->
getParentId
(),
$rvDiffToNext
[
'query'
][
'pages'
][
$page
->
getId
()][
'revisions'
][
0
][
'diff'
][
'from'
]
);
}
/**
* @dataProvider provideSectionNewTestCases
* @param string $pageContent
* @param string $expectedSectionContent
* @group medium
*/
public
function
testSectionNewReturnsEmptyContentForPageWithSection
(
$pageContent
,
$expectedSectionContent
)
{
$pageName
=
'Help:'
.
__METHOD__
;
$page
=
$this
->
getExistingTestPage
(
$pageName
);
$user
=
$this
->
getTestUser
()->
getUser
();
$revRecord
=
$page
->
newPageUpdater
(
$user
)
->
setContent
(
SlotRecord
::
MAIN
,
new
WikitextContent
(
$pageContent
)
)
->
saveRevision
(
CommentStoreComment
::
newUnsavedComment
(
'inserting content'
)
);
[
$response
]
=
$this
->
doApiRequest
(
[
'action'
=>
'query'
,
'prop'
=>
'revisions'
,
'revids'
=>
$revRecord
->
getId
(),
'rvprop'
=>
'content|ids'
,
'rvslots'
=>
'main'
,
'rvsection'
=>
'new'
]
);
$this
->
assertSame
(
$expectedSectionContent
,
$response
[
'query'
][
'pages'
][
$page
->
getId
()][
'revisions'
][
0
][
'slots'
][
'main'
][
'content'
]
);
}
public
static
function
provideSectionNewTestCases
()
{
yield
'page with existing section'
=>
[
"==A section==
\n
text"
,
''
];
yield
'page with no sections'
=>
[
'This page has no sections'
,
'This page has no sections'
];
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Aug 18, 14:56 (3 w, 6 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
73/18/45bee6b23329e89d84765ac25a9c
Default Alt Text
ApiQueryRevisionsTest.php (5 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment