DumpDataCollectorTest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\HttpKernel\Tests\DataCollector;
  11. use Symfony\Component\HttpKernel\DataCollector\DumpDataCollector;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\VarDumper\Cloner\Data;
  15. /**
  16. * @author Nicolas Grekas <p@tchwork.com>
  17. */
  18. class DumpDataCollectorTest extends \PHPUnit_Framework_TestCase
  19. {
  20. public function testDump()
  21. {
  22. $data = new Data(array(array(123)));
  23. $collector = new DumpDataCollector();
  24. $this->assertSame('dump', $collector->getName());
  25. $collector->dump($data);
  26. $line = __LINE__ - 1;
  27. $this->assertSame(1, $collector->getDumpsCount());
  28. $dump = $collector->getDumps('html');
  29. $this->assertTrue(isset($dump[0]['data']));
  30. $dump[0]['data'] = preg_replace('/^.*?<pre/', '<pre', $dump[0]['data']);
  31. $dump[0]['data'] = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump[0]['data']);
  32. $xDump = array(
  33. array(
  34. 'data' => "<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=sf-dump-num>123</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n",
  35. 'name' => 'DumpDataCollectorTest.php',
  36. 'file' => __FILE__,
  37. 'line' => $line,
  38. 'fileExcerpt' => false,
  39. ),
  40. );
  41. $this->assertEquals($xDump, $dump);
  42. $this->assertStringMatchesFormat(
  43. 'a:1:{i:0;a:5:{s:4:"data";O:39:"Symfony\Component\VarDumper\Cloner\Data":4:{s:45:"Symfony\Component\VarDumper\Cloner\Datadata";a:1:{i:0;a:1:{i:0;i:123;}}s:49:"Symfony\Component\VarDumper\Cloner\DatamaxDepth";i:%i;s:57:"Symfony\Component\VarDumper\Cloner\DatamaxItemsPerDepth";i:%i;s:54:"Symfony\Component\VarDumper\Cloner\DatauseRefHandles";i:%i;}s:4:"name";s:25:"DumpDataCollectorTest.php";s:4:"file";s:%a',
  44. str_replace("\0", '', $collector->serialize())
  45. );
  46. $this->assertSame(0, $collector->getDumpsCount());
  47. $this->assertSame('a:0:{}', $collector->serialize());
  48. }
  49. public function testCollectDefault()
  50. {
  51. $data = new Data(array(array(123)));
  52. $collector = new DumpDataCollector();
  53. $collector->dump($data);
  54. $line = __LINE__ - 1;
  55. ob_start();
  56. $collector->collect(new Request(), new Response());
  57. $output = ob_get_clean();
  58. $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n123\n", $output);
  59. $this->assertSame(1, $collector->getDumpsCount());
  60. $collector->serialize();
  61. }
  62. public function testCollectHtml()
  63. {
  64. $data = new Data(array(array(123)));
  65. $collector = new DumpDataCollector(null, 'test://%f:%l');
  66. $collector->dump($data);
  67. $line = __LINE__ - 1;
  68. $file = __FILE__;
  69. $xOutput = <<<EOTXT
  70. <pre class=sf-dump id=sf-dump data-indent-pad=" "><a href="test://{$file}:{$line}" title="{$file}"><span class=sf-dump-meta>DumpDataCollectorTest.php</span></a> on line <span class=sf-dump-meta>{$line}</span>:
  71. <span class=sf-dump-num>123</span>
  72. </pre>
  73. EOTXT;
  74. ob_start();
  75. $response = new Response();
  76. $response->headers->set('Content-Type', 'text/html');
  77. $collector->collect(new Request(), $response);
  78. $output = ob_get_clean();
  79. $output = preg_replace('#<(script|style).*?</\1>#s', '', $output);
  80. $output = preg_replace('/sf-dump-\d+/', 'sf-dump', $output);
  81. $this->assertSame($xOutput, $output);
  82. $this->assertSame(1, $collector->getDumpsCount());
  83. $collector->serialize();
  84. }
  85. public function testFlush()
  86. {
  87. $data = new Data(array(array(456)));
  88. $collector = new DumpDataCollector();
  89. $collector->dump($data);
  90. $line = __LINE__ - 1;
  91. ob_start();
  92. $collector->__destruct();
  93. $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", ob_get_clean());
  94. }
  95. }