diff --git a/src/ClientBuilder.php b/src/ClientBuilder.php index cf515701..cde9c86e 100644 --- a/src/ClientBuilder.php +++ b/src/ClientBuilder.php @@ -30,6 +30,7 @@ use Laudis\Neo4j\Formatter\OGMFormatter; use Laudis\Neo4j\Formatter\SummarizedResultFormatter; use Laudis\Neo4j\Types\CypherMap; +use Psr\Log\LoggerInterface; /** * Immutable factory for creating a client. @@ -58,16 +59,19 @@ public function __construct( /** * Creates a client builder with default configurations and an OGMFormatter. * - * @pure - * * @return ClientBuilder>> */ - public static function create(): ClientBuilder + public static function create(?string $logLevel = null, ?LoggerInterface $logger = null): ClientBuilder { + $configuration = DriverConfiguration::default(); + if ($logLevel !== null && $logger !== null) { + $configuration = $configuration->withLogger($logLevel, $logger); + } + return new self( SessionConfiguration::default(), TransactionConfiguration::default(), - new DriverSetupManager(SummarizedResultFormatter::create(), DriverConfiguration::default()) + new DriverSetupManager(SummarizedResultFormatter::create(), $configuration) ); } diff --git a/src/DriverFactory.php b/src/DriverFactory.php index 673351eb..85d7f3b4 100644 --- a/src/DriverFactory.php +++ b/src/DriverFactory.php @@ -26,7 +26,6 @@ use Laudis\Neo4j\Http\HttpDriver; use Laudis\Neo4j\Neo4j\Neo4jDriver; use Psr\Http\Message\UriInterface; -use Psr\Log\LoggerInterface; /** * Factory for creating drivers directly. @@ -46,7 +45,7 @@ final class DriverFactory * : DriverInterface * ) */ - public static function create(string|UriInterface $uri, ?DriverConfiguration $configuration = null, ?AuthenticateInterface $authenticate = null, ?FormatterInterface $formatter = null, ?string $logLevel = null, ?LoggerInterface $logger = null): DriverInterface + public static function create(string|UriInterface $uri, ?DriverConfiguration $configuration = null, ?AuthenticateInterface $authenticate = null, ?FormatterInterface $formatter = null): DriverInterface { if (is_string($uri)) { $uri = Uri::create($uri); diff --git a/tests/Integration/ClientBuilderTest.php b/tests/Integration/ClientBuilderTest.php index 2b8c4991..248b569a 100644 --- a/tests/Integration/ClientBuilderTest.php +++ b/tests/Integration/ClientBuilderTest.php @@ -15,33 +15,42 @@ use Laudis\Neo4j\Client; use Laudis\Neo4j\ClientBuilder; +use Laudis\Neo4j\Common\Neo4jLogger; use Laudis\Neo4j\Databags\DriverConfiguration; use Laudis\Neo4j\Databags\SessionConfiguration; use Laudis\Neo4j\Databags\SslConfiguration; use Laudis\Neo4j\Databags\TransactionConfiguration; use Laudis\Neo4j\Enum\SslMode; use PHPUnit\Framework\TestCase; +use Psr\Log\LoggerInterface; +use Psr\Log\LogLevel; class ClientBuilderTest extends TestCase { public function testGetClient(): void { + $logger = $this->createMock(LoggerInterface::class); $sslConfig = SslConfiguration::default()->withVerifyPeer(false)->withMode(SslMode::FROM_URL()); $driverconfig = DriverConfiguration::default() ->withSslConfiguration($sslConfig) ->withMaxPoolSize(4096) - ->withAcquireConnectionTimeout(2.5); + ->withAcquireConnectionTimeout(2.5) + ->withLogger(LogLevel::DEBUG, $logger); $sessionConfig = SessionConfiguration::default()->withDatabase('neo4j'); $transactionConfig = TransactionConfiguration::default()->withTimeout(120.0); - $client = ClientBuilder::create() + $client = ClientBuilder::create(LogLevel::DEBUG, $logger) ->withDefaultDriverConfiguration($driverconfig) ->withDefaultSessionConfiguration($sessionConfig) ->withDefaultTransactionConfiguration($transactionConfig) ->build(); self::assertInstanceOf(Client::class, $client); - self::assertEquals($driverconfig, $client->getDriverSetups()->getDriverConfiguration()); - self::assertEquals($sslConfig, $client->getDriverSetups()->getDriverConfiguration()->getSslConfiguration()); + + $driverConfigurationFromClient = $client->getDriverSetups()->getDriverConfiguration(); + self::assertInstanceOf(Neo4jLogger::class, $driverConfigurationFromClient->getLogger()); + + self::assertEquals($driverconfig, $driverConfigurationFromClient); + self::assertEquals($sslConfig, $driverConfigurationFromClient->getSslConfiguration()); self::assertEquals($sessionConfig, $client->getDefaultSessionConfiguration()); self::assertEquals($transactionConfig, $client->getDefaultTransactionConfiguration()); }