/**
  * @covers Monolog\Handler\ElasticSearchHandler::write
  * @covers Monolog\Handler\ElasticSearchHandler::handleBatch
  * @covers Monolog\Handler\ElasticSearchHandler::bulkSend
  * @covers Monolog\Handler\ElasticSearchHandler::getDefaultFormatter
  */
 public function testHandle()
 {
     // log message
     $msg = array('level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => 'meh', 'context' => array('foo' => 7, 'bar', 'class' => new \stdClass()), 'datetime' => new \DateTime("@0"), 'extra' => array(), 'message' => 'log');
     // format expected result
     $formatter = new ElasticaFormatter($this->options['index'], $this->options['type']);
     $expected = array($formatter->format($msg));
     // setup ES client mock
     $this->client->expects($this->any())->method('addDocuments')->with($expected);
     // perform tests
     $handler = new ElasticSearchHandler($this->client, $this->options);
     $handler->handle($msg);
     $handler->handleBatch(array($msg));
 }
 /**
  * @covers Monolog\Formatter\ElasticaFormatter::__construct
  * @covers Monolog\Formatter\ElasticaFormatter::format
  * @covers Monolog\Formatter\ElasticaFormatter::getDocument
  */
 public function testFormat()
 {
     // test log message
     $msg = array('level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => 'meh', 'context' => array('foo' => 7, 'bar', 'class' => new \stdClass()), 'datetime' => new \DateTime("@0"), 'extra' => array(), 'message' => 'log');
     // expected values
     $expected = $msg;
     $expected['datetime'] = '1970-01-01T00:00:00+0000';
     $expected['context'] = array('class' => '[object] (stdClass: {})', 'foo' => 7, 0 => 'bar');
     // format log message
     $formatter = new ElasticaFormatter('my_index', 'doc_type');
     $doc = $formatter->format($msg);
     $this->assertInstanceOf('Elastica\\Document', $doc);
     // Document parameters
     $params = $doc->getParams();
     $this->assertEquals('my_index', $params['_index']);
     $this->assertEquals('doc_type', $params['_type']);
     // Document data values
     $data = $doc->getData();
     foreach (array_keys($expected) as $key) {
         $this->assertEquals($expected[$key], $data[$key]);
     }
 }