1<?php 2 3/* 4 * This file is part of the Monolog package. 5 * 6 * (c) Jordi Boggiano <j.boggiano@seld.be> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Monolog\Formatter; 13 14use Monolog\Logger; 15 16class ElasticaFormatterTest extends \PHPUnit_Framework_TestCase 17{ 18 public function setUp() 19 { 20 if (!class_exists("Elastica\Document")) { 21 $this->markTestSkipped("ruflin/elastica not installed"); 22 } 23 } 24 25 /** 26 * @covers Monolog\Formatter\ElasticaFormatter::__construct 27 * @covers Monolog\Formatter\ElasticaFormatter::format 28 * @covers Monolog\Formatter\ElasticaFormatter::getDocument 29 */ 30 public function testFormat() 31 { 32 // test log message 33 $msg = array( 34 'level' => Logger::ERROR, 35 'level_name' => 'ERROR', 36 'channel' => 'meh', 37 'context' => array('foo' => 7, 'bar', 'class' => new \stdClass), 38 'datetime' => new \DateTime("@0"), 39 'extra' => array(), 40 'message' => 'log', 41 ); 42 43 // expected values 44 $expected = $msg; 45 $expected['datetime'] = '1970-01-01T00:00:00.000000+00:00'; 46 $expected['context'] = array( 47 'class' => '[object] (stdClass: {})', 48 'foo' => 7, 49 0 => 'bar', 50 ); 51 52 // format log message 53 $formatter = new ElasticaFormatter('my_index', 'doc_type'); 54 $doc = $formatter->format($msg); 55 $this->assertInstanceOf('Elastica\Document', $doc); 56 57 // Document parameters 58 $params = $doc->getParams(); 59 $this->assertEquals('my_index', $params['_index']); 60 $this->assertEquals('doc_type', $params['_type']); 61 62 // Document data values 63 $data = $doc->getData(); 64 foreach (array_keys($expected) as $key) { 65 $this->assertEquals($expected[$key], $data[$key]); 66 } 67 } 68 69 /** 70 * @covers Monolog\Formatter\ElasticaFormatter::getIndex 71 * @covers Monolog\Formatter\ElasticaFormatter::getType 72 */ 73 public function testGetters() 74 { 75 $formatter = new ElasticaFormatter('my_index', 'doc_type'); 76 $this->assertEquals('my_index', $formatter->getIndex()); 77 $this->assertEquals('doc_type', $formatter->getType()); 78 } 79} 80