-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathWikibaseExportIntegrationTest.php
92 lines (73 loc) · 2.44 KB
/
WikibaseExportIntegrationTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
namespace ProfessionalWiki\WikibaseExport\Tests;
use Article;
use MediaWikiIntegrationTestCase;
use ProfessionalWiki\WikibaseExport\WikibaseExportExtension;
use Title;
use Wikibase\DataModel\Entity\EntityDocument;
use Wikibase\DataModel\Entity\NumericPropertyId;
use Wikibase\DataModel\Entity\Property;
use Wikibase\DataModel\Term\Fingerprint;
use Wikibase\DataModel\Term\Term;
use Wikibase\DataModel\Term\TermList;
use Wikibase\Repo\WikibaseRepo;
use WikiPage;
class WikibaseExportIntegrationTest extends MediaWikiIntegrationTestCase {
protected function setUp(): void {
parent::setUp();
WikibaseExportExtension::getInstance()->clearConfig();
}
protected function editConfigPage( string $config ): void {
$this->editPage(
'MediaWiki:' . WikibaseExportExtension::CONFIG_PAGE_TITLE,
$config
);
}
protected function deleteConfigPage(): void {
/**
* @var Title $title
*/
$title = Title::newFromText( 'MediaWiki:' . WikibaseExportExtension::CONFIG_PAGE_TITLE );
$this->deletePage( new WikiPage( $title ) );
}
protected function saveEntity( EntityDocument $entity ): void {
WikibaseRepo::getEntityStore()->saveEntity(
entity: $entity,
summary: __CLASS__,
user: self::getTestSysop()->getUser()
);
}
protected function saveProperty( string $pId, string $type, string $label ): void {
$this->saveEntity(
new Property(
id: new NumericPropertyId( $pId ),
fingerprint: new Fingerprint( labels: new TermList( [
new Term( languageCode: 'en', text: $label )
] ) ),
dataTypeId: $type
)
);
}
protected function skipOnPhp81AndLater(): void {
if ( version_compare( PHP_VERSION, '8.1.0' ) >= 0 ) {
$this->markTestSkipped( 'Wikibase does not yet work with PHP 8.1' );
}
}
protected function getPageHtml( string $pageTitle ): string {
$title = \Title::newFromText( $pageTitle );
$article = new Article( $title, 0 );
$article->getContext()->getOutput()->setTitle( $title );
$article->view();
return $article->getContext()->getOutput()->getHTML();
}
protected function getEditPageHtml( string $pageTitle ): string {
$title = \Title::newFromText( $pageTitle );
$article = new Article( $title, 0 );
$article->getContext()->getOutput()->setTitle( $title );
$editPage = new \EditPage( $article );
$editPage->setContextTitle( $title );
$editPage->getContext()->setUser( $this->getTestSysop()->getUser() );
$editPage->edit();
return $editPage->getContext()->getOutput()->getHTML();
}
}