public function doTestSetTermExceptions($params, $expected)
 {
     // -- set any defaults ------------------------------------
     $params['action'] = self::$testAction;
     if (!array_key_exists('id', $params) && !array_key_exists('site', $params) && !array_key_exists('title', $params)) {
         $params['id'] = EntityTestHelper::getId('Empty');
     }
     $this->doTestQueryExceptions($params, $expected['exception']);
 }
 /**
  * @dataProvider provideData
  */
 public function testSetAliases($params, $expected)
 {
     // -- set any defaults ------------------------------------
     $params['action'] = self::$testAction;
     if (!array_key_exists('id', $params)) {
         $params['id'] = EntityTestHelper::getId('Empty');
     }
     if (!array_key_exists('value', $expected)) {
         $expected['value'] = array();
     }
     // -- do the request --------------------------------------------------
     list($result, , ) = $this->doApiRequestWithToken($params);
     // -- check the result ------------------------------------------------
     $this->assertArrayHasKey('success', $result, "Missing 'success' marker in response.");
     $this->assertResultHasEntityType($result);
     $this->assertArrayHasKey('entity', $result, "Missing 'entity' section in response.");
     if (array_key_exists($params['language'], $expected['value'])) {
         $resAliases = $this->flattenArray($result['entity']['aliases'], 'language', 'value', true);
         $this->assertArrayHasKey($params['language'], $resAliases);
         $this->assertArrayEquals($expected['value'][$params['language']], $resAliases[$params['language']]);
     }
     // -- check any warnings ----------------------------------------------
     if (array_key_exists('warning', $expected)) {
         $this->assertArrayHasKey('warnings', $result, "Missing 'warnings' section in response.");
         $this->assertEquals($expected['warning'], $result['warnings']['messages']['0']['name']);
         $this->assertArrayHasKey('html', $result['warnings']['messages']);
     }
     // -- check item in database -------------------------------------------
     $dbEntity = $this->loadEntity(EntityTestHelper::getId('Empty'));
     $this->assertArrayHasKey('aliases', $dbEntity);
     $dbAliases = $this->flattenArray($dbEntity['aliases'], 'language', 'value', true);
     foreach ($expected['value'] as $valueLanguage => $value) {
         $this->assertArrayEquals($value, $dbAliases[$valueLanguage]);
     }
     // -- check the edit summary --------------------------------------------
     if (empty($expected['edit-no-change'])) {
         $this->assertRevisionSummary(array(self::$testAction, $params['language']), $result['entity']['lastrevid']);
         if (array_key_exists('summary', $params)) {
             $this->assertRevisionSummary('/' . $params['summary'] . '/', $result['entity']['lastrevid']);
         }
     }
 }
 public function testSiteLinkFilter()
 {
     $id = EntityTestHelper::getId('Oslo');
     list($res, , ) = $this->doApiRequest(array('action' => 'wbgetentities', 'sitefilter' => 'dewiki|enwiki', 'format' => 'json', 'ids' => $id));
     $expectedSiteLinks = array('dewiki' => array('site' => 'dewiki', 'title' => 'Oslo', 'badges' => array()), 'enwiki' => array('site' => 'enwiki', 'title' => 'Oslo', 'badges' => array()));
     $this->assertEquals($expectedSiteLinks, $res['entities'][$id]['sitelinks']);
 }