diff --git a/src/Binder/LogOutputBinder.php b/src/Binder/LogOutputBinder.php index 154d213..85cf6b2 100644 --- a/src/Binder/LogOutputBinder.php +++ b/src/Binder/LogOutputBinder.php @@ -5,7 +5,8 @@ namespace DevThis\ConsoleLogg\Binder; use DevThis\ConsoleLogg\Interfaces\Binder\LogOutputBindedInterface; -use DevThis\ConsoleLogg\Interfaces\Factories\FilterableConsoleLoggerFactoryInterface; +use DevThis\ConsoleLogg\Interfaces\Console\ConsoleLoggerInterface; +use DevThis\ConsoleLogg\Interfaces\Factories\ConsoleLoggerFactoryInterface; use Illuminate\Contracts\Config\Repository; use Illuminate\Log\LogManager; use Symfony\Component\Console\Output\OutputInterface; @@ -18,7 +19,7 @@ class LogOutputBinder implements LogOutputBindedInterface { /** - * @var FilterableConsoleLoggerFactoryInterface + * @var ConsoleLoggerFactoryInterface */ private $consoleLoggerFactory; @@ -32,7 +33,7 @@ class LogOutputBinder implements LogOutputBindedInterface */ private $isFiltered; - public function __construct(FilterableConsoleLoggerFactoryInterface $consoleLoggerFactory, Repository $config) + public function __construct(ConsoleLoggerFactoryInterface $consoleLoggerFactory, Repository $config) { $this->isFiltered = $config->get('console-logg.filtered') === true; $this->consoleLoggerFactory = $consoleLoggerFactory; @@ -43,7 +44,7 @@ public function attach(OutputInterface $output, LogManager $logManager): void $this->defaultDriver = $logManager->getDefaultDriver(); $logManager->setDefaultDriver('console-logg'); - $consoleLogger = $this->consoleLoggerFactory->create($output, $this->isFiltered); + $consoleLogger = $this->createConsoleLogger($output); $logManager->extend( 'console-logg', @@ -58,4 +59,13 @@ public function detach(LogManager $logManager): void $logManager->forgetChannel('console-logg'); $logManager->setDefaultDriver($this->defaultDriver); } + + private function createConsoleLogger(OutputInterface $output): ConsoleLoggerInterface + { + if ($this->isFiltered === true) { + return $this->consoleLoggerFactory->createFilterable($output); + } + + return $this->consoleLoggerFactory->create($output); + } } diff --git a/src/Console/FilterableConsoleLogger.php b/src/Console/ConsoleLogger.php similarity index 65% rename from src/Console/FilterableConsoleLogger.php rename to src/Console/ConsoleLogger.php index 5f8548c..d83a223 100644 --- a/src/Console/FilterableConsoleLogger.php +++ b/src/Console/ConsoleLogger.php @@ -4,10 +4,10 @@ namespace DevThis\ConsoleLogg\Console; -use DevThis\ConsoleLogg\Interfaces\Console\FilterableConsoleLoggerInterface; -use Symfony\Component\Console\Logger\ConsoleLogger; +use DevThis\ConsoleLogg\Interfaces\Console\ConsoleLoggerInterface; +use Symfony\Component\Console\Logger\ConsoleLogger as SymfonyConsoleLogger; -class FilterableConsoleLogger extends ConsoleLogger implements FilterableConsoleLoggerInterface +class ConsoleLogger extends SymfonyConsoleLogger implements ConsoleLoggerInterface { /** * @var bool @@ -31,7 +31,7 @@ public function log($level, $message, array $context = []): void /** * @inheritDoc */ - public function setFiltering(bool $isFiltered): FilterableConsoleLoggerInterface + public function setFiltering(bool $isFiltered): ConsoleLoggerInterface { $this->filtering = $isFiltered; diff --git a/src/Factories/ConsoleLoggerFactory.php b/src/Factories/ConsoleLoggerFactory.php new file mode 100644 index 0000000..4cc06d0 --- /dev/null +++ b/src/Factories/ConsoleLoggerFactory.php @@ -0,0 +1,24 @@ +setFiltering(true); + } +} diff --git a/src/Factories/FilterableConsoleLoggerFactory.php b/src/Factories/FilterableConsoleLoggerFactory.php deleted file mode 100644 index c92a733..0000000 --- a/src/Factories/FilterableConsoleLoggerFactory.php +++ /dev/null @@ -1,19 +0,0 @@ -setFiltering($isFiltered ?? false); - } -} diff --git a/src/Interfaces/Console/FilterableConsoleLoggerInterface.php b/src/Interfaces/Console/ConsoleLoggerInterface.php similarity index 54% rename from src/Interfaces/Console/FilterableConsoleLoggerInterface.php rename to src/Interfaces/Console/ConsoleLoggerInterface.php index ad21b07..c3006f6 100644 --- a/src/Interfaces/Console/FilterableConsoleLoggerInterface.php +++ b/src/Interfaces/Console/ConsoleLoggerInterface.php @@ -6,7 +6,7 @@ use Psr\Log\LoggerInterface; -interface FilterableConsoleLoggerInterface extends LoggerInterface +interface ConsoleLoggerInterface extends LoggerInterface { public function isFiltered(): bool; @@ -14,7 +14,7 @@ public function isFiltered(): bool; * Sets the state for whether log filtering (by context) is enabled * 'logg' => true should * - * @return \DevThis\ConsoleLogg\Interfaces\Console\FilterableConsoleLoggerInterface + * @return \DevThis\ConsoleLogg\Interfaces\Console\ConsoleLoggerInterface */ - public function setFiltering(bool $isFiltered): FilterableConsoleLoggerInterface; + public function setFiltering(bool $isFiltered): ConsoleLoggerInterface; } diff --git a/src/Interfaces/Factories/ConsoleLoggerFactoryInterface.php b/src/Interfaces/Factories/ConsoleLoggerFactoryInterface.php new file mode 100644 index 0000000..6653b36 --- /dev/null +++ b/src/Interfaces/Factories/ConsoleLoggerFactoryInterface.php @@ -0,0 +1,15 @@ +app->singleton(LogOutputBindedInterface::class, LogOutputBinder::class); $this->app->singleton(LogManagerResolverListenerInterface::class, LogManagerResolverListener::class); - $this->app->singleton(FilterableConsoleLoggerFactoryInterface::class, FilterableConsoleLoggerFactory::class); + $this->app->singleton(ConsoleLoggerFactoryInterface::class, ConsoleLoggerFactory::class); // sorry for this hack :( $this->app['config']['logging.channels.console-logg'] = ['driver' => 'console-logg']; diff --git a/tests/Doubles/Spies/Factories/ConsoleLoggerFactorySpy.php b/tests/Doubles/Spies/Factories/ConsoleLoggerFactorySpy.php new file mode 100644 index 0000000..3dadbe3 --- /dev/null +++ b/tests/Doubles/Spies/Factories/ConsoleLoggerFactorySpy.php @@ -0,0 +1,51 @@ +lastOutput = $output; + + return $this->lastCreated = parent::create($output); + } + + public function createFilterable(OutputInterface $output): ConsoleLoggerInterface + { + $this->lastOutput = $output; + + return $this->lastCreated = parent::createFilterable($output); + } + + public function getLastCreated(): ?ConsoleLoggerInterface + { + return $this->lastCreated; + } + + public function getLastIsFilteredValue(): ?bool + { + return $this->lastIsFiltered; + } + + public function getLastOutput(): OutputInterface + { + return $this->lastOutput; + } +} diff --git a/tests/Doubles/Spies/Factories/FilterableConsoleLoggerFactorySpy.php b/tests/Doubles/Spies/Factories/FilterableConsoleLoggerFactorySpy.php deleted file mode 100644 index 8ec836a..0000000 --- a/tests/Doubles/Spies/Factories/FilterableConsoleLoggerFactorySpy.php +++ /dev/null @@ -1,50 +0,0 @@ -lastIsFiltered = $isFiltered; - $this->lastOutput = $output; - - return $this->lastCreated = parent::create($output, $isFiltered); - } - - public function getLastCreated(): ?FilterableConsoleLoggerInterface - { - return $this->lastCreated; - } - - public function getLastIsFilteredValue(): ?bool - { - return $this->lastIsFiltered; - } - - public function getLastOutput(): OutputInterface - { - return $this->lastOutput; - } -} diff --git a/tests/Doubles/Stubs/vendor/Illuminate/RepositoryFilterableStub.php b/tests/Doubles/Stubs/vendor/Illuminate/RepositoryFilterableStub.php new file mode 100644 index 0000000..8f0a0db --- /dev/null +++ b/tests/Doubles/Stubs/vendor/Illuminate/RepositoryFilterableStub.php @@ -0,0 +1,35 @@ + ['logging.default' => ['driver' => 'the-default']]]); @@ -36,7 +38,7 @@ public function testAttachSetsDefaultDriver(): void public function testAttachedConsoleLoggerRespectsFilteredOption(): void { $config = new RepositoryStub(); - $filterableConsoleLoggerFactory = new FilterableConsoleLoggerFactorySpy(); + $filterableConsoleLoggerFactory = new ConsoleLoggerFactorySpy(); $logOutputBinder = new LogOutputBinder($filterableConsoleLoggerFactory, $config); $output = new NullOutput(); $defaultDriver = ['driver' => 'the-default']; @@ -51,10 +53,34 @@ public function testAttachedConsoleLoggerRespectsFilteredOption(): void ); } + public function testCreatingFilterableConsoleLogger(): void + { + $config = new RepositoryFilterableStub(); + $filterableConsoleLoggerFactory = new ConsoleLoggerFactorySpy(); + $logOutputBinder = new LogOutputBinder($filterableConsoleLoggerFactory, $config); + $output = new NullOutput(); + $app = new ApplicationFake( + [ + 'config' => [ + 'logging.default' => ['driver' => 'the-default'], + 'logging.channels.console-logg' => ['driver' => 'console-logg'] + ] + ] + ); + $logManager = new LogManager($app); + $logOutputBinder->attach($output, $logManager); + + /** @var ConsoleLoggerInterface|mixed $driver */ + $driver = $logManager->driver()->getLogger(); + + self::assertInstanceOf(ConsoleLoggerInterface::class, $driver); + self::assertTrue($driver->isFiltered()); + } + public function testDefaultDriverAfterDetachIsNotConsoleLogg(): void { $config = new RepositoryStub(); - $filterableConsoleLoggerFactory = new FilterableConsoleLoggerFactorySpy(); + $filterableConsoleLoggerFactory = new ConsoleLoggerFactorySpy(); $logOutputBinder = new LogOutputBinder($filterableConsoleLoggerFactory, $config); $output = new NullOutput(); $defaultDriver = ['driver' => 'the-default']; diff --git a/tests/Unit/Console/FilterableConsoleLoggerTest.php b/tests/Unit/Console/FilterableConsoleLoggerTest.php index 7296c58..ca10db5 100644 --- a/tests/Unit/Console/FilterableConsoleLoggerTest.php +++ b/tests/Unit/Console/FilterableConsoleLoggerTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit\Console; -use DevThis\ConsoleLogg\Console\FilterableConsoleLogger; +use DevThis\ConsoleLogg\Console\ConsoleLogger; use PHPUnit\Framework\TestCase; use Psr\Log\LogLevel; use Symfony\Component\Console\Output\BufferedOutput; @@ -12,7 +12,7 @@ use Symfony\Component\Console\Output\OutputInterface; /** - * @covers \DevThis\ConsoleLogg\Console\FilterableConsoleLogger + * @covers \DevThis\ConsoleLogg\Console\ConsoleLogger */ class FilterableConsoleLoggerTest extends TestCase { @@ -93,7 +93,7 @@ public function getInputsForFilteredOptionsTest(): iterable public function testDefaultIsFilteredIsFalse(): void { $output = new BufferedOutput(); - $filterableConsoleLogger = new FilterableConsoleLogger( + $filterableConsoleLogger = new ConsoleLogger( $output, [LogLevel::NOTICE => OutputInterface::VERBOSITY_NORMAL,] ); @@ -109,7 +109,7 @@ public function testDefaultIsFilteredIsFalse(): void public function testFilteringRespectsBeingEnabled(): void { $output = new NullOutput(); - $filterableConsoleLogger = new FilterableConsoleLogger($output); + $filterableConsoleLogger = new ConsoleLogger($output); $filterableConsoleLogger->setFiltering(true); self::assertTrue($filterableConsoleLogger->isFiltered()); @@ -118,7 +118,7 @@ public function testFilteringRespectsBeingEnabled(): void public function testIsFilteredIsFalseByDefault(): void { $output = new NullOutput(); - $filterableConsoleLogger = new FilterableConsoleLogger($output); + $filterableConsoleLogger = new ConsoleLogger($output); self::assertFalse($filterableConsoleLogger->isFiltered()); } @@ -126,7 +126,7 @@ public function testIsFilteredIsFalseByDefault(): void public function testIsFilteredIsTruthfulWhenFalse(): void { $output = new NullOutput(); - $filterableConsoleLogger = new FilterableConsoleLogger($output); + $filterableConsoleLogger = new ConsoleLogger($output); $filterableConsoleLogger->setFiltering(false); self::assertFalse($filterableConsoleLogger->isFiltered()); @@ -138,7 +138,7 @@ public function testIsFilteredIsTruthfulWhenFalse(): void public function testLogRespectsFilteredOption(array $logs, bool $isFiltered, string $expectation): void { $output = new BufferedOutput(); - $filterableConsoleLogger = (new FilterableConsoleLogger( + $filterableConsoleLogger = (new ConsoleLogger( $output, [ LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL, diff --git a/tests/Unit/Factories/FilterableConsoleLoggerFactoryTest.php b/tests/Unit/Factories/FilterableConsoleLoggerFactoryTest.php index c785db3..e74b517 100644 --- a/tests/Unit/Factories/FilterableConsoleLoggerFactoryTest.php +++ b/tests/Unit/Factories/FilterableConsoleLoggerFactoryTest.php @@ -4,13 +4,12 @@ namespace Tests\Unit\Factories; -use DevThis\ConsoleLogg\Console\FilterableConsoleLogger; use PHPUnit\Framework\TestCase; use Symfony\Component\Console\Output\NullOutput; -use Tests\Doubles\Spies\Factories\FilterableConsoleLoggerFactorySpy; +use Tests\Doubles\Spies\Factories\ConsoleLoggerFactorySpy; /** - * @covers \DevThis\ConsoleLogg\Factories\FilterableConsoleLoggerFactory + * @covers \DevThis\ConsoleLogg\Factories\ConsoleLoggerFactory */ class FilterableConsoleLoggerFactoryTest extends TestCase { @@ -25,11 +24,6 @@ public function getInputsForTestingArguments(): iterable 'isFiltered' => false, 'filteredExpectation' => false ]; - - yield 'is filtered provided null' => [ - 'isFiltered' => null, - 'filteredExpectation' => null - ]; } /** @@ -40,16 +34,13 @@ public function getInputsForTestingArguments(): iterable * * @dataProvider getInputsForTestingArguments */ - public function testCreateRespectsArguments(?bool $isFiltered, ?bool $filteredExpectation): void + public function testCreateRespectsArguments(bool $isFiltered, bool $filteredExpectation): void { - $factory = new FilterableConsoleLoggerFactorySpy(); + $factory = new ConsoleLoggerFactorySpy(); $output = new NullOutput(); - $consoleLogger = $factory->create($output, $isFiltered); - // feels bad using a spy, but it's impossible to gauge this without - self::assertSame($output, $factory->getLastOutput()); - self::assertSame($filteredExpectation, $factory->getLastIsFilteredValue()); - // weak assertion but still valid because we only know it returns the interface, not concrete - self::assertInstanceOf(FilterableConsoleLogger::class, $consoleLogger); + $consoleLogger = $isFiltered === true ? $factory->createFilterable($output) : $factory->create($output); + + self::assertSame($filteredExpectation, $consoleLogger->isFiltered()); } } diff --git a/tests/Unit/Listeners/LogManagerResolverListenerTest.php b/tests/Unit/Listeners/LogManagerResolverListenerTest.php index fabad34..08629f9 100644 --- a/tests/Unit/Listeners/LogManagerResolverListenerTest.php +++ b/tests/Unit/Listeners/LogManagerResolverListenerTest.php @@ -16,7 +16,7 @@ use Tests\Doubles\Fakes\vendor\Illuminate\ApplicationFake; use Tests\Doubles\Fakes\vendor\Illuminate\EventDispatcherFake; use Tests\Doubles\Spies\Binder\LogOutputBinderFake; -use Tests\Doubles\Spies\Factories\FilterableConsoleLoggerFactorySpy; +use Tests\Doubles\Spies\Factories\ConsoleLoggerFactorySpy; use Tests\Doubles\Stubs\vendor\Illuminate\LogManagerStub; use Tests\Doubles\Stubs\vendor\Illuminate\RepositoryStub; @@ -69,7 +69,7 @@ public function testCliServerSkips(): void public function testEventDispatcherListensTo(string $eventClass): void { $eventDispatcher = new EventDispatcherFake(); - $filterableConsoleFactory = new FilterableConsoleLoggerFactorySpy(); + $filterableConsoleFactory = new ConsoleLoggerFactorySpy(); $config = new RepositoryStub(); $logOutputBinder = new LogOutputBinder($filterableConsoleFactory, $config); $logManagerResolverListener = new LogManagerResolverListener($eventDispatcher, $logOutputBinder); diff --git a/tests/Unit/Providers/ConsoleLoggServiceProviderTest.php b/tests/Unit/Providers/ConsoleLoggServiceProviderTest.php index 6af50c3..a4a198f 100644 --- a/tests/Unit/Providers/ConsoleLoggServiceProviderTest.php +++ b/tests/Unit/Providers/ConsoleLoggServiceProviderTest.php @@ -5,9 +5,9 @@ namespace Tests\Unit\Providers; use DevThis\ConsoleLogg\Binder\LogOutputBinder; -use DevThis\ConsoleLogg\Factories\FilterableConsoleLoggerFactory; +use DevThis\ConsoleLogg\Factories\ConsoleLoggerFactory; use DevThis\ConsoleLogg\Interfaces\Binder\LogOutputBindedInterface; -use DevThis\ConsoleLogg\Interfaces\Factories\FilterableConsoleLoggerFactoryInterface; +use DevThis\ConsoleLogg\Interfaces\Factories\ConsoleLoggerFactoryInterface; use DevThis\ConsoleLogg\Interfaces\Listener\LogManagerResolverListenerInterface; use DevThis\ConsoleLogg\Listeners\LogManagerResolverListener; use DevThis\ConsoleLogg\Providers\ConsoleLoggServiceProvider; @@ -58,8 +58,8 @@ public function testRegisterBindings(): void self::assertSame(LogOutputBinder::class, $app->get(LogOutputBindedInterface::class)); self::assertSame(LogManagerResolverListener::class, $app->get(LogManagerResolverListenerInterface::class)); self::assertSame( - FilterableConsoleLoggerFactory::class, - $app->get(FilterableConsoleLoggerFactoryInterface::class) + ConsoleLoggerFactory::class, + $app->get(ConsoleLoggerFactoryInterface::class) ); } @@ -73,8 +73,8 @@ public function testRegisterDoesNothingForNonConsole(): void self::assertNotSame(LogOutputBinder::class, $app->get(LogOutputBindedInterface::class)); self::assertNotSame(LogManagerResolverListener::class, $app->get(LogManagerResolverListenerInterface::class)); self::assertNotSame( - FilterableConsoleLoggerFactory::class, - $app->get(FilterableConsoleLoggerFactoryInterface::class) + ConsoleLoggerFactory::class, + $app->get(ConsoleLoggerFactoryInterface::class) ); } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy