public function testMessage()
 {
     $user = new MockSuperUser();
     $user->setId(123);
     $title = Title::newFromText('MediaWiki:translated/fi');
     $page = WikiPage::factory($title);
     $content = ContentHandler::makeContent('pupuliini', $title);
     $status = $page->doEditContent($content, __METHOD__, 0, false, $user);
     $value = $status->getValue();
     $rev = $value['revision'];
     $revision = $rev->getId();
     $group = MessageGroups::getGroup('test-group');
     $collection = $group->initCollection('fi');
     $collection->loadTranslations();
     /** @var TMessage $translated */
     $translated = $collection['translated'];
     $this->assertInstanceof('TMessage', $translated);
     $this->assertEquals('translated', $translated->key());
     $this->assertEquals('bunny', $translated->definition());
     $this->assertEquals('pupuliini', $translated->translation());
     $this->assertEquals('SuperUser', $translated->getProperty('last-translator-text'));
     $this->assertEquals(123, $translated->getProperty('last-translator-id'));
     $this->assertEquals('translated', $translated->getProperty('status'), 'message status is translated');
     $this->assertEquals($revision, $translated->getProperty('revision'));
     /** @var TMessage $untranslated */
     $untranslated = $collection['untranslated'];
     $this->assertInstanceof('TMessage', $untranslated);
     $this->assertEquals(null, $untranslated->translation(), 'no translation is null');
     $this->assertEquals(false, $untranslated->getProperty('last-translator-text'));
     $this->assertEquals(false, $untranslated->getProperty('last-translator-id'));
     $this->assertEquals('untranslated', $untranslated->getProperty('status'), 'message status is untranslated');
     $this->assertEquals(false, $untranslated->getProperty('revision'));
 }
 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);
     }
 }