QueryLogEnableCommandTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Developer\Test\Unit\Console\Command;
  7. use Magento\Developer\Console\Command\QueryLogEnableCommand;
  8. use Magento\Framework\App\DeploymentConfig\Writer;
  9. use Magento\Framework\Config\File\ConfigFilePool;
  10. use Magento\Framework\DB\Logger\LoggerProxy;
  11. use Symfony\Component\Console\Tester\CommandTester;
  12. /**
  13. * Class QueryLogEnableCommandTest
  14. *
  15. * Tests dev:query-log:enable command.
  16. * Tests that the correct configuration is passed to the deployment config writer with and without parameters.
  17. */
  18. class QueryLogEnableCommandTest extends \PHPUnit\Framework\TestCase
  19. {
  20. /**
  21. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\DeploymentConfig\Writer
  22. */
  23. private $configWriter;
  24. /**
  25. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Developer\Console\Command\QueryLogEnableCommand
  26. */
  27. private $command;
  28. /**
  29. * {@inheritdoc}
  30. */
  31. public function setUp()
  32. {
  33. $this->configWriter = $this->getMockBuilder(Writer::class)
  34. ->disableOriginalConstructor()
  35. ->getMock();
  36. $this->command = new QueryLogEnableCommand($this->configWriter);
  37. }
  38. /**
  39. * Test execute() without parameters.
  40. */
  41. public function testExecuteWithNoParams()
  42. {
  43. $data = [LoggerProxy::PARAM_ALIAS => LoggerProxy::LOGGER_ALIAS_FILE];
  44. $data[LoggerProxy::PARAM_LOG_ALL] = 1;
  45. $data[LoggerProxy::PARAM_QUERY_TIME] = 0.001;
  46. $data[LoggerProxy::PARAM_CALL_STACK] = 1;
  47. $this->configWriter = $this->getMockBuilder(Writer::class)
  48. ->disableOriginalConstructor()
  49. ->getMock();
  50. $this->configWriter
  51. ->expects($this->any())
  52. ->method('saveConfig')
  53. ->with([ConfigFilePool::APP_ENV => [LoggerProxy::CONF_GROUP_NAME => $data]]);
  54. $commandTester = new CommandTester($this->command);
  55. $commandTester->execute([]);
  56. $this->assertSame(
  57. QueryLogEnableCommand::SUCCESS_MESSAGE . PHP_EOL,
  58. $commandTester->getDisplay()
  59. );
  60. }
  61. /**
  62. * Test execute() with parameters.
  63. */
  64. public function testExecuteWithParams()
  65. {
  66. $data = [LoggerProxy::PARAM_ALIAS => LoggerProxy::LOGGER_ALIAS_FILE];
  67. $data[LoggerProxy::PARAM_LOG_ALL] = 0;
  68. $data[LoggerProxy::PARAM_QUERY_TIME] = '0.05';
  69. $data[LoggerProxy::PARAM_CALL_STACK] = 0;
  70. $this->configWriter = $this->getMockBuilder(Writer::class)
  71. ->disableOriginalConstructor()
  72. ->getMock();
  73. $this->configWriter
  74. ->expects($this->any())
  75. ->method('saveConfig')
  76. ->with([ConfigFilePool::APP_ENV => [LoggerProxy::CONF_GROUP_NAME => $data]]);
  77. $commandTester = new CommandTester($this->command);
  78. $commandTester->execute(
  79. [
  80. '--include-all-queries' => 'false',
  81. '--include-call-stack' => 'false',
  82. '--query-time-threshold' => '0.05',
  83. ]
  84. );
  85. $this->assertSame(
  86. QueryLogEnableCommand::SUCCESS_MESSAGE . PHP_EOL,
  87. $commandTester->getDisplay()
  88. );
  89. }
  90. }