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;
 }
Example #3
0
 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');
 }