. * * @file * @ingroup extensions */ use Popups\EventLogging\MWEventLogger; use Popups\EventLogging\NullLogger; use Popups\EventLogging\EventLoggerFactory; /** * @group Popups * @coversDefaultClass \Popups\EventLogging\EventLoggerFactory */ class EventLoggerFactoryTest extends MediaWikiTestCase { /** * @covers ::__construct * @covers ::get * @covers \Popups\EventLogging\MWEventLogger::__construct */ public function testReturnsMWEventWhenEventLoggingIsAvailable() { $mock = $this->getMock( ExtensionRegistry::class, [ 'isLoaded' ] ); $mock->expects( $this->once() ) ->method( 'isLoaded' ) ->with( 'EventLogging' ) ->willReturn( true ); $config = new HashConfig(); $factory = new EventLoggerFactory( $config, $mock ); $this->assertInstanceOf( MWEventLogger::class, $factory->get(), 'A functional event logger is instantiated.' ); } /** * @covers ::__construct * @covers ::get */ public function testReturnsMWEventWhenEventLoggingIsNotAvailable() { $mock = $this->getMock( ExtensionRegistry::class, [ 'isLoaded' ] ); $mock->expects( $this->once() ) ->method( 'isLoaded' ) ->with( 'EventLogging' ) ->willReturn( false ); $config = new HashConfig(); $factory = new EventLoggerFactory( $config, $mock ); $this->assertInstanceOf( NullLogger::class, $factory->get(), 'A no-op event logger is instantiated.' ); } }