public function testgetReviewBlockers() { $superUser1 = new MockSuperUser(); $superUser1->setId(1); $superUser2 = new MockSuperUser(); $superUser2->setId(2); $plainUser = User::newFromName('PlainUser'); $title = Title::makeTitle(NS_MEDIAWIKI, 'Ugakey1/fi'); $content = ContentHandler::makeContent('trans1', $title); WikiPage::factory($title)->doEditContent($content, __METHOD__, 0, false, $superUser1); $title = Title::makeTitle(NS_MEDIAWIKI, 'Ugakey2/fi'); $content = ContentHandler::makeContent('!!FUZZY!!trans2', $title); WikiPage::factory($title)->doEditContent($content, __METHOD__, 0, false, $superUser2); $title = Title::makeTitle(NS_MEDIAWIKI, 'Ugakey3/fi'); $content = ContentHandler::makeContent('unknown message', $title); WikiPage::factory($title)->doEditContent($content, __METHOD__, 0, false, $superUser1); $testcases = array(array('permissiondenied', $plainUser, 'Ugakey1/fi', 'Unpriviledged user is not allowed to change state'), array('owntranslation', $superUser1, 'Ugakey1/fi', 'Cannot approve own translation'), array('fuzzymessage', $superUser1, 'Ugakey2/fi', 'Cannot approve fuzzy translation'), array('unknownmessage', $superUser1, 'Ugakey3/fi', 'Cannot approve unknown translation'), array('', $superUser2, 'Ugakey1/fi', 'Can approve non-fuzzy known non-own translation')); foreach ($testcases as $case) { list($expected, $user, $page, $comment) = $case; $revision = Revision::newFromTitle(Title::makeTitle(NS_MEDIAWIKI, $page)); $ok = ApiTranslationReview::getReviewBlockers($user, $revision); $this->assertEquals($expected, $ok, $comment); } }
protected function getReviewButton(TMessage $message) { $revision = $message->getProperty('revision'); $user = $this->context->getUser(); if (!$this->reviewMode || !$user->isAllowed('translate-messagereview') || !$revision) { return ''; } $attribs = array('type' => 'button', 'class' => 'mw-translate-messagereviewbutton', 'data-token' => ApiTranslationReview::getToken(0, ''), 'data-revision' => $revision, 'name' => 'acceptbutton-' . $revision); $reviewers = (array) $message->getProperty('reviewers'); if (in_array($user->getId(), $reviewers)) { $attribs['value'] = wfMessage('translate-messagereview-done')->text(); $attribs['disabled'] = 'disabled'; $attribs['title'] = wfMessage('translate-messagereview-doit')->text(); } elseif ($message->hasTag('fuzzy')) { $attribs['value'] = wfMessage('translate-messagereview-submit')->text(); $attribs['disabled'] = 'disabled'; $attribs['title'] = wfMessage('translate-messagereview-no-fuzzy')->text(); } elseif ($user->getName() === $message->getProperty('last-translator-text')) { $attribs['value'] = wfMessage('translate-messagereview-submit')->text(); $attribs['disabled'] = 'disabled'; $attribs['title'] = wfMessage('translate-messagereview-no-own')->text(); } else { $attribs['value'] = wfMessage('translate-messagereview-submit')->text(); } $review = Html::element('input', $attribs); return $review; }
/** * @group Broken * This tests fails regularly on WMF CI but haven't been able to reproduce locally. */ public function testHooks() { $user = new MockSuperUser(); $group = MessageGroups::getGroup('group-trans'); // In the beginning... $currentState = ApiGroupReview::getState($group, 'fi'); $this->assertEquals(false, $currentState, 'groups start from unset state'); // First translation $title = Title::newFromText('MediaWiki:key1/fi'); $page = WikiPage::factory($title); $content = ContentHandler::makeContent('trans1', $title); $status = $page->doEditContent($content, __METHOD__, 0, false, $user); self::runJobs(); $currentState = ApiGroupReview::getState($group, 'fi'); $this->assertEquals('inprogress', $currentState, 'in progress after first translation'); // First review ApiTranslationReview::doReview($user, self::getRevision($status), __METHOD__); self::runJobs(); $currentState = ApiGroupReview::getState($group, 'fi'); $this->assertEquals('inprogress', $currentState, 'in progress while untranslated messages'); // Second translation $title = Title::newFromText('MediaWiki:key2/fi'); $page = WikiPage::factory($title); $content = ContentHandler::makeContent('trans2', $title); $status = $page->doEditContent($content, __METHOD__, 0, false, $user); self::runJobs(); $currentState = ApiGroupReview::getState($group, 'fi'); $this->assertEquals('proofreading', $currentState, 'proofreading after second translation'); // Second review ApiTranslationReview::doReview($user, self::getRevision($status), __METHOD__); self::runJobs(); $currentState = ApiGroupReview::getState($group, 'fi'); $this->assertEquals('ready', $currentState, 'ready when all proofread'); // Change to translation $title = Title::newFromText('MediaWiki:key1/fi'); $page = WikiPage::factory($title); $content = ContentHandler::makeContent('trans1 updated', $title); $page->doEditContent($content, __METHOD__, 0, false, $user); self::runJobs(); $currentState = ApiGroupReview::getState($group, 'fi'); $this->assertEquals('proofreading', $currentState, 'back to proofreading after translation changed'); }