Skip to content

Commit

Permalink
refactor tests
Browse files Browse the repository at this point in the history
  • Loading branch information
VasekPurchart committed Oct 21, 2024
2 parents b23776b + 0f812a4 commit 592a146
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 125 deletions.
25 changes: 13 additions & 12 deletions tests/BlueScreen/ConsoleBlueScreenExceptionListenerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace VasekPurchart\TracyBlueScreenBundle\BlueScreen;

use PHPUnit\Framework\Assert;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Event\ConsoleErrorEvent;
use Symfony\Component\Console\Input\InputInterface;
Expand All @@ -26,23 +27,23 @@ public function testLogTracy(): void
$input = $this->createMock(InputInterface::class);
$output = $this->createMock(OutputInterface::class);
$output
->expects($this->once())
->expects(self::once())
->method('writeln')
->with($this->stringContains('saved in file'));
->with(Assert::stringContains('saved in file'));
$exception = new \Exception('Foobar!');

$event = new ConsoleErrorEvent($input, $output, $exception, $command);

$logger = $this->createMock(TracyLogger::class);
$logger
->expects($this->once())
->expects(self::once())
->method('getExceptionFile')
->with($exception)
->will($this->returnValue($file));
->will(self::returnValue($file));

$blueScreen = $this->createMock(BlueScreen::class);
$blueScreen
->expects($this->once())
->expects(self::once())
->method('renderToFile')
->with($exception, $file);

Expand All @@ -65,29 +66,29 @@ public function testUsesErrorOutputIfPossible(): void
$input = $this->createMock(InputInterface::class);
$errorOutput = $this->createMock(OutputInterface::class);
$errorOutput
->expects($this->once())
->expects(self::once())
->method('writeln')
->with($this->stringContains('saved in file'));
->with(Assert::stringContains('saved in file'));
$output = $this->createMock(ConsoleOutputInterface::class);
$output
->expects($this->once())
->expects(self::once())
->method('getErrorOutput')
->will($this->returnValue($errorOutput));
->will(self::returnValue($errorOutput));

$exception = new \Exception('Foobar!');

$event = new ConsoleErrorEvent($input, $output, $exception, $command);

$logger = $this->createMock(TracyLogger::class);
$logger
->expects($this->once())
->expects(self::once())
->method('getExceptionFile')
->with($exception)
->will($this->returnValue($file));
->will(self::returnValue($file));

$blueScreen = $this->createMock(BlueScreen::class);
$blueScreen
->expects($this->once())
->expects(self::once())
->method('renderToFile')
->with($exception, $file);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public function testRenderTracy(): void

$blueScreen = $this->createMock(BlueScreen::class);
$blueScreen
->expects($this->once())
->expects(self::once())
->method('render')
->with($exception);

Expand Down
137 changes: 81 additions & 56 deletions tests/DependencyInjection/TracyBlueScreenExtensionConsoleTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace VasekPurchart\TracyBlueScreenBundle\DependencyInjection;

use Generator;
use Symfony\Bundle\TwigBundle\DependencyInjection\TwigExtension;
use VasekPurchart\TracyBlueScreenBundle\BlueScreen\ConsoleBlueScreenErrorListener;

Expand Down Expand Up @@ -38,9 +39,31 @@ protected function getContainerExtensions(): array
];
}

public function testEnabledByDefault(): void
public function enabledDataProvider(): Generator
{
$this->loadExtensions();
yield 'enabled by default' => [
'configuration' => [],
];

yield 'enabled by configuration' => [
'configuration' => [
'tracy_blue_screen' => [
'console' => [
'enabled' => true,
],
],
],
];
}

