public function testGetSetState() { $group = new WikiMessageGroup('testgroup', 'wewgweg'); $ok = ApiGroupReview::changeState($group, 'fi', 'newstate', FuzzyBot::getUser()); $this->assertTrue($ok, 'state was changed'); $state = ApiGroupReview::getState($group, 'fi'); $this->assertEquals('newstate', $state, 'state was changed to expected value'); $ok = ApiGroupReview::changeState($group, 'fi', 'newstate', FuzzyBot::getUser()); $this->assertFalse($ok, 'state was not changed again'); }
public function run() { $title = $this->title; $handle = new MessageHandle($title); $code = $handle->getCode(); if (!$handle->isValid() && !$code) { return true; } $groups = self::getGroupsWithTransitions($handle); foreach ($groups as $id => $transitions) { $group = MessageGroups::getGroup($id); $stats = MessageGroupStats::forItem($id, $code); $state = self::getNewState($stats, $transitions); if ($state) { ApiGroupReview::changeState($group, $code, $state, FuzzyBot::getUser()); } } return true; }
protected function getWorkflowStatus() { global $wgTranslateWorkflowStates, $wgUser; if (!$wgTranslateWorkflowStates) { return false; } if (MessageGroups::isDynamic($this->group)) { return false; } $dbr = wfGetDB(DB_SLAVE); $current = $dbr->selectField('translate_groupreviews', 'tgr_state', array('tgr_group' => $this->options['group'], 'tgr_lang' => $this->options['language']), __METHOD__); if ($wgUser->isAllowed('translate-groupreview')) { $selector = new XmlSelect('workflow'); $selector->setAttribute('class', 'mw-translate-workflowselector'); $selector->setDefault($current); $selector->addOption(wfMessage('translate-workflow-state-')->text(), ''); foreach (array_keys($wgTranslateWorkflowStates) as $state) { $stateMessage = wfMessage("translate-workflow-state-{$state}"); $stateText = $stateMessage->isBlank() ? $state : $stateMessage->text(); $selector->addOption($stateText, $state); } $state = $selector->getHTML(); $attributes = array('type' => 'button', 'id' => 'mw-translate-workflowset', 'data-token' => ApiGroupReview::getToken(0, ''), 'data-group' => $this->options['group'], 'data-language' => $this->options['language'], 'style' => 'visibility: hidden;', 'value' => 'Set'); $state .= Html::element('input', $attributes); } elseif (strval($current) !== '') { $state = $current; } else { $state = wfMessage('translate-workflow-state-')->escaped(); } $message = wfMessage('translate-workflowstatus')->rawParams($state); $box = Html::rawElement('div', array('id' => 'mw-sp-translate-workflow'), $message->escaped()); return $box; }
/** * @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'); }