예제 #1
0
 /**
  * @covers ApiErrorFormatter
  * @dataProvider provideErrorFormatter
  */
 public function testErrorFormatter($format, $lang, $useDB, $expect1, $expect2, $expect3)
 {
     $result = new ApiResult(8388608);
     $formatter = new ApiErrorFormatter($result, Language::factory($lang), $format, $useDB);
     // Add default type
     $expect1[ApiResult::META_TYPE] = 'assoc';
     $expect2[ApiResult::META_TYPE] = 'assoc';
     $expect3[ApiResult::META_TYPE] = 'assoc';
     $formatter->addWarning('string', 'mainpage');
     $formatter->addError('err', 'mainpage');
     $this->assertSame($expect1, $result->getResultData(), 'Simple test');
     $result->reset();
     $formatter->addWarning('foo', 'mainpage');
     $formatter->addWarning('foo', 'mainpage');
     $formatter->addWarning('foo', array('parentheses', 'foobar'));
     $msg1 = wfMessage('mainpage');
     $formatter->addWarning('message', $msg1);
     $msg2 = new ApiMessage('mainpage', 'overriddenCode', array('overriddenData' => true));
     $formatter->addWarning('messageWithData', $msg2);
     $formatter->addError('errWithData', $msg2);
     $this->assertSame($expect2, $result->getResultData(), 'Complex test');
     $result->reset();
     $status = Status::newGood();
     $status->warning('mainpage');
     $status->warning('parentheses', 'foobar');
     $status->warning($msg1);
     $status->warning($msg2);
     $status->error('mainpage');
     $status->error('parentheses', 'foobar');
     $formatter->addMessagesFromStatus('status', $status);
     $this->assertSame($expect3, $result->getResultData(), 'Status test');
     $this->assertSame($expect3['errors']['status'], $formatter->arrayFromStatus($status, 'error'), 'arrayFromStatus test for error');
     $this->assertSame($expect3['warnings']['status'], $formatter->arrayFromStatus($status, 'warning'), 'arrayFromStatus test for warning');
 }
예제 #2
0
 /**
  * Format messages from a Status as an array
  * @param Status $status
  * @param string $type 'warning' or 'error'
  * @param string|null $format
  * @return array
  */
 public function arrayFromStatus(Status $status, $type = 'error', $format = null)
 {
     if ($status->isGood() || !$status->errors) {
         return [];
     }
     $result = new ApiResult(1000000.0);
     $formatter = new ApiErrorFormatter($result, $this->lang, $format ?: $this->format, $this->useDB);
     $formatter->addMessagesFromStatus('dummy', $status, [$type]);
     switch ($type) {
         case 'error':
             return (array) $result->getResultData(['errors', 'dummy']);
         case 'warning':
             return (array) $result->getResultData(['warnings', 'dummy']);
     }
 }