/**
* @dataProvider enabledDataProvider
*
* @param mixed[][] $configuration
*/
public function testEnabled(array $configuration): void
{
$this->loadExtensions($configuration);

$this->assertContainerBuilderHasService('vasek_purchart.tracy_blue_screen.blue_screen.console_blue_screen_error_listener', ConsoleBlueScreenErrorListener::class);
$this->assertContainerBuilderHasServiceDefinitionWithTag('vasek_purchart.tracy_blue_screen.blue_screen.console_blue_screen_error_listener', 'kernel.event_listener', [
Expand All @@ -62,74 +85,76 @@ public function testDisabled(): void
$this->assertContainerBuilderNotHasService('vasek_purchart.tracy_blue_screen.blue_screen.console_blue_screen_error_listener');
}

public function testEnabled(): void
/**
* @return mixed[][]|\Generator
*/
public function configureContainerParameterDataProvider(): Generator
{
$this->loadExtensions([
'tracy_blue_screen' => [
'console' => [
'enabled' => true,
yield 'default logs dir is kernel logs dir' => [
'configuration' => [],
'parameterName' => TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_LOG_DIRECTORY,
'expectedParameterValue' => __DIR__ . '/tests-logs-dir',
];

yield 'custom logs dir' => [
'configuration' => [
'tracy_blue_screen' => [
'console' => [
'log_directory' => __DIR__ . '/foobar',
],
],
],
]);

$this->assertContainerBuilderHasService('vasek_purchart.tracy_blue_screen.blue_screen.console_blue_screen_error_listener', ConsoleBlueScreenErrorListener::class);
$this->assertContainerBuilderHasServiceDefinitionWithTag('vasek_purchart.tracy_blue_screen.blue_screen.console_blue_screen_error_listener', 'kernel.event_listener', [
'event' => 'console.error',
'priority' => '%' . TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_LISTENER_PRIORITY . '%',
]);
}

public function testDefaultLogsDirIsKernelLogsDir(): void
{
$this->loadExtensions();
'parameterName' => TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_LOG_DIRECTORY,
'expectedParameterValue' => __DIR__ . '/foobar',
];

$this->assertContainerBuilderHasParameter(TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_LOG_DIRECTORY, __DIR__ . '/tests-logs-dir');
}
yield 'default browser is null' => [
'configuration' => [],
'parameterName' => TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_BROWSER,
'expectedParameterValue' => null,
];

public function testCustomLogsDir(): void
{
$this->loadExtensions([
'tracy_blue_screen' => [
'console' => [
'log_directory' => __DIR__ . '/foobar',
yield 'custom browser' => [
'configuration' => [
'tracy_blue_screen' => [
'console' => [
'browser' => 'google-chrome',
],
],
],
]);

$this->assertContainerBuilderHasParameter(TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_LOG_DIRECTORY, __DIR__ . '/foobar');
}

public function testDefaultBrowserIsNull(): void
{
$this->loadExtensions();

$this->assertContainerBuilderHasParameter(TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_BROWSER, null);
}
'parameterName' => TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_BROWSER,
'expectedParameterValue' => 'google-chrome',
];

public function testCustomBrowser(): void
{
$this->loadExtensions([
'tracy_blue_screen' => [
'console' => [
'browser' => 'google-chrome',
yield 'listener priority' => [
'configuration' => [
'tracy_blue_screen' => [
'console' => [
'listener_priority' => 123,
],
],
],
]);

$this->assertContainerBuilderHasParameter(TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_BROWSER, 'google-chrome');
'parameterName' => TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_LISTENER_PRIORITY,
'expectedParameterValue' => 123,
];
}

public function testConfigureListenerPriority(): void
/**
* @dataProvider configureContainerParameterDataProvider
*
* @param mixed[][] $configuration
* @param string $parameterName
* @param mixed $expectedParameterValue
*/
public function testConfigureContainerParameter(
array $configuration,
string $parameterName,
$expectedParameterValue
): void
{
$this->loadExtensions([
'tracy_blue_screen' => [
'console' => [
'listener_priority' => 123,
],
],
]);
$this->loadExtensions($configuration);

$this->assertContainerBuilderHasParameter(TracyBlueScreenExtension::CONTAINER_PARAMETER_CONSOLE_LISTENER_PRIORITY, 123);
$this->assertContainerBuilderHasParameter($parameterName, $expectedParameterValue);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace VasekPurchart\TracyBlueScreenBundle\DependencyInjection;

use Generator;
use Symfony\Bundle\TwigBundle\DependencyInjection\TwigExtension;
use VasekPurchart\TracyBlueScreenBundle\BlueScreen\ControllerBlueScreenExceptionListener;

Expand Down Expand Up @@ -38,9 +39,31 @@ protected function getContainerExtensions(): array
];
}

public function testEnabledByDefault(): void
public function enabledDataProvider(): Generator
{
$this->loadExtensions();
yield 'enabled by default' => [
'configuration' => [],
];

yield 'enabled by configuration' => [
'configuration' => [
'tracy_blue_screen' => [
'controller' => [
'enabled' => true,
],
],
],
];
}

/**
* @dataProvider enabledDataProvider
*
* @param mixed[][] $configuration
*/
public function testEnabled(array $configuration): void
{
$this->loadExtensions($configuration);

$this->assertContainerBuilderHasService('vasek_purchart.tracy_blue_screen.blue_screen.controller_blue_screen_exception_listener', ControllerBlueScreenExceptionListener::class);
$this->assertContainerBuilderHasServiceDefinitionWithTag('vasek_purchart.tracy_blue_screen.blue_screen.controller_blue_screen_exception_listener', 'kernel.event_listener', [
Expand All @@ -62,23 +85,6 @@ public function testDisabled(): void
$this->assertContainerBuilderNotHasService('vasek_purchart.tracy_blue_screen.blue_screen.controller_blue_screen_exception_listener');
}

public function testEnabled(): void
{
$this->loadExtensions([
'tracy_blue_screen' => [
'controller' => [
'enabled' => true,
],
],
]);

$this->assertContainerBuilderHasService('vasek_purchart.tracy_blue_screen.blue_screen.controller_blue_screen_exception_listener', ControllerBlueScreenExceptionListener::class);
$this->assertContainerBuilderHasServiceDefinitionWithTag('vasek_purchart.tracy_blue_screen.blue_screen.controller_blue_screen_exception_listener', 'kernel.event_listener', [
'event' => 'kernel.exception',
'priority' => '%' . TracyBlueScreenExtension::CONTAINER_PARAMETER_CONTROLLER_LISTENER_PRIORITY . '%',
]);
}

public function testConfigureListenerPriority(): void
{
$this->loadExtensions([
Expand Down
Loading

0 comments on commit 592a146

Please sign in to comment.