summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'MLEB/Translate/tests/phpunit/helpers/TranslatablePageTestTrait.php')
-rw-r--r--MLEB/Translate/tests/phpunit/helpers/TranslatablePageTestTrait.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/MLEB/Translate/tests/phpunit/helpers/TranslatablePageTestTrait.php b/MLEB/Translate/tests/phpunit/helpers/TranslatablePageTestTrait.php
new file mode 100644
index 00000000..d3e0e744
--- /dev/null
+++ b/MLEB/Translate/tests/phpunit/helpers/TranslatablePageTestTrait.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * @license GPL-2.0-or-later
+ * @file
+ */
+
+/**
+ * A utility trait containing reusable methods for use in tests
+ * @since 2020.04
+ */
+trait TranslatablePageTestTrait {
+ /**
+ * Creates a translatable page but does not mark it for translation.
+ *
+ * @param string $title
+ * @param string $content
+ * @param User $creator
+ * @return TranslatablePage
+ */
+ public function createUnmarkedTranslatablePage(
+ string $title, string $content, User $creator
+ ): TranslatablePage {
+ return $this->createTranslatablePage( $title, $content, $creator, false );
+ }
+
+ /**
+ * Creates a translatable page and marks it for translation.
+ *
+ * @param string $title
+ * @param string $content
+ * @param User $creator
+ * @return void
+ */
+ public function createMarkedTranslatablePage(
+ string $title, string $content, User $creator
+ ): TranslatablePage {
+ return $this->createTranslatablePage( $title, $content, $creator, true );
+ }
+
+ private function createTranslatablePage(
+ string $title, string $content, User $creator, bool $markForTranslation
+ ): TranslatablePage {
+ // Create new page
+ $translatablePageTitle = Title::newFromText( $title );
+ $page = WikiPage::factory( $translatablePageTitle );
+ $text = "<translate>$content</translate>";
+ $content = ContentHandler::makeContent( $text, $translatablePageTitle );
+ $translatablePage = TranslatablePage::newFromTitle( $translatablePageTitle );
+
+ // Create the page
+ $editStatus = $page->doEditContent( $content, __METHOD__, 0, false, $creator );
+
+ if ( $markForTranslation ) {
+ // Mark the page for translation
+ $latestRevisionId = $editStatus->value['revision-record']->getId();
+ $translatablePage->addMarkedTag( $latestRevisionId );
+ }
+
+ return $translatablePage;
+ }
+}