From a947ec4261242fe29e70b9032fc2db144d5bb16d Mon Sep 17 00:00:00 2001 From: Pratiksha Date: Mon, 24 Feb 2025 16:48:07 +0530 Subject: [PATCH 01/45] main branch --- Dockerfile | 16 +++++++++++++--- phpunit.dist.xml | 6 ++++++ src/Objects/Authentication.php | 6 ------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 23eb4037..5f70cb10 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,23 @@ # Use an official PHP image as the base image FROM php:8.1-cli -# Install necessary extensions (e.g., for Composer) -RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev git libzip-dev zip \ +RUN apt-get update && \ + apt-get install -y \ + libpng-dev \ + libjpeg-dev \ + libfreetype6-dev \ + git \ + libzip-dev \ + zip \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd zip +RUN pecl install xdebug pcov && docker-php-ext-enable xdebug pcov + +# Configure Xdebug for coverage +# RUN echo "xdebug.mode=coverage" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini + # Set working directory WORKDIR /var/www -# Copy the composer.phar file to the container COPY --from=composer:latest /usr/bin/composer /usr/bin/composer diff --git a/phpunit.dist.xml b/phpunit.dist.xml index 00676755..e7b37a1c 100644 --- a/phpunit.dist.xml +++ b/phpunit.dist.xml @@ -7,6 +7,12 @@ + + + src + + + diff --git a/tests/Integration/Neo4jOGMTest.php b/tests/Integration/Neo4jOGMTest.php index e9a13478..635fd74e 100644 --- a/tests/Integration/Neo4jOGMTest.php +++ b/tests/Integration/Neo4jOGMTest.php @@ -2,15 +2,12 @@ namespace Neo4j\QueryAPI\Tests\Integration; +use Neo4j\QueryAPI\Objects\Path; use Neo4j\QueryAPI\OGM; use PHPUnit\Framework\TestCase; -/** - * @api - */ -class Neo4jOGMTest extends TestCase +final class Neo4jOGMTest extends TestCase { - /** @psalm-suppress PropertyNotSetInConstructor */ private OGM $ogm; #[\Override] @@ -84,12 +81,11 @@ public function testWithPath(): void ]; $path = $this->ogm->map($pathData); - $nodes = iterator_to_array($path->nodes); + $this->assertInstanceOf(Path::class, $path); - $this->assertCount(2, $nodes); + $this->assertCount(2, $path->nodes); $this->assertCount(1, $path->relationships); - $this->assertEquals('A', $nodes[0]->getProperties()['name']['_value']); - $this->assertEquals('B', $nodes[1]->getProperties()['name']['_value']); + $this->assertEquals('A', $path->nodes[0]->getProperties()['name']['_value']); + $this->assertEquals('B', $path->nodes[1]->getProperties()['name']['_value']); } - } From dc88213660f63c911e87e345c2ff4a4309bc3c9c Mon Sep 17 00:00:00 2001 From: Kiran Chandani Date: Fri, 28 Feb 2025 16:09:54 +0530 Subject: [PATCH 32/45] updated README.md --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index db7952d2..f0c7e5f3 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,11 @@ composer require neo4j-php/query-api ## Client Installation -If you plan on using the HTTP drivers, make sure you have psr-7, psr-17, and psr-18 implementations included in your project. -If you don't have any, you can install them via Composer: +This client uses the HTTP protocol, make sure you have psr-7, psr-17, and psr-18 implementations included in your project. +If you don't have any, you can install one of the many options via Composer: ```sh -composer require psr/http-message psr/http-factory psr/http-client +composer require guzzlehttp/guzzle ``` > **_NOTE:_** PSR-17 and PSR-18 are essential for HTTP client communication. Other compatible clients like Guzzle can also be used. @@ -121,19 +121,18 @@ Cypher values and types map to these php types and classes: | Authentication | Yes | | Transaction | Yes | | HTTP | Yes | -| Cluster | Partly* | +| Cluster | Partly * | | Aura | Yes | | Bookmarks | Yes | | Bolt | No | -> **_NOTE:_** It supports neo4j databases versions > 5.25 or Neo4j Aura (which has QueryAPI enabled.) > \* Client side routing is only supported in the Neo4j driver - + **_NOTE:_** *_It supports neo4j databases versions > 5.25 or Neo4j Aura (which has QueryAPI enabled.)_* ## Contributing -Please see CONTRIBUTING for details. +Please see [CONTRIBUTING.md](./Contributing.md) for details. ## Security @@ -142,8 +141,10 @@ If you discover any security-related issues, please email *security@nagels.tech* ## Credits - Created with ❤️ by Nagels -- [Ghlen Nagels](https://www.linkedin.com/in/ghlen/), [Kiran Chandani](https://www.linkedin.com/in/kiran-chandani-5628a1213/), [Pratiksha Zalte]() +- [Kiran Chandani](https://www.linkedin.com/in/kiran-chandani-5628a1213/), +- [Pratiksha Zalte](https://github.com/p123-stack) +- [Ghlen Nagels](https://www.linkedin.com/in/ghlen/), ## License -The MIT License (MIT). Please see License File for more information. \ No newline at end of file +The MIT License (MIT). Please see [License File](LICENSE) for more information. \ No newline at end of file From e8cd214f758a29cf708ad1f340121f4091e2e85f Mon Sep 17 00:00:00 2001 From: pratikshazalte69 Date: Fri, 28 Feb 2025 16:10:25 +0530 Subject: [PATCH 33/45] Added final keyword to all neccesary classes --- src/Neo4jRequestFactory.php | 2 +- src/OGM.php | 2 +- src/Objects/Authentication.php | 2 +- src/Objects/Path.php | 2 +- src/Objects/Point.php | 2 +- src/Objects/ProfiledQueryPlan.php | 2 +- src/Objects/ProfiledQueryPlanArguments.php | 2 +- src/Objects/Relationship.php | 2 +- src/Objects/ResultCounters.php | 2 +- src/Results/ResultSet.php | 2 +- src/Transaction.php | 2 +- tests/Integration/Neo4jOGMTest.php | 2 +- tests/Integration/Neo4jTransactionIntegrationTest.php | 2 +- tests/Unit/Authentication/BasicAuthenticationUnitTest.php | 2 +- tests/Unit/Authentication/BearerAuthenticationUnitTest.php | 2 +- tests/Unit/Authentication/NoAuthUnitTest.php | 2 +- tests/Unit/AuthenticationTest.php | 2 +- tests/Unit/Neo4jExceptionUnitTest.php | 2 +- tests/Unit/Neo4jQueryAPIUnitTest.php | 2 +- tests/Unit/Neo4jRequestFactoryTest.php | 2 +- tests/Unit/OGMUnitTest.php | 2 +- tests/Unit/ResponseParserUnitTest.php | 2 +- tests/Unit/ResultRowTest.php | 2 +- tests/Unit/Results/ResultRowUnitTest.php | 2 +- tests/Unit/TransactionUnitTest.php | 2 +- tests/Unit/objects/AuthenticationUnitTest.php | 2 +- tests/Unit/objects/BookmarksUnitTest.php | 2 +- tests/Unit/objects/NodeUnitTest.php | 2 +- tests/Unit/objects/PathUnitTest.php | 2 +- tests/Unit/objects/PointUnitTest.php | 2 +- tests/Unit/objects/RelationshipUnitTest.php | 2 +- 31 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/Neo4jRequestFactory.php b/src/Neo4jRequestFactory.php index bd78fbff..600427db 100644 --- a/src/Neo4jRequestFactory.php +++ b/src/Neo4jRequestFactory.php @@ -8,7 +8,7 @@ use Psr\Http\Message\RequestInterface; use Psr\Http\Message\StreamFactoryInterface; -class Neo4jRequestFactory +final class Neo4jRequestFactory { public function __construct( private RequestFactoryInterface $psr17Factory, diff --git a/src/OGM.php b/src/OGM.php index 4b14f650..a471e16d 100644 --- a/src/OGM.php +++ b/src/OGM.php @@ -8,7 +8,7 @@ use Neo4j\QueryAPI\Objects\Path; use InvalidArgumentException; -class OGM +final class OGM { /** * @param array $data diff --git a/src/Objects/Authentication.php b/src/Objects/Authentication.php index 96306ff7..d98dc813 100644 --- a/src/Objects/Authentication.php +++ b/src/Objects/Authentication.php @@ -7,7 +7,7 @@ use Neo4j\QueryAPI\Authentication\BearerAuthentication; use Neo4j\QueryAPI\Authentication\NoAuth; -class Authentication +final class Authentication { public static function basic(string $username, string $password): AuthenticateInterface { diff --git a/src/Objects/Path.php b/src/Objects/Path.php index bdfb28c8..b96666cd 100644 --- a/src/Objects/Path.php +++ b/src/Objects/Path.php @@ -6,7 +6,7 @@ * Represents a path in a Neo4j graph, consisting of nodes and relationships. */ -class Path +final class Path { /** * @var Node[] Array of nodes in the path. diff --git a/src/Objects/Point.php b/src/Objects/Point.php index 837f37cb..037820cf 100644 --- a/src/Objects/Point.php +++ b/src/Objects/Point.php @@ -5,7 +5,7 @@ /** * Represents a point with x, y, z coordinates, and SRID (Spatial Reference System Identifier). */ -class Point +final class Point { /** * @param float $x The x coordinate of the point. diff --git a/src/Objects/ProfiledQueryPlan.php b/src/Objects/ProfiledQueryPlan.php index cb14bbde..031861b2 100644 --- a/src/Objects/ProfiledQueryPlan.php +++ b/src/Objects/ProfiledQueryPlan.php @@ -2,7 +2,7 @@ namespace Neo4j\QueryAPI\Objects; -class ProfiledQueryPlan +final class ProfiledQueryPlan { public function __construct( public readonly int $dbHits = 0, diff --git a/src/Objects/ProfiledQueryPlanArguments.php b/src/Objects/ProfiledQueryPlanArguments.php index 74e4c480..a56cfd2f 100644 --- a/src/Objects/ProfiledQueryPlanArguments.php +++ b/src/Objects/ProfiledQueryPlanArguments.php @@ -2,7 +2,7 @@ namespace Neo4j\QueryAPI\Objects; -class ProfiledQueryPlanArguments +final class ProfiledQueryPlanArguments { public function __construct( public readonly ?int $globalMemory = null, diff --git a/src/Objects/Relationship.php b/src/Objects/Relationship.php index 9d441f3c..9b969020 100644 --- a/src/Objects/Relationship.php +++ b/src/Objects/Relationship.php @@ -6,7 +6,7 @@ * Represents a relationship in a Neo4j graph, with a type and associated properties. */ -class Relationship +final class Relationship { /** * @var string The type of the relationship (e.g., "FRIENDS_WITH", "WORKS_FOR"). diff --git a/src/Objects/ResultCounters.php b/src/Objects/ResultCounters.php index 61d5bcd3..7deb0b71 100644 --- a/src/Objects/ResultCounters.php +++ b/src/Objects/ResultCounters.php @@ -2,7 +2,7 @@ namespace Neo4j\QueryAPI\Objects; -class ResultCounters +final class ResultCounters { public function __construct( public readonly bool $containsUpdates = false, diff --git a/src/Results/ResultSet.php b/src/Results/ResultSet.php index 50b98e9c..5317ee2d 100644 --- a/src/Results/ResultSet.php +++ b/src/Results/ResultSet.php @@ -15,7 +15,7 @@ * @template TValue * @implements IteratorAggregate */ -class ResultSet implements IteratorAggregate, Countable +final class ResultSet implements IteratorAggregate, Countable { /** * @param list $rows diff --git a/src/Transaction.php b/src/Transaction.php index ec6d45e3..d0d8ef2e 100644 --- a/src/Transaction.php +++ b/src/Transaction.php @@ -12,7 +12,7 @@ /** * @api */ -class Transaction +final class Transaction { public function __construct( private ClientInterface $client, diff --git a/tests/Integration/Neo4jOGMTest.php b/tests/Integration/Neo4jOGMTest.php index 180d89a8..7618d3bc 100644 --- a/tests/Integration/Neo4jOGMTest.php +++ b/tests/Integration/Neo4jOGMTest.php @@ -8,7 +8,7 @@ /** * @api */ -class Neo4jOGMTest extends TestCase +final class Neo4jOGMTest extends TestCase { /** @psalm-suppress PropertyNotSetInConstructor */ private OGM $ogm; diff --git a/tests/Integration/Neo4jTransactionIntegrationTest.php b/tests/Integration/Neo4jTransactionIntegrationTest.php index 9033ba83..66fea130 100644 --- a/tests/Integration/Neo4jTransactionIntegrationTest.php +++ b/tests/Integration/Neo4jTransactionIntegrationTest.php @@ -13,7 +13,7 @@ /** * @api */ -class Neo4jTransactionIntegrationTest extends TestCase +final class Neo4jTransactionIntegrationTest extends TestCase { use CreatesQueryAPI; diff --git a/tests/Unit/Authentication/BasicAuthenticationUnitTest.php b/tests/Unit/Authentication/BasicAuthenticationUnitTest.php index aa66dcc7..a3052d4e 100644 --- a/tests/Unit/Authentication/BasicAuthenticationUnitTest.php +++ b/tests/Unit/Authentication/BasicAuthenticationUnitTest.php @@ -7,7 +7,7 @@ use PHPUnit\Framework\TestCase; use Psr\Http\Message\RequestInterface; -class BasicAuthenticationUnitTest extends TestCase +final class BasicAuthenticationUnitTest extends TestCase { private BasicAuthentication $auth; private MockObject $requestMock; diff --git a/tests/Unit/Authentication/BearerAuthenticationUnitTest.php b/tests/Unit/Authentication/BearerAuthenticationUnitTest.php index a0e2bd70..0068c473 100644 --- a/tests/Unit/Authentication/BearerAuthenticationUnitTest.php +++ b/tests/Unit/Authentication/BearerAuthenticationUnitTest.php @@ -6,7 +6,7 @@ use PHPUnit\Framework\TestCase; use Psr\Http\Message\RequestInterface; -class BearerAuthenticationUnitTest extends TestCase +final class BearerAuthenticationUnitTest extends TestCase { private BearerAuthentication $auth; private RequestInterface $requestMock; diff --git a/tests/Unit/Authentication/NoAuthUnitTest.php b/tests/Unit/Authentication/NoAuthUnitTest.php index 84088e64..d20fbf90 100644 --- a/tests/Unit/Authentication/NoAuthUnitTest.php +++ b/tests/Unit/Authentication/NoAuthUnitTest.php @@ -7,7 +7,7 @@ use PHPUnit\Framework\TestCase; use Psr\Http\Message\RequestInterface; -class NoAuthUnitTest extends TestCase +final class NoAuthUnitTest extends TestCase { private NoAuth $auth; private RequestInterface $requestMock; diff --git a/tests/Unit/AuthenticationTest.php b/tests/Unit/AuthenticationTest.php index 07fdab5e..99fbdb1f 100644 --- a/tests/Unit/AuthenticationTest.php +++ b/tests/Unit/AuthenticationTest.php @@ -8,7 +8,7 @@ /** * @api */ -class AuthenticationTest extends TestCase +final class AuthenticationTest extends TestCase { public function testBearerToken(): void { diff --git a/tests/Unit/Neo4jExceptionUnitTest.php b/tests/Unit/Neo4jExceptionUnitTest.php index caa0bee3..bfae1e15 100644 --- a/tests/Unit/Neo4jExceptionUnitTest.php +++ b/tests/Unit/Neo4jExceptionUnitTest.php @@ -9,7 +9,7 @@ /** * @api */ -class Neo4jExceptionUnitTest extends TestCase +final class Neo4jExceptionUnitTest extends TestCase { /** * Test the constructor and property initialization. diff --git a/tests/Unit/Neo4jQueryAPIUnitTest.php b/tests/Unit/Neo4jQueryAPIUnitTest.php index 42285bfd..bdee8fea 100644 --- a/tests/Unit/Neo4jQueryAPIUnitTest.php +++ b/tests/Unit/Neo4jQueryAPIUnitTest.php @@ -24,7 +24,7 @@ /** * @api */ -class Neo4jQueryAPIUnitTest extends TestCase +final class Neo4jQueryAPIUnitTest extends TestCase { /** @psalm-suppress PropertyNotSetInConstructor */ private OGM $ogm; diff --git a/tests/Unit/Neo4jRequestFactoryTest.php b/tests/Unit/Neo4jRequestFactoryTest.php index c4b703d3..cf08ea63 100644 --- a/tests/Unit/Neo4jRequestFactoryTest.php +++ b/tests/Unit/Neo4jRequestFactoryTest.php @@ -20,7 +20,7 @@ /** * @api */ -class Neo4jRequestFactoryTest extends TestCase +final class Neo4jRequestFactoryTest extends TestCase { /** @psalm-suppress PropertyNotSetInConstructor */ private RequestFactoryInterface&\PHPUnit\Framework\MockObject\MockObject $psr17Factory; diff --git a/tests/Unit/OGMUnitTest.php b/tests/Unit/OGMUnitTest.php index cb32e696..003d97cd 100644 --- a/tests/Unit/OGMUnitTest.php +++ b/tests/Unit/OGMUnitTest.php @@ -12,7 +12,7 @@ /** * @api */ -class OGMUnitTest extends TestCase +final class OGMUnitTest extends TestCase { private OGM $ogm; diff --git a/tests/Unit/ResponseParserUnitTest.php b/tests/Unit/ResponseParserUnitTest.php index ba7a2d6a..5230eb01 100644 --- a/tests/Unit/ResponseParserUnitTest.php +++ b/tests/Unit/ResponseParserUnitTest.php @@ -12,7 +12,7 @@ use Psr\Http\Message\StreamInterface; use RuntimeException; -class ResponseParserUnitTest extends TestCase +final class ResponseParserUnitTest extends TestCase { private ResponseParser $parser; private OGM $ogmMock; diff --git a/tests/Unit/ResultRowTest.php b/tests/Unit/ResultRowTest.php index 0fc9ade5..5289a60e 100644 --- a/tests/Unit/ResultRowTest.php +++ b/tests/Unit/ResultRowTest.php @@ -10,7 +10,7 @@ /** * @api */ -class ResultRowTest extends TestCase +final class ResultRowTest extends TestCase { public function testArrayAccessGet(): void { diff --git a/tests/Unit/Results/ResultRowUnitTest.php b/tests/Unit/Results/ResultRowUnitTest.php index 36c02341..57237a47 100644 --- a/tests/Unit/Results/ResultRowUnitTest.php +++ b/tests/Unit/Results/ResultRowUnitTest.php @@ -7,7 +7,7 @@ use OutOfBoundsException; use BadMethodCallException; -class ResultRowUnitTest extends TestCase +final class ResultRowUnitTest extends TestCase { public function testOffsetGetReturnsValue(): void { diff --git a/tests/Unit/TransactionUnitTest.php b/tests/Unit/TransactionUnitTest.php index efc18182..b4827bab 100644 --- a/tests/Unit/TransactionUnitTest.php +++ b/tests/Unit/TransactionUnitTest.php @@ -14,7 +14,7 @@ use Psr\Http\Message\RequestInterface; use Psr\Http\Message\StreamInterface; -class TransactionUnitTest extends TestCase +final class TransactionUnitTest extends TestCase { private Transaction $transaction; private $clientMock; diff --git a/tests/Unit/objects/AuthenticationUnitTest.php b/tests/Unit/objects/AuthenticationUnitTest.php index e5af14f0..4b1984cb 100644 --- a/tests/Unit/objects/AuthenticationUnitTest.php +++ b/tests/Unit/objects/AuthenticationUnitTest.php @@ -9,7 +9,7 @@ use Neo4j\QueryAPI\Authentication\NoAuth; use PHPUnit\Framework\TestCase; -class AuthenticationUnitTest extends TestCase +final class AuthenticationUnitTest extends TestCase { public function testBasicReturnsBasicAuthenticationInstance(): void { diff --git a/tests/Unit/objects/BookmarksUnitTest.php b/tests/Unit/objects/BookmarksUnitTest.php index fa40cc20..dce580a2 100644 --- a/tests/Unit/objects/BookmarksUnitTest.php +++ b/tests/Unit/objects/BookmarksUnitTest.php @@ -5,7 +5,7 @@ use Neo4j\QueryAPI\Objects\Bookmarks; use PHPUnit\Framework\TestCase; -class BookmarksUnitTest extends TestCase +final class BookmarksUnitTest extends TestCase { private Bookmarks $bookmarks; #[\Override] diff --git a/tests/Unit/objects/NodeUnitTest.php b/tests/Unit/objects/NodeUnitTest.php index 035b48d9..92aaeca6 100644 --- a/tests/Unit/objects/NodeUnitTest.php +++ b/tests/Unit/objects/NodeUnitTest.php @@ -5,7 +5,7 @@ use Neo4j\QueryAPI\Objects\Node; use PHPUnit\Framework\TestCase; -class NodeUnitTest extends TestCase +final class NodeUnitTest extends TestCase { private Node $node; #[\Override] diff --git a/tests/Unit/objects/PathUnitTest.php b/tests/Unit/objects/PathUnitTest.php index 0c40e7da..14ccae0c 100644 --- a/tests/Unit/objects/PathUnitTest.php +++ b/tests/Unit/objects/PathUnitTest.php @@ -7,7 +7,7 @@ use Neo4j\QueryAPI\Objects\Relationship; use PHPUnit\Framework\TestCase; -class PathUnitTest extends TestCase +final class PathUnitTest extends TestCase { private Path $path; private array $nodes; diff --git a/tests/Unit/objects/PointUnitTest.php b/tests/Unit/objects/PointUnitTest.php index 8911897d..24399a6e 100644 --- a/tests/Unit/objects/PointUnitTest.php +++ b/tests/Unit/objects/PointUnitTest.php @@ -5,7 +5,7 @@ use Neo4j\QueryAPI\Objects\Point; use PHPUnit\Framework\TestCase; -class PointUnitTest extends TestCase +final class PointUnitTest extends TestCase { private Point $point; #[\Override] diff --git a/tests/Unit/objects/RelationshipUnitTest.php b/tests/Unit/objects/RelationshipUnitTest.php index 80f4331e..d304f374 100644 --- a/tests/Unit/objects/RelationshipUnitTest.php +++ b/tests/Unit/objects/RelationshipUnitTest.php @@ -5,7 +5,7 @@ use Neo4j\QueryAPI\Objects\Relationship; use PHPUnit\Framework\TestCase; -class RelationshipUnitTest extends TestCase +final class RelationshipUnitTest extends TestCase { private Relationship $relationship; #[\Override] From b48d97774d60afb344a7842cb1852d0a01cc79b5 Mon Sep 17 00:00:00 2001 From: Kiran Chandani Date: Fri, 28 Feb 2025 16:10:58 +0530 Subject: [PATCH 34/45] minor errors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f0c7e5f3..d32abbb6 100644 --- a/README.md +++ b/README.md @@ -142,8 +142,8 @@ If you discover any security-related issues, please email *security@nagels.tech* - Created with ❤️ by Nagels - [Kiran Chandani](https://www.linkedin.com/in/kiran-chandani-5628a1213/), -- [Pratiksha Zalte](https://github.com/p123-stack) -- [Ghlen Nagels](https://www.linkedin.com/in/ghlen/), +- [Pratiksha Zalte](https://github.com/p123-stack), +- [Ghlen Nagels](https://www.linkedin.com/in/ghlen/) ## License From c3484e7128c0458e45dfae1db3f49fd1b2ee623f Mon Sep 17 00:00:00 2001 From: Kiran Chandani Date: Fri, 28 Feb 2025 16:23:35 +0530 Subject: [PATCH 35/45] propertynotsetinconstructor is removed --- src/Objects/Person.php | 3 +-- tests/Unit/Neo4jQueryAPIUnitTest.php | 3 --- tests/Unit/Neo4jRequestFactoryTest.php | 7 +------ 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/Objects/Person.php b/src/Objects/Person.php index a6156b09..4e6b604e 100644 --- a/src/Objects/Person.php +++ b/src/Objects/Person.php @@ -3,8 +3,7 @@ namespace Neo4j\QueryAPI\Objects; /** - * @psalm-suppress UnusedClass - * Represents a Person node in the Neo4j graph. + * * Represents a Person node in the Neo4j graph. */ final class Person extends Node { diff --git a/tests/Unit/Neo4jQueryAPIUnitTest.php b/tests/Unit/Neo4jQueryAPIUnitTest.php index 16ca56ae..3b319c30 100644 --- a/tests/Unit/Neo4jQueryAPIUnitTest.php +++ b/tests/Unit/Neo4jQueryAPIUnitTest.php @@ -26,13 +26,10 @@ */ class Neo4jQueryAPIUnitTest extends TestCase { - /** @psalm-suppress PropertyNotSetInConstructor */ private OGM $ogm; - /** @psalm-suppress PropertyNotSetInConstructor */ protected string $address; - /** @psalm-suppress PropertyNotSetInConstructor */ protected ResponseParser $parser; #[\Override] diff --git a/tests/Unit/Neo4jRequestFactoryTest.php b/tests/Unit/Neo4jRequestFactoryTest.php index 08050db0..4dcf6eea 100644 --- a/tests/Unit/Neo4jRequestFactoryTest.php +++ b/tests/Unit/Neo4jRequestFactoryTest.php @@ -15,15 +15,10 @@ use Neo4j\QueryAPI\Objects\Authentication; use RuntimeException; -/** - * @api - */ + class Neo4jRequestFactoryTest extends TestCase { - /** @psalm-suppress PropertyNotSetInConstructor */ private RequestFactoryInterface&\PHPUnit\Framework\MockObject\MockObject $psr17Factory; - - /** @psalm-suppress PropertyNotSetInConstructor */ private StreamFactoryInterface&\PHPUnit\Framework\MockObject\MockObject $streamFactory; From 9a13cccece1cd223584c4fcbf0dab74b5ed57923 Mon Sep 17 00:00:00 2001 From: Ghlen Nagels Date: Fri, 28 Feb 2025 17:00:25 +0530 Subject: [PATCH 36/45] fixed all warnings --- .github/workflows/psalm.yml | 13 ++++++- composer.json | 3 +- docker-compose.yml | 2 - psalm.xml | 8 ++-- src/Authentication/AuthenticateInterface.php | 3 -- src/Authentication/BasicAuthentication.php | 5 +-- src/Authentication/BearerAuthentication.php | 6 +-- src/Authentication/NoAuth.php | 5 +-- src/Exception/Neo4jException.php | 5 +-- src/Objects/Authentication.php | 5 +++ src/Objects/Node.php | 2 +- src/ResponseParser.php | 9 +++-- src/Transaction.php | 21 +++------- .../Integration/BookmarksIntegrationTest.php | 2 +- .../Integration/DataTypesIntegrationTest.php | 36 +++++++++--------- .../Neo4jQueryAPIIntegrationTest.php | 6 +-- .../Neo4jTransactionIntegrationTest.php | 3 -- .../ProfiledQueryPlanIntegrationTest.php | 3 ++ .../BasicAuthenticationUnitTest.php | 2 +- .../BearerAuthenticationUnitTest.php | 3 +- tests/Unit/AuthenticationTest.php | 3 -- tests/Unit/Neo4jExceptionUnitTest.php | 3 -- tests/Unit/Neo4jQueryAPINewUnitTest.php | 19 ++++++---- tests/Unit/Neo4jQueryAPIUnitTest.php | 8 +--- tests/Unit/Neo4jRequestFactoryTest.php | 38 +++---------------- tests/Unit/OGMUnitTest.php | 3 -- tests/Unit/ResponseParserUnitTest.php | 9 ++--- tests/Unit/ResultRowTest.php | 6 +-- tests/Unit/TransactionUnitTest.php | 14 ++++--- 29 files changed, 99 insertions(+), 146 deletions(-) diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index d28186d3..c5362d69 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -24,4 +24,15 @@ jobs: run: composer install --no-progress --prefer-dist - name: Run Psalm - run: vendor/bin/psalm --output-format=github + run: vendor/bin/psalm --show-info=true --output-format=github + + - name: Run Psalm + id: psalm + run: | + # Run Psalm and use tee to print output and save it to psalm.log + vendor/bin/psalm --no-cache --show-info=true --output-format=github | tee psalm.log || true + # If any warnings are found, print a message and exit with a failure code + if grep -q "warning" psalm.log; then + echo "Warnings detected in Psalm output. Failing build." + exit 1 + fi diff --git a/composer.json b/composer.json index 6630612b..aa7f3dda 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,8 @@ "friendsofphp/php-cs-fixer": "^3.68", "vimeo/psalm": "^6.8", "dg/bypass-finals": "^1.9", - "psalm/plugin-phpunit": "^0.19.2" + "psalm/plugin-phpunit": "^0.19.2", + "psalm/plugin-mockery": "^1.2" }, "autoload": { diff --git a/docker-compose.yml b/docker-compose.yml index b5d8dd5a..9c10a097 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: # PHP Service app: diff --git a/psalm.xml b/psalm.xml index 25acfe69..271a82d4 100644 --- a/psalm.xml +++ b/psalm.xml @@ -7,13 +7,13 @@ findUnusedCode="false" > - - + + - + - + diff --git a/src/Authentication/AuthenticateInterface.php b/src/Authentication/AuthenticateInterface.php index 1fb5b74d..ce53aeec 100644 --- a/src/Authentication/AuthenticateInterface.php +++ b/src/Authentication/AuthenticateInterface.php @@ -4,9 +4,6 @@ use Psr\Http\Message\RequestInterface; -/** - * @api - */ interface AuthenticateInterface { public function getHeader(): string; diff --git a/src/Authentication/BasicAuthentication.php b/src/Authentication/BasicAuthentication.php index fd48302a..9b91803b 100644 --- a/src/Authentication/BasicAuthentication.php +++ b/src/Authentication/BasicAuthentication.php @@ -4,10 +4,7 @@ use Psr\Http\Message\RequestInterface; -/** - * @api - */ -class BasicAuthentication implements AuthenticateInterface +final class BasicAuthentication implements AuthenticateInterface { private string $username; private string $password; diff --git a/src/Authentication/BearerAuthentication.php b/src/Authentication/BearerAuthentication.php index 29c86bd3..c2e62818 100644 --- a/src/Authentication/BearerAuthentication.php +++ b/src/Authentication/BearerAuthentication.php @@ -4,14 +4,10 @@ use Psr\Http\Message\RequestInterface; -/** - * @api - */ -class BearerAuthentication implements AuthenticateInterface +final class BearerAuthentication implements AuthenticateInterface { public function __construct(private string $token) { - $this->token = $token; } #[\Override] diff --git a/src/Authentication/NoAuth.php b/src/Authentication/NoAuth.php index 7da1d470..4b1000bb 100644 --- a/src/Authentication/NoAuth.php +++ b/src/Authentication/NoAuth.php @@ -4,10 +4,7 @@ use Psr\Http\Message\RequestInterface; -/** - * @api - */ -class NoAuth implements AuthenticateInterface +final class NoAuth implements AuthenticateInterface { #[\Override] public function getHeader(): string diff --git a/src/Exception/Neo4jException.php b/src/Exception/Neo4jException.php index ebab174c..6550d25a 100644 --- a/src/Exception/Neo4jException.php +++ b/src/Exception/Neo4jException.php @@ -4,10 +4,7 @@ use Exception; -/** - * @api - */ -class Neo4jException extends Exception +final class Neo4jException extends Exception { private readonly string $errorCode; private readonly ?string $errorType; diff --git a/src/Objects/Authentication.php b/src/Objects/Authentication.php index d98dc813..755609a3 100644 --- a/src/Objects/Authentication.php +++ b/src/Objects/Authentication.php @@ -31,4 +31,9 @@ public static function bearer(string $token): AuthenticateInterface { return new BearerAuthentication($token); } + + public static function noAuth(): NoAuth + { + return new NoAuth(); + } } diff --git a/src/Objects/Node.php b/src/Objects/Node.php index 6efaa8bc..28542370 100644 --- a/src/Objects/Node.php +++ b/src/Objects/Node.php @@ -6,7 +6,7 @@ * Represents a Neo4j Node with labels and properties. */ -class Node +final class Node { /** * Node constructor diff --git a/src/ResponseParser.php b/src/ResponseParser.php index 39b4deae..747ca965 100644 --- a/src/ResponseParser.php +++ b/src/ResponseParser.php @@ -114,13 +114,14 @@ private function getAccessMode(string $accessModeData): AccessMode return AccessMode::tryFrom($accessModeData) ?? AccessMode::WRITE; } - private function buildProfiledQueryPlan(?array $queryPlanData): ?ProfiledQueryPlan + private function buildProfiledQueryPlan(mixed $queryPlanData): ?ProfiledQueryPlan { - if (!$queryPlanData) { + if (! is_array($queryPlanData)) { return null; } - $mappedArguments = array_map(function ($value) { + /** @var array $mappedArguments */ + $mappedArguments = array_map(function (mixed $value): mixed { if (is_array($value) && array_key_exists('$type', $value) && array_key_exists('_value', $value)) { return $this->ogm->map($value); } @@ -149,7 +150,7 @@ private function buildProfiledQueryPlan(?array $queryPlanData): ?ProfiledQueryPl planner: $mappedArguments['planner'] ?? null, rows: $mappedArguments['Rows'] ?? null ); - $children = array_map(fn ($child) => $this->buildProfiledQueryPlan($child), $queryPlanData['children'] ?? []); + $children = array_map(fn (mixed $child): ?ProfiledQueryPlan => $this->buildProfiledQueryPlan($child), $queryPlanData['children'] ?? []); return new ProfiledQueryPlan( $queryPlanData['dbHits'] ?? 0, diff --git a/src/Transaction.php b/src/Transaction.php index d0d8ef2e..b3115513 100644 --- a/src/Transaction.php +++ b/src/Transaction.php @@ -9,23 +9,20 @@ use Psr\Http\Message\ResponseInterface; use stdClass; -/** - * @api - */ final class Transaction { public function __construct( - private ClientInterface $client, - private ResponseParser $responseParser, - private Neo4jRequestFactory $requestFactory, - private string $clusterAffinity, - private string $transactionId + private readonly ClientInterface $client, + private readonly ResponseParser $responseParser, + private readonly Neo4jRequestFactory $requestFactory, + private readonly string $clusterAffinity, + private readonly string $transactionId ) { } /** * Execute a Cypher query within the transaction. - * @api + * * @param string $query The Cypher query to be executed. * @param array $parameters Parameters for the query. * @return ResultSet The result rows in ResultSet format. @@ -50,18 +47,12 @@ public function run(string $query, array $parameters): ResultSet return $this->responseParser->parseRunQueryResponse($response); } - /** - * @api - */ public function commit(): void { $request = $this->requestFactory->buildCommitRequest($this->transactionId, $this->clusterAffinity); $this->client->sendRequest($request); } - /** - * @api - */ public function rollback(): void { $request = $this->requestFactory->buildRollbackRequest($this->transactionId, $this->clusterAffinity); diff --git a/tests/Integration/BookmarksIntegrationTest.php b/tests/Integration/BookmarksIntegrationTest.php index 015da1b0..49fd4ec2 100644 --- a/tests/Integration/BookmarksIntegrationTest.php +++ b/tests/Integration/BookmarksIntegrationTest.php @@ -27,7 +27,7 @@ public function testCreateBookmarks(): void { $result = $this->api->run('CREATE (x:Node {hello: "world"})'); - $bookmarks = $result->bookmarks ?? new Bookmarks([]); + $bookmarks = $result->bookmarks; $result = $this->api->run('CREATE (x:Node {hello: "world2"})'); $bookmarks->addBookmarks($result->bookmarks); diff --git a/tests/Integration/DataTypesIntegrationTest.php b/tests/Integration/DataTypesIntegrationTest.php index 53b0d27a..964eb01f 100644 --- a/tests/Integration/DataTypesIntegrationTest.php +++ b/tests/Integration/DataTypesIntegrationTest.php @@ -44,7 +44,7 @@ public function testWithExactNames(): void ]); $this->assertEquals($expected->counters, $results->counters); - $bookmarks = $results->bookmarks ?? new Bookmarks([]); + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } public function testWithSingleName(): void @@ -64,7 +64,7 @@ public function testWithSingleName(): void ]); $this->assertEquals($expected->counters, $results->counters); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -92,7 +92,7 @@ public function testWithInteger(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -120,7 +120,7 @@ public function testWithFloat(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -147,7 +147,7 @@ public function testWithNull(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -174,7 +174,7 @@ public function testWithBoolean(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -201,7 +201,7 @@ public function testWithString(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -229,7 +229,7 @@ public function testWithArray(): void ); $this->assertEquals($expected->counters, $results->counters); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -258,7 +258,7 @@ public function testWithDate(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -287,7 +287,7 @@ public function testWithDuration(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -321,7 +321,7 @@ public function testWithWGS84_2DPoint(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -355,7 +355,7 @@ public function testWithWGS84_3DPoint(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -388,7 +388,7 @@ public function testWithCartesian2DPoint(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -422,7 +422,7 @@ public function testWithCartesian3DPoint(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -467,7 +467,7 @@ public function testWithNode(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -517,7 +517,7 @@ public function testWithPath(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -550,7 +550,7 @@ public function testWithMap(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } @@ -610,7 +610,7 @@ public function testWithRelationship(): void $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); - $bookmarks = $results->bookmarks ?: []; + $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } } diff --git a/tests/Integration/Neo4jQueryAPIIntegrationTest.php b/tests/Integration/Neo4jQueryAPIIntegrationTest.php index a9ed8ef4..490d6570 100644 --- a/tests/Integration/Neo4jQueryAPIIntegrationTest.php +++ b/tests/Integration/Neo4jQueryAPIIntegrationTest.php @@ -29,9 +29,7 @@ public function setUp(): void public function testParseRunQueryResponse(): void { - $query = 'CREATE (n:TestNode {name: "Test"}) RETURN n'; - $response = $this->api->run($query); - $bookmarks = $response->bookmarks ?? new Bookmarks([]); + $response = $this->api->run('CREATE (n:TestNode {name: "Test"}) RETURN n'); $this->assertEquals(new ResultSet( rows: [ @@ -48,7 +46,7 @@ public function testParseRunQueryResponse(): void propertiesSet: 1, labelsAdded: 1 ), - bookmarks: $bookmarks, + bookmarks: $response->bookmarks, profiledQueryPlan: null, accessMode: AccessMode::WRITE ), $response); diff --git a/tests/Integration/Neo4jTransactionIntegrationTest.php b/tests/Integration/Neo4jTransactionIntegrationTest.php index 66fea130..30dd4163 100644 --- a/tests/Integration/Neo4jTransactionIntegrationTest.php +++ b/tests/Integration/Neo4jTransactionIntegrationTest.php @@ -10,9 +10,6 @@ use PHPUnit\Framework\TestCase; use RuntimeException; -/** - * @api - */ final class Neo4jTransactionIntegrationTest extends TestCase { use CreatesQueryAPI; diff --git a/tests/Integration/ProfiledQueryPlanIntegrationTest.php b/tests/Integration/ProfiledQueryPlanIntegrationTest.php index 56a59aa9..2b39a2e0 100644 --- a/tests/Integration/ProfiledQueryPlanIntegrationTest.php +++ b/tests/Integration/ProfiledQueryPlanIntegrationTest.php @@ -99,6 +99,9 @@ public function testProfileCreateKnowsBidirectionalRelationships(): void $result = $this->api->run($query); $this->assertNotNull($result->profiledQueryPlan, "profiled query plan not found"); $body = file_get_contents(__DIR__ . '/../resources/responses/complex-query-profile.json'); + if ($body === false) { + throw new \UnexpectedValueException('Could not find complex query profile'); + } $mockSack = new MockHandler([ new Response(200, [], $body), ]); diff --git a/tests/Unit/Authentication/BasicAuthenticationUnitTest.php b/tests/Unit/Authentication/BasicAuthenticationUnitTest.php index a3052d4e..683948cf 100644 --- a/tests/Unit/Authentication/BasicAuthenticationUnitTest.php +++ b/tests/Unit/Authentication/BasicAuthenticationUnitTest.php @@ -10,7 +10,7 @@ final class BasicAuthenticationUnitTest extends TestCase { private BasicAuthentication $auth; - private MockObject $requestMock; + private MockObject&RequestInterface $requestMock; #[\Override] protected function setUp(): void diff --git a/tests/Unit/Authentication/BearerAuthenticationUnitTest.php b/tests/Unit/Authentication/BearerAuthenticationUnitTest.php index 0068c473..7a2ed977 100644 --- a/tests/Unit/Authentication/BearerAuthenticationUnitTest.php +++ b/tests/Unit/Authentication/BearerAuthenticationUnitTest.php @@ -3,13 +3,14 @@ namespace Neo4j\QueryAPI\Tests\Unit\Authentication; use Neo4j\QueryAPI\Authentication\BearerAuthentication; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Message\RequestInterface; final class BearerAuthenticationUnitTest extends TestCase { private BearerAuthentication $auth; - private RequestInterface $requestMock; + private RequestInterface&MockObject $requestMock; #[\Override] protected function setUp(): void { diff --git a/tests/Unit/AuthenticationTest.php b/tests/Unit/AuthenticationTest.php index 99fbdb1f..eacea488 100644 --- a/tests/Unit/AuthenticationTest.php +++ b/tests/Unit/AuthenticationTest.php @@ -5,9 +5,6 @@ use Neo4j\QueryAPI\Objects\Authentication; use PHPUnit\Framework\TestCase; -/** - * @api - */ final class AuthenticationTest extends TestCase { public function testBearerToken(): void diff --git a/tests/Unit/Neo4jExceptionUnitTest.php b/tests/Unit/Neo4jExceptionUnitTest.php index bfae1e15..8d15aadf 100644 --- a/tests/Unit/Neo4jExceptionUnitTest.php +++ b/tests/Unit/Neo4jExceptionUnitTest.php @@ -6,9 +6,6 @@ use PHPUnit\Framework\TestCase; use Neo4j\QueryAPI\Exception\Neo4jException; -/** - * @api - */ final class Neo4jExceptionUnitTest extends TestCase { /** diff --git a/tests/Unit/Neo4jQueryAPINewUnitTest.php b/tests/Unit/Neo4jQueryAPINewUnitTest.php index 7649d224..623c123a 100644 --- a/tests/Unit/Neo4jQueryAPINewUnitTest.php +++ b/tests/Unit/Neo4jQueryAPINewUnitTest.php @@ -8,6 +8,7 @@ use Neo4j\QueryAPI\Neo4jRequestFactory; use Neo4j\QueryAPI\ResponseParser; use Neo4j\QueryAPI\Results\ResultSet; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Client\ClientInterface; use Psr\Http\Client\RequestExceptionInterface; @@ -17,11 +18,14 @@ final class Neo4jQueryAPINewUnitTest extends TestCase { private Neo4jQueryAPI $api; - private ClientInterface $clientMock; - private ResponseParser $responseParserMock; - private Neo4jRequestFactory $requestFactoryMock; - private Configuration $configMock; - + private ClientInterface&MockObject $clientMock; + private ResponseParser&MockObject $responseParserMock; + private Neo4jRequestFactory&MockObject $requestFactoryMock; + private Configuration&MockObject $configMock; + + /** + * @psalm-suppress InvalidPropertyAssignmentValue + */ #[\Override] protected function setUp(): void { @@ -46,7 +50,8 @@ public function testLoginCreatesInstance(): void public function testGetConfigReturnsCorrectConfig(): void { - $this->assertSame($this->configMock, $this->api->getConfig()); + $config = $this->api->getConfig(); + $this->assertEquals($this->configMock, $config); } public function testRunExecutesQueryAndReturnsResultSet(): void @@ -82,7 +87,7 @@ public function testHandleRequestExceptionThrowsNeo4jException(): void $this->invokeMethod($this->api, 'handleRequestException', [$mockException]); } - private function invokeMethod($object, string $methodName, array $parameters = []): array + private function invokeMethod(Neo4jQueryAPI $object, string $methodName, array $parameters = []): array { $reflection = new \ReflectionClass(get_class($object)); $method = $reflection->getMethod($methodName); diff --git a/tests/Unit/Neo4jQueryAPIUnitTest.php b/tests/Unit/Neo4jQueryAPIUnitTest.php index f1ce49af..1080a947 100644 --- a/tests/Unit/Neo4jQueryAPIUnitTest.php +++ b/tests/Unit/Neo4jQueryAPIUnitTest.php @@ -21,13 +21,8 @@ use RuntimeException; use Neo4j\QueryAPI\Configuration; -/** - * @api - */ final class Neo4jQueryAPIUnitTest extends TestCase { - private OGM $ogm; - protected string $address; protected ResponseParser $parser; @@ -40,8 +35,7 @@ protected function setUp(): void $address = getenv('NEO4J_ADDRESS'); $this->address = is_string($address) ? $address : ''; - $this->ogm = new OGM(); - $this->parser = new ResponseParser($this->ogm); + $this->parser = new ResponseParser(new OGM()); } public function testCorrectClientSetup(): void diff --git a/tests/Unit/Neo4jRequestFactoryTest.php b/tests/Unit/Neo4jRequestFactoryTest.php index a0355ffb..9c956049 100644 --- a/tests/Unit/Neo4jRequestFactoryTest.php +++ b/tests/Unit/Neo4jRequestFactoryTest.php @@ -2,13 +2,10 @@ namespace Neo4j\QueryAPI\Tests\Unit; -use Exception; -use Neo4j\QueryAPI\Authentication\AuthenticateInterface; -use Neo4j\QueryAPI\Authentication\NoAuth; use Neo4j\QueryAPI\Configuration; -use Nyholm\Psr7\Factory\Psr17Factory; +use Override; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; -use Psr\Http\Message\RequestInterface; use Psr\Http\Message\RequestFactoryInterface; use Psr\Http\Message\StreamFactoryInterface; use GuzzleHttp\Psr7\Request; @@ -17,21 +14,16 @@ use Neo4j\QueryAPI\Objects\Authentication; use RuntimeException; - -class Neo4jRequestFactoryTest extends TestCase +final class Neo4jRequestFactoryTest extends TestCase { - private RequestFactoryInterface&\PHPUnit\Framework\MockObject\MockObject $psr17Factory; - private StreamFactoryInterface&\PHPUnit\Framework\MockObject\MockObject $streamFactory; - + private RequestFactoryInterface&MockObject $psr17Factory; + private StreamFactoryInterface&MockObject $streamFactory; private string $address = ''; private string $authHeader = ''; - /** - * @throws Exception - */ - #[\Override] + #[Override] protected function setUp(): void { parent::setUp(); @@ -45,9 +37,6 @@ protected function setUp(): void $this->authHeader = $auth->getHeader(); } - /** - * Test for buildRunQueryRequest - */ public function testBuildRunQueryRequest(): void { $cypher = 'MATCH (n) RETURN n'; @@ -87,9 +76,6 @@ public function testBuildRunQueryRequest(): void } - /** - * Test for buildBeginTransactionRequest - */ public function testBuildBeginTransactionRequest(): void { $database = 'neo4j'; @@ -116,9 +102,6 @@ public function testBuildBeginTransactionRequest(): void $this->assertEquals($uri, (string) $request->getUri()); } - /** - * Test for buildCommitRequest - */ public function testBuildCommitRequest(): void { $database = 'neo4j'; @@ -146,9 +129,6 @@ public function testBuildCommitRequest(): void $this->assertEquals($uri, (string) $request->getUri()); } - /** - * Test for buildRollbackRequest - */ public function testBuildRollbackRequest(): void { $database = 'neo4j'; @@ -176,9 +156,6 @@ public function testBuildRollbackRequest(): void $this->assertEquals($uri, (string) $request->getUri()); } - /** - * Test for createRequest method with headers and body - */ public function testCreateRequestWithHeadersAndBody(): void { $cypher = 'MATCH (n) RETURN n'; @@ -219,9 +196,6 @@ public function testCreateRequestWithHeadersAndBody(): void } - /** - * Test createRequest without Authorization header - */ public function testCreateRequestWithoutAuthorizationHeader(): void { $cypher = 'MATCH (n) RETURN n'; diff --git a/tests/Unit/OGMUnitTest.php b/tests/Unit/OGMUnitTest.php index 003d97cd..68028e7a 100644 --- a/tests/Unit/OGMUnitTest.php +++ b/tests/Unit/OGMUnitTest.php @@ -9,9 +9,6 @@ use Neo4j\QueryAPI\OGM; use PHPUnit\Framework\TestCase; -/** - * @api - */ final class OGMUnitTest extends TestCase { private OGM $ogm; diff --git a/tests/Unit/ResponseParserUnitTest.php b/tests/Unit/ResponseParserUnitTest.php index 5230eb01..bfee3a2b 100644 --- a/tests/Unit/ResponseParserUnitTest.php +++ b/tests/Unit/ResponseParserUnitTest.php @@ -7,6 +7,7 @@ use Neo4j\QueryAPI\OGM; use Neo4j\QueryAPI\ResponseParser; use Neo4j\QueryAPI\Results\ResultSet; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\StreamInterface; @@ -15,15 +16,13 @@ final class ResponseParserUnitTest extends TestCase { private ResponseParser $parser; - private OGM $ogmMock; - private ResponseInterface $responseMock; - private StreamInterface $streamMock; + private ResponseInterface&MockObject $responseMock; + private StreamInterface&MockObject $streamMock; #[\Override] protected function setUp(): void { - $this->ogmMock = $this->createMock(OGM::class); - $this->parser = new ResponseParser($this->ogmMock); + $this->parser = new ResponseParser($this->createMock(OGM::class)); $this->responseMock = $this->createMock(ResponseInterface::class); $this->streamMock = $this->createMock(StreamInterface::class); } diff --git a/tests/Unit/ResultRowTest.php b/tests/Unit/ResultRowTest.php index 5289a60e..f14f72f7 100644 --- a/tests/Unit/ResultRowTest.php +++ b/tests/Unit/ResultRowTest.php @@ -7,9 +7,6 @@ use BadMethodCallException; use PHPUnit\Framework\TestCase; -/** - * @api - */ final class ResultRowTest extends TestCase { public function testArrayAccessGet(): void @@ -23,7 +20,6 @@ public function testArrayAccessGet(): void $this->assertEquals('Bob', $row['name']); $this->assertEquals(20, $row['age']); } - /** @psalm-suppress UnusedVariable */ public function testArrayAccessInvalidKey(): void { $row = new ResultRow([ @@ -34,7 +30,7 @@ public function testArrayAccessInvalidKey(): void $this->expectException(OutOfBoundsException::class); $this->expectExceptionMessage('Column phone not found.'); - $value = $row['phone']; + $row['phone']; } public function testArrayAccessSetThrowsException(): void diff --git a/tests/Unit/TransactionUnitTest.php b/tests/Unit/TransactionUnitTest.php index b4827bab..c00c2c01 100644 --- a/tests/Unit/TransactionUnitTest.php +++ b/tests/Unit/TransactionUnitTest.php @@ -7,9 +7,11 @@ use Neo4j\QueryAPI\Results\ResultSet; use Neo4j\QueryAPI\ResponseParser; use Neo4j\QueryAPI\Neo4jRequestFactory; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Client\ClientInterface; use Psr\Http\Client\RequestExceptionInterface; +use Psr\Http\Message\ResponseFactoryInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\StreamInterface; @@ -17,11 +19,11 @@ final class TransactionUnitTest extends TestCase { private Transaction $transaction; - private $clientMock; - private $responseParserMock; - private $requestFactoryMock; - private $requestMock; - private $responseMock; + private MockObject&ClientInterface $clientMock; + private MockObject&ResponseParser $responseParserMock; + private MockObject&Neo4jRequestFactory $requestFactoryMock; + private MockObject&RequestInterface $requestMock; + private MockObject&ResponseInterface $responseMock; private string $transactionId = 'tx123'; private string $clusterAffinity = 'LEADER'; @@ -29,7 +31,9 @@ final class TransactionUnitTest extends TestCase protected function setUp(): void { $this->clientMock = $this->createMock(ClientInterface::class); + /** @psalm-suppress InvalidPropertyAssignmentValue */ $this->responseParserMock = $this->createMock(ResponseParser::class); + /** @psalm-suppress InvalidPropertyAssignmentValue */ $this->requestFactoryMock = $this->createMock(Neo4jRequestFactory::class); $this->requestMock = $this->createMock(RequestInterface::class); $this->responseMock = $this->createMock(ResponseInterface::class); From 57307b0120c327094b4e67706c95a82c7b94caf1 Mon Sep 17 00:00:00 2001 From: Ghlen Nagels Date: Fri, 28 Feb 2025 17:42:14 +0530 Subject: [PATCH 37/45] add coverage options --- composer.json | 6 ++++-- phpunit.dist.xml | 38 ++++++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/composer.json b/composer.json index aa7f3dda..bf6345d1 100644 --- a/composer.json +++ b/composer.json @@ -52,8 +52,10 @@ "cs": "vendor/bin/php-cs-fixer fix --dry-run --diff --allow-risky=yes", "cs:fix": "vendor/bin/php-cs-fixer fix --allow-risky=yes", "psalm": "vendor/bin/psalm --no-cache --show-info=true", - "coverage": "php -dpcov.enabled=1 -dpcov.directory=. vendor/bin/phpunit --coverage-html coverage", - "phpunit" : "vendor/bin/phpunit" + "all-tests" : "vendor/bin/phpunit --configuration=phpunit.xml --testsuite=All ./tests/", + "unit-tests" : "vendor/bin/phpunit --configuration=phpunit.xml --testsuite=Unit", + "integration-tests" : "vendor/bin/phpunit --configuration=phpunit.xml --testsuite=Integration", + "phpunit-with-coverage" : "XDEBUG_MODE=coverage php -d memory_limit=-1 vendor/bin/phpunit --configuration=phpunit.xml --testsuite=All --coverage-filter=src tests" } } diff --git a/phpunit.dist.xml b/phpunit.dist.xml index f4f2a5ac..7fc42549 100644 --- a/phpunit.dist.xml +++ b/phpunit.dist.xml @@ -2,29 +2,39 @@ - - ./tests + ./tests + + + ./tests/Unit + + + ./tests/Integration - - - src - + + + + + + + - - + - + From f0d214db3aedd028cceec760710783079b52590d Mon Sep 17 00:00:00 2001 From: Ghlen Nagels Date: Fri, 28 Feb 2025 17:44:42 +0530 Subject: [PATCH 38/45] explicitly mark test folder in phpunit tests --- .github/workflows/test.yml | 2 +- .github/workflows/testaura.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2184c47d..9c2caaa4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -51,4 +51,4 @@ jobs: NEO4J_ADDRESS: "http://localhost:7474" NEO4J_USERNAME: "neo4j" NEO4J_PASSWORD: "password" - run: vendor/bin/phpunit --configuration phpunit.dist.xml + run: vendor/bin/phpunit --configuration phpunit.dist.xml ./tests diff --git a/.github/workflows/testaura.yml b/.github/workflows/testaura.yml index d08d5bfa..f0dabef4 100644 --- a/.github/workflows/testaura.yml +++ b/.github/workflows/testaura.yml @@ -41,4 +41,4 @@ jobs: NEO4J_ADDRESS: ${{ secrets.NEO4J_ADDRESS }} NEO4J_USERNAME: ${{ secrets.NEO4J_USERNAME }} NEO4J_PASSWORD: ${{ secrets.NEO4J_PASSWORD }} - run: vendor/bin/phpunit --configuration phpunit.dist.xml + run: vendor/bin/phpunit --configuration phpunit.dist.xml ./tests From 30916baa2970804b162d54a8efbf5453369d8844 Mon Sep 17 00:00:00 2001 From: Ghlen Nagels Date: Fri, 28 Feb 2025 17:47:18 +0530 Subject: [PATCH 39/45] remove coverage filter from phpunit xml --- phpunit.dist.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/phpunit.dist.xml b/phpunit.dist.xml index 7fc42549..b686e6cf 100644 --- a/phpunit.dist.xml +++ b/phpunit.dist.xml @@ -23,15 +23,6 @@ - - - - - - - - - From 26da2a2eb2a4955bd5c7ca8a28a09072ccb5192f Mon Sep 17 00:00:00 2001 From: pratikshazalte69 Date: Mon, 3 Mar 2025 12:11:58 +0530 Subject: [PATCH 40/45] winp --- .phpunit.cache/test-results | 1 + phpunit.dist.xml | 3 ++- phpunit.xml.bak | 22 +++++++++++++++++++ .../BasicAuthenticationUnitTest.php | 1 + 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100755 .phpunit.cache/test-results create mode 100644 phpunit.xml.bak diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results new file mode 100755 index 00000000..cb50fcac --- /dev/null +++ b/.phpunit.cache/test-results @@ -0,0 +1 @@ +{"version":1,"defects":{"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":7},"times":{"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetTypeReturnsBasic":0,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":0.638,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithReadAccessMode":0.608,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testReadModeWithWriteQuery":0.618,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testWriteModeWithReadQuery":0.609,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testCreateBookmarks":1.022,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testInvalidBookmarkThrowsException":0.617,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithNode":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithSimpleRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithPath":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testParseRunQueryResponse":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryHandling":0.152,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testCounters":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryException":0.307,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithValidConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithNullConfiguration":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testConfigOnly":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionCommit":1.126,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionRollback":1.436,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":1.025,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndRollback":1.637,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateQueryExistence":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateMovieQueryExistence":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateFriendsQueryExistence":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateKnowsBidirectionalRelationships":1.032,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateActedInRelationships":0.605,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testChildQueryPlanExistence":0.614,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetTypeReturnsBearer":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testAuthenticateReturnsUnmodifiedRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetHeaderReturnsEmptyString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetTypeReturnsNoAuth":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBearerToken":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBasicAuthentication":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testFallbackToEnvironmentVariables":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructor":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructorWithMissingErrorDetails":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithMissingDetails":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithNullResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testExceptionChaining":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testLoginCreatesInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testGetConfigReturnsCorrectConfig":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testRunExecutesQueryAndReturnsResultSet":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testHandleRequestExceptionThrowsNeo4jException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testCorrectClientSetup":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testRunSuccess":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseValidResponse":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseInvalidResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testGetAccessMode":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseBookmarks":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRunQueryRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildBeginTransactionRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildCommitRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithHeadersAndBody":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithoutAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapInteger":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapFloat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapBoolean":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNull":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNode":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapRelationship":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapPoint":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testParseWKT":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidWKTThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidPointFormatThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnErrorResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnInvalidData":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseHandlesProfiledQueryPlan":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessGet":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessSetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetThrowsExceptionForInvalidKey":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetExists":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetSetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testCount":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testIterator":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRunExecutesQuerySuccessfully":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testHandleRequestExceptionWithoutResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testCommitSendsCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRollbackSendsRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBasicReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testFromEnvironmentReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testNoAuthReturnsNoAuthInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBearerReturnsBearerAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testGetBookmarksReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksMergesUniqueValues":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksDoesNothingWhenNullIsPassed":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testCountReturnsCorrectNumber":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testJsonSerializeReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetLabelsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testToArrayReturnsCorrectStructure":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetNodesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetRelationshipsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetXReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetYReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetZReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetSridReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testToStringReturnsCorrectFormat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetTypeReturnsCorrectType":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testEmptyPropertiesByDefault":0}} \ No newline at end of file diff --git a/phpunit.dist.xml b/phpunit.dist.xml index b686e6cf..bf720a43 100644 --- a/phpunit.dist.xml +++ b/phpunit.dist.xml @@ -10,7 +10,8 @@ failOnRisky="true" failOnSkipped="true" failOnWarning="true" -> + displayDetailsOnTestsThatTriggerDeprecations="true" + displayDetailsOnPhpunitDeprecations="true"> ./tests diff --git a/phpunit.xml.bak b/phpunit.xml.bak new file mode 100644 index 00000000..77fcd308 --- /dev/null +++ b/phpunit.xml.bak @@ -0,0 +1,22 @@ + + + + + ./tests + + + + + + src + + + + + + + + + + + \ No newline at end of file diff --git a/tests/Unit/Authentication/BasicAuthenticationUnitTest.php b/tests/Unit/Authentication/BasicAuthenticationUnitTest.php index 683948cf..a4903c18 100644 --- a/tests/Unit/Authentication/BasicAuthenticationUnitTest.php +++ b/tests/Unit/Authentication/BasicAuthenticationUnitTest.php @@ -12,6 +12,7 @@ final class BasicAuthenticationUnitTest extends TestCase private BasicAuthentication $auth; private MockObject&RequestInterface $requestMock; + #[\Override] protected function setUp(): void { From c1ba3cf1b4d22201af9f163bf6a856b381dd3422 Mon Sep 17 00:00:00 2001 From: pratikshazalte69 Date: Mon, 3 Mar 2025 12:47:59 +0530 Subject: [PATCH 41/45] Deprecations fixed --- .phpunit.cache/test-results | 2 +- docker-compose.yml | 3 + src/Objects/ProfiledQueryPlan.php | 2 +- src/ResponseParser.php | 5 +- src/Results/ResultSet.php | 7 +- .../Integration/DataTypesIntegrationTest.php | 229 +++++++++--------- 6 files changed, 123 insertions(+), 125 deletions(-) diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results index cb50fcac..eadf2d6d 100755 --- a/.phpunit.cache/test-results +++ b/.phpunit.cache/test-results @@ -1 +1 @@ -{"version":1,"defects":{"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":7},"times":{"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetTypeReturnsBasic":0,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":0.638,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithReadAccessMode":0.608,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testReadModeWithWriteQuery":0.618,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testWriteModeWithReadQuery":0.609,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testCreateBookmarks":1.022,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testInvalidBookmarkThrowsException":0.617,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithNode":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithSimpleRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithPath":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testParseRunQueryResponse":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryHandling":0.152,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testCounters":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryException":0.307,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithValidConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithNullConfiguration":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testConfigOnly":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionCommit":1.126,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionRollback":1.436,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":1.025,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndRollback":1.637,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateQueryExistence":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateMovieQueryExistence":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateFriendsQueryExistence":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateKnowsBidirectionalRelationships":1.032,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateActedInRelationships":0.605,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testChildQueryPlanExistence":0.614,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetTypeReturnsBearer":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testAuthenticateReturnsUnmodifiedRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetHeaderReturnsEmptyString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetTypeReturnsNoAuth":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBearerToken":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBasicAuthentication":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testFallbackToEnvironmentVariables":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructor":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructorWithMissingErrorDetails":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithMissingDetails":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithNullResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testExceptionChaining":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testLoginCreatesInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testGetConfigReturnsCorrectConfig":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testRunExecutesQueryAndReturnsResultSet":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testHandleRequestExceptionThrowsNeo4jException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testCorrectClientSetup":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testRunSuccess":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseValidResponse":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseInvalidResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testGetAccessMode":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseBookmarks":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRunQueryRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildBeginTransactionRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildCommitRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithHeadersAndBody":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithoutAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapInteger":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapFloat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapBoolean":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNull":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNode":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapRelationship":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapPoint":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testParseWKT":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidWKTThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidPointFormatThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnErrorResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnInvalidData":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseHandlesProfiledQueryPlan":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessGet":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessSetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetThrowsExceptionForInvalidKey":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetExists":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetSetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testCount":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testIterator":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRunExecutesQuerySuccessfully":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testHandleRequestExceptionWithoutResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testCommitSendsCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRollbackSendsRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBasicReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testFromEnvironmentReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testNoAuthReturnsNoAuthInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBearerReturnsBearerAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testGetBookmarksReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksMergesUniqueValues":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksDoesNothingWhenNullIsPassed":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testCountReturnsCorrectNumber":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testJsonSerializeReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetLabelsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testToArrayReturnsCorrectStructure":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetNodesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetRelationshipsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetXReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetYReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetZReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetSridReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testToStringReturnsCorrectFormat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetTypeReturnsCorrectType":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testEmptyPropertiesByDefault":0}} \ No newline at end of file +{"version":1,"defects":{"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":7,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":8,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":8},"times":{"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.004,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetTypeReturnsBasic":0,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":0.632,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithReadAccessMode":0.598,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testReadModeWithWriteQuery":0.628,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testWriteModeWithReadQuery":0.508,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testCreateBookmarks":1.023,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testInvalidBookmarkThrowsException":0.57,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":0.553,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":0.593,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":0.53,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":0.62,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":0.607,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":0.616,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":0.712,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":0.494,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":0.48,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":0.66,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":0.508,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithNode":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithSimpleRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithPath":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testParseRunQueryResponse":0.204,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryHandling":0.206,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testCounters":0.167,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryException":0.205,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithValidConfiguration":0.002,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithNullConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testConfigOnly":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionCommit":1.231,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionRollback":1.388,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":1.023,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndRollback":1.639,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateQueryExistence":0.61,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateMovieQueryExistence":0.653,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateFriendsQueryExistence":0.572,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateKnowsBidirectionalRelationships":1.132,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateActedInRelationships":0.606,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testChildQueryPlanExistence":0.51,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetTypeReturnsBearer":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testAuthenticateReturnsUnmodifiedRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetHeaderReturnsEmptyString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetTypeReturnsNoAuth":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBearerToken":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBasicAuthentication":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testFallbackToEnvironmentVariables":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructor":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructorWithMissingErrorDetails":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithMissingDetails":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithNullResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testExceptionChaining":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testLoginCreatesInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testGetConfigReturnsCorrectConfig":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testRunExecutesQueryAndReturnsResultSet":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testHandleRequestExceptionThrowsNeo4jException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testCorrectClientSetup":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testRunSuccess":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseValidResponse":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseInvalidResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testGetAccessMode":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseBookmarks":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRunQueryRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildBeginTransactionRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildCommitRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithHeadersAndBody":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithoutAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapInteger":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapFloat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapBoolean":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNull":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNode":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapRelationship":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapPoint":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testParseWKT":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidWKTThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidPointFormatThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnErrorResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnInvalidData":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseHandlesProfiledQueryPlan":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessGet":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessSetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetThrowsExceptionForInvalidKey":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetExists":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetSetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testCount":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testIterator":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRunExecutesQuerySuccessfully":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testHandleRequestExceptionWithoutResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testCommitSendsCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRollbackSendsRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBasicReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testFromEnvironmentReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testNoAuthReturnsNoAuthInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBearerReturnsBearerAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testGetBookmarksReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksMergesUniqueValues":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksDoesNothingWhenNullIsPassed":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testCountReturnsCorrectNumber":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testJsonSerializeReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetLabelsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testToArrayReturnsCorrectStructure":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetNodesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetRelationshipsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetXReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetYReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetZReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetSridReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testToStringReturnsCorrectFormat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetTypeReturnsCorrectType":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testEmptyPropertiesByDefault":0}} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 9c10a097..e8668607 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,9 @@ services: container_name: php-app volumes: - .:/var/www + environment: + - FAIL_ON_DEPRECATION=1 + - FAIL_ON_PHPUNIT_DEPRECATION=1 networks: - mynetwork diff --git a/src/Objects/ProfiledQueryPlan.php b/src/Objects/ProfiledQueryPlan.php index 031861b2..5c81062d 100644 --- a/src/Objects/ProfiledQueryPlan.php +++ b/src/Objects/ProfiledQueryPlan.php @@ -5,6 +5,7 @@ final class ProfiledQueryPlan { public function __construct( + public readonly ProfiledQueryPlanArguments $arguments, public readonly int $dbHits = 0, public readonly int $records = 0, public readonly bool $hasPageCacheStats = false, @@ -13,7 +14,6 @@ public function __construct( public readonly float $pageCacheHitRatio = 0.0, public readonly int $time = 0, public readonly string $operatorType = '', - public readonly ProfiledQueryPlanArguments $arguments, public readonly array $children = [], public readonly array $identifiers = [] ) { diff --git a/src/ResponseParser.php b/src/ResponseParser.php index 747ca965..042b375f 100644 --- a/src/ResponseParser.php +++ b/src/ResponseParser.php @@ -29,7 +29,7 @@ public function parseRunQueryResponse(ResponseInterface $response): ResultSet $profiledQueryPlan = $this->buildProfiledQueryPlan($data['profiledQueryPlan'] ?? null); $accessMode = $this->getAccessMode($data['accessMode'] ?? ''); - return new ResultSet($rows, $counters, $bookmarks, $profiledQueryPlan, $accessMode); + return new ResultSet($rows, $bookmarks, $accessMode,$counters,$profiledQueryPlan); } private function validateAndDecodeResponse(ResponseInterface $response): array @@ -153,6 +153,7 @@ private function buildProfiledQueryPlan(mixed $queryPlanData): ?ProfiledQueryPla $children = array_map(fn (mixed $child): ?ProfiledQueryPlan => $this->buildProfiledQueryPlan($child), $queryPlanData['children'] ?? []); return new ProfiledQueryPlan( + $queryArguments, $queryPlanData['dbHits'] ?? 0, $queryPlanData['records'] ?? 0, $queryPlanData['hasPageCacheStats'] ?? false, @@ -161,9 +162,9 @@ private function buildProfiledQueryPlan(mixed $queryPlanData): ?ProfiledQueryPla $queryPlanData['pageCacheHitRatio'] ?? 0.0, $queryPlanData['time'] ?? 0, $queryPlanData['operatorType'] ?? '', - $queryArguments, $children, $queryPlanData['identifiers'] ?? [] ); + } } diff --git a/src/Results/ResultSet.php b/src/Results/ResultSet.php index 5317ee2d..658ed182 100644 --- a/src/Results/ResultSet.php +++ b/src/Results/ResultSet.php @@ -22,10 +22,11 @@ final class ResultSet implements IteratorAggregate, Countable */ public function __construct( public readonly array $rows, - public readonly ?ResultCounters $counters = null, public readonly Bookmarks $bookmarks, - public readonly ?ProfiledQueryPlan $profiledQueryPlan, - public readonly AccessMode $accessMode + public readonly AccessMode $accessMode, + public readonly ?ResultCounters $counters = null, + public readonly ?ProfiledQueryPlan $profiledQueryPlan=null + ) { } diff --git a/tests/Integration/DataTypesIntegrationTest.php b/tests/Integration/DataTypesIntegrationTest.php index 964eb01f..81c82972 100644 --- a/tests/Integration/DataTypesIntegrationTest.php +++ b/tests/Integration/DataTypesIntegrationTest.php @@ -33,10 +33,10 @@ public function testWithExactNames(): void new ResultRow(['n.name' => 'bob1']), new ResultRow(['n.name' => 'alicy']), ], - new ResultCounters(), new Bookmarks([]), - null, - AccessMode::WRITE + AccessMode::WRITE, + new ResultCounters(), + null ); $results = $this->api->run('MATCH (n:Person) WHERE n.name IN $names RETURN n.name', [ @@ -53,10 +53,10 @@ public function testWithSingleName(): void [ new ResultRow(['n.name' => 'bob1']), ], - new ResultCounters(), new Bookmarks([]), - null, - AccessMode::WRITE + AccessMode::WRITE, + new ResultCounters(), + null ); $results = $this->api->run('MATCH (n:Person) WHERE n.name = $name RETURN n.name LIMIT 1', [ @@ -75,15 +75,15 @@ public function testWithInteger(): void [ new ResultRow(['n.age' => 30]), ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, labelsAdded: 1, ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run('CREATE (n:Person {age: $age}) RETURN n.age', [ @@ -103,15 +103,15 @@ public function testWithFloat(): void [ new ResultRow(['n.height' => 1.75]), ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, labelsAdded: 1, ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run('CREATE (n:Person {height: $height}) RETURN n.height', [ @@ -124,21 +124,22 @@ public function testWithFloat(): void $this->assertCount(1, $bookmarks); } + public function testWithNull(): void { $expected = new ResultSet( [ new ResultRow(['n.middleName' => null]), ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 0, labelsAdded: 1, ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run('CREATE (n:Person {middleName: $middleName}) RETURN n.middleName', [ @@ -151,21 +152,22 @@ public function testWithNull(): void $this->assertCount(1, $bookmarks); } + public function testWithBoolean(): void { $expected = new ResultSet( [ new ResultRow(['n.isActive' => true]), ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, labelsAdded: 1, ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run('CREATE (n:Person {isActive: $isActive}) RETURN n.isActive', [ @@ -178,21 +180,22 @@ public function testWithBoolean(): void $this->assertCount(1, $bookmarks); } + public function testWithString(): void { $expected = new ResultSet( [ new ResultRow(['n.name' => 'Alice']), ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, labelsAdded: 1, ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run('CREATE (n:Person {name: $name}) RETURN n.name', [ @@ -205,6 +208,7 @@ public function testWithString(): void $this->assertCount(1, $bookmarks); } + public function testWithArray(): void { $expected = new ResultSet( @@ -212,15 +216,15 @@ public function testWithArray(): void new ResultRow(['n.name' => 'bob1']), new ResultRow(['n.name' => 'alicy']) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: false, nodesCreated: 0, propertiesSet: 0, labelsAdded: 0, ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -233,22 +237,22 @@ public function testWithArray(): void $this->assertCount(1, $bookmarks); } + public function testWithDate(): void { $expected = new ResultSet( [ new ResultRow(['n.date' => '2024-12-11T11:00:00Z']) - ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, - labelsAdded: 1, + labelsAdded: 1 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -266,23 +270,22 @@ public function testWithDuration(): void { $expected = new ResultSet( [ - new ResultRow(['n.duration' => 'P14DT16H12M']), - + new ResultRow(['n.duration' => 'P14DT16H12M']) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, - labelsAdded: 1, + labelsAdded: 1 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( 'CREATE (n:Person {duration: duration($duration)}) RETURN n.duration', - ['duration' => 'P14DT16H12M'], + ['duration' => 'P14DT16H12M'] ); $this->assertEquals($expected->counters, $results->counters); @@ -295,17 +298,17 @@ public function testWithWGS84_2DPoint(): void { $expected = new ResultSet( [ - new ResultRow(['n.Point' => 'SRID=4326;POINT (1.2 3.4)']), + new ResultRow(['n.Point' => 'SRID=4326;POINT (1.2 3.4)']) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, - labelsAdded: 1, + labelsAdded: 1 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -314,11 +317,11 @@ public function testWithWGS84_2DPoint(): void 'Point' => [ 'longitude' => 1.2, 'latitude' => 3.4, - 'crs' => 'wgs-84', - ]] + 'crs' => 'wgs-84' + ] + ] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; @@ -329,17 +332,17 @@ public function testWithWGS84_3DPoint(): void { $expected = new ResultSet( [ - new ResultRow(['n.Point' => new Point(1.2, 3.4, 4.2, 4979)]), + new ResultRow(['n.Point' => new Point(1.2, 3.4, 4.2, 4979)]) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, - labelsAdded: 1, + labelsAdded: 1 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -348,11 +351,10 @@ public function testWithWGS84_3DPoint(): void 'longitude' => 1.2, 'latitude' => 3.4, 'height' => 4.2, - 'srid' => 4979, + 'srid' => 4979 ] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; @@ -363,17 +365,17 @@ public function testWithCartesian2DPoint(): void { $expected = new ResultSet( [ - new ResultRow(['n.Point' => new Point(10.5, 20.7, null, 7203)]), + new ResultRow(['n.Point' => new Point(10.5, 20.7, null, 7203)]) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, - labelsAdded: 1, + labelsAdded: 1 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -381,11 +383,10 @@ public function testWithCartesian2DPoint(): void [ 'x' => 10.5, 'y' => 20.7, - 'srid' => 7203, + 'srid' => 7203 ] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; @@ -396,17 +397,17 @@ public function testWithCartesian3DPoint(): void { $expected = new ResultSet( [ - new ResultRow(['n.Point' => new Point(10.5, 20.7, 30.9, 9157)]), + new ResultRow(['n.Point' => new Point(10.5, 20.7, 30.9, 9157)]) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 1, - labelsAdded: 1, + labelsAdded: 1 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -415,11 +416,10 @@ public function testWithCartesian3DPoint(): void 'x' => 10.5, 'y' => 20.7, 'z' => 30.9, - 'srid' => 9157, + 'srid' => 9157 ] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; @@ -440,19 +440,18 @@ public function testWithNode(): void 'labels' => [ 0 => 'Person' ] - ] - ]), + ]) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 1, propertiesSet: 3, - labelsAdded: 1, + labelsAdded: 1 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -460,11 +459,10 @@ public function testWithNode(): void [ 'name' => 'Ayush', 'age' => 30, - 'location' => 'New York', + 'location' => 'New York' ] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; @@ -475,71 +473,67 @@ public function testWithPath(): void { $expected = new ResultSet( [ - new ResultRow(['node1' => [ - 'labels' => ['Person'], - 'properties' => [ - 'name' => 'A', + new ResultRow([ + 'node1' => [ + 'labels' => ['Person'], + 'properties' => [ + 'name' => 'A' + ] ], - ], 'node2' => [ 'labels' => ['Person'], 'properties' => [ - 'name' => 'B', - ], + 'name' => 'B' + ] ], - 'relationshipTypes' => ['FRIENDS'], - ]), + 'relationshipTypes' => ['FRIENDS'] + ]) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 2, propertiesSet: 2, relationshipsCreated: 1, - labelsAdded: 2, + labelsAdded: 2 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( 'CREATE (a:Person {name: $name1}), (b:Person {name: $name2}), - (a)-[r:FRIENDS]->(b) - RETURN {labels: labels(a), properties: properties(a)} AS node1, - {labels: labels(b), properties: properties(b)} AS node2, - collect(type(r)) AS relationshipTypes', + (a)-[r:FRIENDS]->(b) + RETURN {labels: labels(a), properties: properties(a)} AS node1, + {labels: labels(b), properties: properties(b)} AS node2, + collect(type(r)) AS relationshipTypes', [ 'name1' => 'A', - 'name2' => 'B', + 'name2' => 'B' ] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } - public function testWithMap(): void { $expected = new ResultSet( [ - new ResultRow(['map' => [ - 'hello' => 'hello', - ], - ]), + new ResultRow(['map' => ['hello' => 'hello']]) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: false, nodesCreated: 0, propertiesSet: 0, - labelsAdded: 0, + labelsAdded: 0 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( @@ -547,7 +541,6 @@ public function testWithMap(): void [] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; @@ -564,39 +557,39 @@ public function testWithRelationship(): void 'properties' => [ 'name' => 'Ayush', 'age' => 30, - 'location' => 'New York', - ], + 'location' => 'New York' + ] ], 'node2' => [ 'labels' => ['Person'], 'properties' => [ 'name' => 'John', 'age' => 25, - 'location' => 'Los Angeles', - ], + 'location' => 'Los Angeles' + ] ], - 'relationshipType' => 'FRIEND_OF', - ]), + 'relationshipType' => 'FRIEND_OF' + ]) ], + new Bookmarks([]), + AccessMode::WRITE, new ResultCounters( containsUpdates: true, nodesCreated: 2, propertiesSet: 6, relationshipsCreated: 1, - labelsAdded: 2, + labelsAdded: 2 ), - new Bookmarks([]), - null, - AccessMode::WRITE + null ); $results = $this->api->run( 'CREATE (p1:Person {name: $name1, age: $age1, location: $location1}), - (p2:Person {name: $name2, age: $age2, location: $location2}), - (p1)-[r:FRIEND_OF]->(p2) - RETURN {labels: labels(p1), properties: properties(p1)} AS node1, - {labels: labels(p2), properties: properties(p2)} AS node2, - type(r) AS relationshipType', + (p2:Person {name: $name2, age: $age2, location: $location2}), + (p1)-[r:FRIEND_OF]->(p2) + RETURN {labels: labels(p1), properties: properties(p1)} AS node1, + {labels: labels(p2), properties: properties(p2)} AS node2, + type(r) AS relationshipType', [ 'name1' => 'Ayush', 'age1' => 30, @@ -607,10 +600,10 @@ public function testWithRelationship(): void ] ); - $this->assertEquals($expected->counters, $results->counters); $this->assertEquals(iterator_to_array($expected), iterator_to_array($results)); $bookmarks = $results->bookmarks; $this->assertCount(1, $bookmarks); } + } From 66352902bea61e42c04b02194afc8dcd7b5b112c Mon Sep 17 00:00:00 2001 From: pratikshazalte69 Date: Mon, 3 Mar 2025 12:48:32 +0530 Subject: [PATCH 42/45] Deprecations fixed --- src/ResponseParser.php | 2 +- src/Results/ResultSet.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ResponseParser.php b/src/ResponseParser.php index 042b375f..a018ab50 100644 --- a/src/ResponseParser.php +++ b/src/ResponseParser.php @@ -29,7 +29,7 @@ public function parseRunQueryResponse(ResponseInterface $response): ResultSet $profiledQueryPlan = $this->buildProfiledQueryPlan($data['profiledQueryPlan'] ?? null); $accessMode = $this->getAccessMode($data['accessMode'] ?? ''); - return new ResultSet($rows, $bookmarks, $accessMode,$counters,$profiledQueryPlan); + return new ResultSet($rows, $bookmarks, $accessMode, $counters, $profiledQueryPlan); } private function validateAndDecodeResponse(ResponseInterface $response): array diff --git a/src/Results/ResultSet.php b/src/Results/ResultSet.php index 658ed182..9a373e0f 100644 --- a/src/Results/ResultSet.php +++ b/src/Results/ResultSet.php @@ -25,8 +25,7 @@ public function __construct( public readonly Bookmarks $bookmarks, public readonly AccessMode $accessMode, public readonly ?ResultCounters $counters = null, - public readonly ?ProfiledQueryPlan $profiledQueryPlan=null - + public readonly ?ProfiledQueryPlan $profiledQueryPlan = null ) { } From 2f744a0f49ca1fea28aed68a3efbb2637ee95110 Mon Sep 17 00:00:00 2001 From: pratikshazalte69 Date: Mon, 3 Mar 2025 14:25:43 +0530 Subject: [PATCH 43/45] added a new phunitCoverage.xml file for generating a code coverage report --- .../0d84a93ae86cf9abc682a9a445f69e27 | 1 + .../0dc2a8801d1e00baa2e79dd856ebd50e | 1 + .../131c4cedf17d093063572ca473332fa6 | 1 + .../21a329404661a8eee1701bfc2708d31f | 1 + .../273ba54e95d51e917c6612e5177d2772 | 1 + .../3e6d68289822078b851e7629b220d4f6 | 1 + .../45103b4696278578a5d002f65c524a25 | 1 + .../47573f9c993056e3ab7e76ebbd6d1696 | 1 + .../49b214b86cb03d421cb5ff4f616a3638 | 1 + .../4a60bde4d8dfbb0a82c12400a0bc1e88 | 1 + .../5a4d2c5d29cc306f429a2fd186fb2c88 | 1 + .../74ef3c363d33e17953bf27080a65d757 | 1 + .../7ec168dd8bef4735e30f9bca3818ae51 | 1 + .../7efebc1d072f0f9c831b04d6abf1cfbe | 1 + .../99b9a8434128c921ad46b7eeb56bc9c6 | 1 + .../a15444975b998570db93036d0d82f6cc | 1 + .../ab8cb7ca9fc9aa9d541615db6b6eee71 | 1 + .../c5ce51a0bff1e1b39f54fd66c72e64db | 1 + .../ca3789be13c8cccbb0923d66e6049a9c | 1 + .../d2a4505e258c71d34c46edcf73d567e3 | 1 + .../d348ccaac52c23f4f2efc1d4791c7586 | 1 + .../ed331e7cc26ad75e89b9c3c6e38cfbe7 | 1 + .../f29382a2a2a8d9e39e9da9248b774b3a | 1 + .phpunit.cache/test-results | 2 +- clover.xml | 529 +++ cobertura.xml | 1169 +++++ composer.json | 2 +- coverage.php | Bin 0 -> 589460 bytes crap4j.xml | 906 ++++ phpunitCoverage.xml | 41 + .../AuthenticateInterface.php.xml | 99 + .../BasicAuthentication.php.xml | 612 +++ .../BearerAuthentication.php.xml | 241 ++ xml-coverage/Authentication/NoAuth.php.xml | 173 + xml-coverage/Configuration.php.xml | 238 + xml-coverage/Enums/AccessMode.php.xml | 62 + xml-coverage/Exception/Neo4jException.php.xml | 650 +++ xml-coverage/Neo4jQueryAPI.php.xml | 2070 +++++++++ xml-coverage/Neo4jRequestFactory.php.xml | 1786 ++++++++ xml-coverage/OGM.php.xml | 1963 +++++++++ xml-coverage/Objects/Authentication.php.xml | 620 +++ xml-coverage/Objects/Bookmarks.php.xml | 368 ++ xml-coverage/Objects/Node.php.xml | 202 + xml-coverage/Objects/Path.php.xml | 172 + xml-coverage/Objects/Point.php.xml | 213 + .../Objects/ProfiledQueryPlan.php.xml | 212 + .../ProfiledQueryPlanArguments.php.xml | 354 ++ xml-coverage/Objects/Relationship.php.xml | 187 + xml-coverage/Objects/ResultCounters.php.xml | 285 ++ xml-coverage/ResponseParser.php.xml | 3853 +++++++++++++++++ xml-coverage/Results/ResultRow.php.xml | 589 +++ xml-coverage/Results/ResultSet.php.xml | 359 ++ xml-coverage/Transaction.php.xml | 666 +++ xml-coverage/index.xml | 392 ++ 54 files changed, 19036 insertions(+), 2 deletions(-) create mode 100644 .phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 create mode 100644 .phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e create mode 100644 .phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 create mode 100644 .phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f create mode 100644 .phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 create mode 100644 .phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 create mode 100644 .phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 create mode 100644 .phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 create mode 100644 .phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 create mode 100644 .phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 create mode 100644 .phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 create mode 100644 .phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 create mode 100644 .phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 create mode 100644 .phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe create mode 100644 .phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 create mode 100644 .phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc create mode 100644 .phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 create mode 100644 .phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db create mode 100644 .phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c create mode 100644 .phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 create mode 100644 .phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 create mode 100644 .phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 create mode 100644 .phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a create mode 100644 clover.xml create mode 100644 cobertura.xml create mode 100644 coverage.php create mode 100644 crap4j.xml create mode 100644 phpunitCoverage.xml create mode 100644 xml-coverage/Authentication/AuthenticateInterface.php.xml create mode 100644 xml-coverage/Authentication/BasicAuthentication.php.xml create mode 100644 xml-coverage/Authentication/BearerAuthentication.php.xml create mode 100644 xml-coverage/Authentication/NoAuth.php.xml create mode 100644 xml-coverage/Configuration.php.xml create mode 100644 xml-coverage/Enums/AccessMode.php.xml create mode 100644 xml-coverage/Exception/Neo4jException.php.xml create mode 100644 xml-coverage/Neo4jQueryAPI.php.xml create mode 100644 xml-coverage/Neo4jRequestFactory.php.xml create mode 100644 xml-coverage/OGM.php.xml create mode 100644 xml-coverage/Objects/Authentication.php.xml create mode 100644 xml-coverage/Objects/Bookmarks.php.xml create mode 100644 xml-coverage/Objects/Node.php.xml create mode 100644 xml-coverage/Objects/Path.php.xml create mode 100644 xml-coverage/Objects/Point.php.xml create mode 100644 xml-coverage/Objects/ProfiledQueryPlan.php.xml create mode 100644 xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml create mode 100644 xml-coverage/Objects/Relationship.php.xml create mode 100644 xml-coverage/Objects/ResultCounters.php.xml create mode 100644 xml-coverage/ResponseParser.php.xml create mode 100644 xml-coverage/Results/ResultRow.php.xml create mode 100644 xml-coverage/Results/ResultSet.php.xml create mode 100644 xml-coverage/Transaction.php.xml create mode 100644 xml-coverage/index.xml diff --git a/.phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 b/.phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 new file mode 100644 index 00000000..b3fead12 --- /dev/null +++ b/.phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:0:{}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:16;s:18:"commentLinesOfCode";i:3;s:21:"nonCommentLinesOfCode";i:13;}s:15:"ignoredLinesFor";a:1:{i:0;i:7;}s:17:"executableLinesIn";a:0:{}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e b/.phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e new file mode 100644 index 00000000..6abea5c7 --- /dev/null +++ b/.phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:28:"Neo4j\QueryAPI\Configuration";a:6:{s:4:"name";s:13:"Configuration";s:14:"namespacedName";s:28:"Neo4j\QueryAPI\Configuration";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:9;s:7:"endLine";i:31;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:159:"__construct(string $baseUri, string $database, bool $includeCounters, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode)";s:10:"visibility";s:6:"public";s:9:"startLine";i:22;s:7:"endLine";i:30;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:32;s:18:"commentLinesOfCode";i:11;s:21:"nonCommentLinesOfCode";i:21;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:1:{i:30;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 b/.phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 new file mode 100644 index 00000000..d3a7b440 --- /dev/null +++ b/.phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:32:"Neo4j\QueryAPI\Results\ResultSet";a:6:{s:4:"name";s:9:"ResultSet";s:14:"namespacedName";s:32:"Neo4j\QueryAPI\Results\ResultSet";s:9:"namespace";s:22:"Neo4j\QueryAPI\Results";s:9:"startLine";i:18;s:7:"endLine";i:48;s:7:"methods";a:3:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:226:"__construct(array $rows, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode, ?Neo4j\QueryAPI\Objects\ResultCounters $counters, ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan $profiledQueryPlan)";s:10:"visibility";s:6:"public";s:9:"startLine";i:23;s:7:"endLine";i:30;s:3:"ccn";i:1;}s:11:"getIterator";a:6:{s:10:"methodName";s:11:"getIterator";s:9:"signature";s:26:"getIterator(): Traversable";s:10:"visibility";s:6:"public";s:9:"startLine";i:35;s:7:"endLine";i:39;s:3:"ccn";i:1;}s:5:"count";a:6:{s:10:"methodName";s:5:"count";s:9:"signature";s:12:"count(): int";s:10:"visibility";s:6:"public";s:9:"startLine";i:42;s:7:"endLine";i:46;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:49;s:18:"commentLinesOfCode";i:10;s:21:"nonCommentLinesOfCode";i:39;}s:15:"ignoredLinesFor";a:3:{i:0;i:18;i:1;i:35;i:2;i:42;}s:17:"executableLinesIn";a:5:{i:30;i:1;i:35;i:2;i:38;i:3;i:42;i:4;i:45;i:5;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f b/.phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f new file mode 100644 index 00000000..54b87482 --- /dev/null +++ b/.phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:50:"Neo4j\QueryAPI\Authentication\BearerAuthentication";a:6:{s:4:"name";s:20:"BearerAuthentication";s:14:"namespacedName";s:50:"Neo4j\QueryAPI\Authentication\BearerAuthentication";s:9:"namespace";s:29:"Neo4j\QueryAPI\Authentication";s:9:"startLine";i:7;s:7:"endLine";i:33;s:7:"methods";a:4:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:26:"__construct(string $token)";s:10:"visibility";s:6:"public";s:9:"startLine";i:9;s:7:"endLine";i:11;s:3:"ccn";i:1;}s:12:"authenticate";a:6:{s:10:"methodName";s:12:"authenticate";s:9:"signature";s:91:"authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:13;s:7:"endLine";i:18;s:3:"ccn";i:1;}s:9:"getHeader";a:6:{s:10:"methodName";s:9:"getHeader";s:9:"signature";s:19:"getHeader(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:21;s:7:"endLine";i:25;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:17:"getType(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:28;s:7:"endLine";i:32;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:34;}s:15:"ignoredLinesFor";a:4:{i:0;i:7;i:1;i:13;i:2;i:21;i:3;i:28;}s:17:"executableLinesIn";a:8:{i:11;i:1;i:13;i:2;i:16;i:3;i:17;i:4;i:21;i:5;i:24;i:6;i:28;i:7;i:31;i:8;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 b/.phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 new file mode 100644 index 00000000..a97170c3 --- /dev/null +++ b/.phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:49:"Neo4j\QueryAPI\Authentication\BasicAuthentication";a:6:{s:4:"name";s:19:"BasicAuthentication";s:14:"namespacedName";s:49:"Neo4j\QueryAPI\Authentication\BasicAuthentication";s:9:"namespace";s:29:"Neo4j\QueryAPI\Authentication";s:9:"startLine";i:7;s:7:"endLine";i:39;s:7:"methods";a:4:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:49:"__construct(?string $username, ?string $password)";s:10:"visibility";s:6:"public";s:9:"startLine";i:12;s:7:"endLine";i:16;s:3:"ccn";i:3;}s:12:"authenticate";a:6:{s:10:"methodName";s:12:"authenticate";s:9:"signature";s:91:"authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:19;s:7:"endLine";i:24;s:3:"ccn";i:1;}s:9:"getHeader";a:6:{s:10:"methodName";s:9:"getHeader";s:9:"signature";s:19:"getHeader(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:26;s:7:"endLine";i:30;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:17:"getType(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:34;s:7:"endLine";i:38;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:40;s:18:"commentLinesOfCode";i:3;s:21:"nonCommentLinesOfCode";i:37;}s:15:"ignoredLinesFor";a:4:{i:0;i:7;i:1;i:19;i:2;i:26;i:3;i:34;}s:17:"executableLinesIn";a:9:{i:14;i:3;i:15;i:4;i:19;i:5;i:22;i:6;i:23;i:7;i:26;i:8;i:29;i:9;i:34;i:10;i:37;i:11;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 b/.phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 new file mode 100644 index 00000000..2c6a2b0c --- /dev/null +++ b/.phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:27:"Neo4j\QueryAPI\Objects\Node";a:6:{s:4:"name";s:4:"Node";s:14:"namespacedName";s:27:"Neo4j\QueryAPI\Objects\Node";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:9;s:7:"endLine";i:33;s:7:"methods";a:2:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:45:"__construct(array $labels, array $properties)";s:10:"visibility";s:6:"public";s:9:"startLine";i:17;s:7:"endLine";i:19;s:3:"ccn";i:1;}s:7:"toArray";a:6:{s:10:"methodName";s:7:"toArray";s:9:"signature";s:16:"toArray(): array";s:10:"visibility";s:6:"public";s:9:"startLine";i:25;s:7:"endLine";i:31;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:13;s:21:"nonCommentLinesOfCode";i:21;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:5:{i:19;i:1;i:27;i:2;i:28;i:2;i:29;i:2;i:30;i:2;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 b/.phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 new file mode 100644 index 00000000..2797e0ad --- /dev/null +++ b/.phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:34:"Neo4j\QueryAPI\Neo4jRequestFactory";a:6:{s:4:"name";s:19:"Neo4jRequestFactory";s:14:"namespacedName";s:34:"Neo4j\QueryAPI\Neo4jRequestFactory";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:11;s:7:"endLine";i:90;s:7:"methods";a:7:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:227:"__construct(Psr\Http\Message\RequestFactoryInterface $psr17Factory, Psr\Http\Message\StreamFactoryInterface $streamFactory, Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth)";s:10:"visibility";s:6:"public";s:9:"startLine";i:13;s:7:"endLine";i:19;s:3:"ccn";i:1;}s:20:"buildRunQueryRequest";a:6:{s:10:"methodName";s:20:"buildRunQueryRequest";s:9:"signature";s:90:"buildRunQueryRequest(string $cypher, array $parameters): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:21;s:7:"endLine";i:26;s:3:"ccn";i:1;}s:28:"buildBeginTransactionRequest";a:6:{s:10:"methodName";s:28:"buildBeginTransactionRequest";s:9:"signature";s:65:"buildBeginTransactionRequest(): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:28;s:7:"endLine";i:31;s:3:"ccn";i:1;}s:18:"buildCommitRequest";a:6:{s:10:"methodName";s:18:"buildCommitRequest";s:9:"signature";s:101:"buildCommitRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:33;s:7:"endLine";i:37;s:3:"ccn";i:1;}s:20:"buildRollbackRequest";a:6:{s:10:"methodName";s:20:"buildRollbackRequest";s:9:"signature";s:103:"buildRollbackRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:39;s:7:"endLine";i:44;s:3:"ccn";i:1;}s:26:"buildTransactionRunRequest";a:6:{s:10:"methodName";s:26:"buildTransactionRunRequest";s:9:"signature";s:143:"buildTransactionRunRequest(string $query, array $parameters, string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:46;s:7:"endLine";i:50;s:3:"ccn";i:1;}s:13:"createRequest";a:6:{s:10:"methodName";s:13:"createRequest";s:9:"signature";s:98:"createRequest(string $uri, ?string $cypher, ?array $parameters): Psr\Http\Message\RequestInterface";s:10:"visibility";s:7:"private";s:9:"startLine";i:52;s:7:"endLine";i:89;s:3:"ccn";i:8;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:91;s:18:"commentLinesOfCode";i:1;s:21:"nonCommentLinesOfCode";i:90;}s:15:"ignoredLinesFor";a:1:{i:0;i:11;}s:17:"executableLinesIn";a:28:{i:19;i:1;i:25;i:3;i:30;i:4;i:35;i:5;i:36;i:5;i:41;i:6;i:42;i:6;i:43;i:6;i:48;i:7;i:49;i:7;i:54;i:8;i:56;i:9;i:58;i:10;i:59;i:11;i:62;i:12;i:63;i:13;i:66;i:14;i:67;i:15;i:70;i:16;i:71;i:17;i:75;i:18;i:76;i:19;i:79;i:20;i:80;i:21;i:82;i:22;i:84;i:23;i:86;i:24;i:88;i:25;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 b/.phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 new file mode 100644 index 00000000..29dfb3a7 --- /dev/null +++ b/.phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:35:"Neo4j\QueryAPI\Objects\Relationship";a:6:{s:4:"name";s:12:"Relationship";s:14:"namespacedName";s:35:"Neo4j\QueryAPI\Objects\Relationship";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:9;s:7:"endLine";i:33;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:44:"__construct(string $type, array $properties)";s:10:"visibility";s:6:"public";s:9:"startLine";i:27;s:7:"endLine";i:31;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:15;s:21:"nonCommentLinesOfCode";i:19;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:2:{i:29;i:4;i:30;i:5;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 b/.phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 new file mode 100644 index 00000000..4bd0bf63 --- /dev/null +++ b/.phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:0:{}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:10;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:10;}s:15:"ignoredLinesFor";a:0:{}s:17:"executableLinesIn";a:0:{}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 b/.phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 new file mode 100644 index 00000000..f76b8cfe --- /dev/null +++ b/.phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:18:"Neo4j\QueryAPI\OGM";a:6:{s:4:"name";s:3:"OGM";s:14:"namespacedName";s:18:"Neo4j\QueryAPI\OGM";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:11;s:7:"endLine";i:133;s:7:"methods";a:7:{s:3:"map";a:6:{s:10:"methodName";s:3:"map";s:9:"signature";s:23:"map(array $data): mixed";s:10:"visibility";s:6:"public";s:9:"startLine";i:17;s:7:"endLine";i:34;s:3:"ccn";i:6;}s:10:"parsePoint";a:6:{s:10:"methodName";s:10:"parsePoint";s:9:"signature";s:55:"parsePoint(string $value): Neo4j\QueryAPI\Objects\Point";s:10:"visibility";s:7:"private";s:9:"startLine";i:37;s:7:"endLine";i:49;s:3:"ccn";i:3;}s:7:"mapNode";a:6:{s:10:"methodName";s:7:"mapNode";s:9:"signature";s:53:"mapNode(array $nodeData): Neo4j\QueryAPI\Objects\Node";s:10:"visibility";s:7:"private";s:9:"startLine";i:52;s:7:"endLine";i:58;s:3:"ccn";i:1;}s:15:"mapRelationship";a:6:{s:10:"methodName";s:15:"mapRelationship";s:9:"signature";s:77:"mapRelationship(array $relationshipData): Neo4j\QueryAPI\Objects\Relationship";s:10:"visibility";s:7:"private";s:9:"startLine";i:60;s:7:"endLine";i:66;s:3:"ccn";i:1;}s:8:"parseWKT";a:6:{s:10:"methodName";s:8:"parseWKT";s:9:"signature";s:51:"parseWKT(string $wkt): Neo4j\QueryAPI\Objects\Point";s:10:"visibility";s:6:"public";s:9:"startLine";i:69;s:7:"endLine";i:91;s:3:"ccn";i:3;}s:7:"mapPath";a:6:{s:10:"methodName";s:7:"mapPath";s:9:"signature";s:53:"mapPath(array $pathData): Neo4j\QueryAPI\Objects\Path";s:10:"visibility";s:7:"private";s:9:"startLine";i:94;s:7:"endLine";i:108;s:3:"ccn";i:4;}s:13:"mapProperties";a:6:{s:10:"methodName";s:13:"mapProperties";s:9:"signature";s:39:"mapProperties(array $properties): array";s:10:"visibility";s:7:"private";s:9:"startLine";i:110;s:7:"endLine";i:130;s:3:"ccn";i:7;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:134;s:18:"commentLinesOfCode";i:4;s:21:"nonCommentLinesOfCode";i:130;}s:15:"ignoredLinesFor";a:1:{i:0;i:11;}s:17:"executableLinesIn";a:61:{i:19;i:1;i:20;i:2;i:23;i:3;i:24;i:4;i:25;i:5;i:26;i:6;i:27;i:7;i:28;i:8;i:29;i:9;i:30;i:10;i:31;i:11;i:32;i:12;i:33;i:3;i:39;i:13;i:40;i:14;i:41;i:15;i:42;i:16;i:43;i:17;i:45;i:18;i:48;i:19;i:54;i:20;i:55;i:20;i:56;i:20;i:57;i:20;i:62;i:21;i:63;i:21;i:64;i:21;i:65;i:21;i:71;i:22;i:72;i:23;i:73;i:24;i:75;i:25;i:76;i:26;i:78;i:27;i:79;i:28;i:80;i:29;i:82;i:30;i:84;i:31;i:85;i:32;i:86;i:33;i:88;i:34;i:90;i:35;i:96;i:36;i:97;i:37;i:99;i:38;i:100;i:39;i:101;i:40;i:102;i:41;i:103;i:42;i:107;i:43;i:113;i:44;i:115;i:45;i:116;i:46;i:117;i:47;i:118;i:48;i:119;i:49;i:120;i:50;i:121;i:51;i:123;i:52;i:125;i:53;i:129;i:54;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 b/.phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 new file mode 100644 index 00000000..f865a68b --- /dev/null +++ b/.phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:40:"Neo4j\QueryAPI\Objects\ProfiledQueryPlan";a:6:{s:4:"name";s:17:"ProfiledQueryPlan";s:14:"namespacedName";s:40:"Neo4j\QueryAPI\Objects\ProfiledQueryPlan";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:5;s:7:"endLine";i:21;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:263:"__construct(Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments $arguments, int $dbHits, int $records, bool $hasPageCacheStats, int $pageCacheHits, int $pageCacheMisses, float $pageCacheHitRatio, int $time, string $operatorType, array $children, array $identifiers)";s:10:"visibility";s:6:"public";s:9:"startLine";i:7;s:7:"endLine";i:20;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:22;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:22;}s:15:"ignoredLinesFor";a:1:{i:0;i:5;}s:17:"executableLinesIn";a:1:{i:20;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 b/.phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 new file mode 100644 index 00000000..a7521528 --- /dev/null +++ b/.phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:37:"Neo4j\QueryAPI\Objects\ResultCounters";a:6:{s:4:"name";s:14:"ResultCounters";s:14:"namespacedName";s:37:"Neo4j\QueryAPI\Objects\ResultCounters";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:5;s:7:"endLine";i:25;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:321:"__construct(bool $containsUpdates, int $nodesCreated, int $nodesDeleted, int $propertiesSet, int $relationshipsCreated, int $relationshipsDeleted, int $labelsAdded, int $labelsRemoved, int $indexesAdded, int $indexesRemoved, int $constraintsAdded, int $constraintsRemoved, bool $containsSystemUpdates, int $systemUpdates)";s:10:"visibility";s:6:"public";s:9:"startLine";i:7;s:7:"endLine";i:23;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:26;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:26;}s:15:"ignoredLinesFor";a:1:{i:0;i:5;}s:17:"executableLinesIn";a:1:{i:23;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 b/.phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 new file mode 100644 index 00000000..24d83b02 --- /dev/null +++ b/.phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:32:"Neo4j\QueryAPI\Objects\Bookmarks";a:6:{s:4:"name";s:9:"Bookmarks";s:14:"namespacedName";s:32:"Neo4j\QueryAPI\Objects\Bookmarks";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:7;s:7:"endLine";i:31;s:7:"methods";a:4:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:29:"__construct(array $bookmarks)";s:10:"visibility";s:6:"public";s:9:"startLine";i:9;s:7:"endLine";i:11;s:3:"ccn";i:1;}s:12:"addBookmarks";a:6:{s:10:"methodName";s:12:"addBookmarks";s:9:"signature";s:67:"addBookmarks(?Neo4j\QueryAPI\Objects\Bookmarks $newBookmarks): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:13;s:7:"endLine";i:18;s:3:"ccn";i:2;}s:5:"count";a:6:{s:10:"methodName";s:5:"count";s:9:"signature";s:12:"count(): int";s:10:"visibility";s:6:"public";s:9:"startLine";i:20;s:7:"endLine";i:24;s:3:"ccn";i:1;}s:13:"jsonSerialize";a:6:{s:10:"methodName";s:13:"jsonSerialize";s:9:"signature";s:22:"jsonSerialize(): array";s:10:"visibility";s:6:"public";s:9:"startLine";i:26;s:7:"endLine";i:30;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:32;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:32;}s:15:"ignoredLinesFor";a:3:{i:0;i:7;i:1;i:20;i:2;i:26;}s:17:"executableLinesIn";a:7:{i:11;i:1;i:15;i:2;i:16;i:3;i:20;i:4;i:23;i:5;i:26;i:6;i:29;i:7;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe b/.phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe new file mode 100644 index 00000000..a5db23ee --- /dev/null +++ b/.phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:26:"Neo4j\QueryAPI\Transaction";a:6:{s:4:"name";s:11:"Transaction";s:14:"namespacedName";s:26:"Neo4j\QueryAPI\Transaction";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:12;s:7:"endLine";i:78;s:7:"methods";a:5:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:199:"__construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, string $clusterAffinity, string $transactionId)";s:10:"visibility";s:6:"public";s:9:"startLine";i:14;s:7:"endLine";i:21;s:3:"ccn";i:1;}s:3:"run";a:6:{s:10:"methodName";s:3:"run";s:9:"signature";s:71:"run(string $query, array $parameters): Neo4j\QueryAPI\Results\ResultSet";s:10:"visibility";s:6:"public";s:9:"startLine";i:31;s:7:"endLine";i:48;s:3:"ccn";i:3;}s:6:"commit";a:6:{s:10:"methodName";s:6:"commit";s:9:"signature";s:14:"commit(): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:50;s:7:"endLine";i:54;s:3:"ccn";i:1;}s:8:"rollback";a:6:{s:10:"methodName";s:8:"rollback";s:9:"signature";s:16:"rollback(): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:56;s:7:"endLine";i:60;s:3:"ccn";i:1;}s:22:"handleRequestException";a:6:{s:10:"methodName";s:22:"handleRequestException";s:9:"signature";s:74:"handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void";s:10:"visibility";s:7:"private";s:9:"startLine";i:67;s:7:"endLine";i:77;s:3:"ccn";i:3;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:79;s:18:"commentLinesOfCode";i:13;s:21:"nonCommentLinesOfCode";i:66;}s:15:"ignoredLinesFor";a:1:{i:0;i:12;}s:17:"executableLinesIn";a:18:{i:21;i:1;i:33;i:2;i:35;i:3;i:38;i:4;i:39;i:5;i:40;i:6;i:43;i:7;i:44;i:8;i:47;i:9;i:52;i:10;i:53;i:11;i:58;i:12;i:59;i:13;i:69;i:14;i:71;i:15;i:72;i:16;i:73;i:17;i:76;i:18;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 b/.phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 new file mode 100644 index 00000000..d9adf5aa --- /dev/null +++ b/.phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:36:"Neo4j\QueryAPI\Authentication\NoAuth";a:6:{s:4:"name";s:6:"NoAuth";s:14:"namespacedName";s:36:"Neo4j\QueryAPI\Authentication\NoAuth";s:9:"namespace";s:29:"Neo4j\QueryAPI\Authentication";s:9:"startLine";i:7;s:7:"endLine";i:25;s:7:"methods";a:3:{s:9:"getHeader";a:6:{s:10:"methodName";s:9:"getHeader";s:9:"signature";s:19:"getHeader(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:9;s:7:"endLine";i:13;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:17:"getType(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:15;s:7:"endLine";i:19;s:3:"ccn";i:1;}s:12:"authenticate";a:6:{s:10:"methodName";s:12:"authenticate";s:9:"signature";s:91:"authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:20;s:7:"endLine";i:24;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:26;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:26;}s:15:"ignoredLinesFor";a:4:{i:0;i:7;i:1;i:9;i:2;i:15;i:3;i:20;}s:17:"executableLinesIn";a:6:{i:9;i:1;i:12;i:2;i:15;i:3;i:18;i:4;i:20;i:5;i:23;i:6;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc b/.phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc new file mode 100644 index 00000000..c31055e5 --- /dev/null +++ b/.phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:39:"Neo4j\QueryAPI\Exception\Neo4jException";a:6:{s:4:"name";s:14:"Neo4jException";s:14:"namespacedName";s:39:"Neo4j\QueryAPI\Exception\Neo4jException";s:9:"namespace";s:24:"Neo4j\QueryAPI\Exception";s:9:"startLine";i:7;s:7:"endLine";i:64;s:7:"methods";a:6:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:71:"__construct(array $errorDetails, int $statusCode, ?Throwable $previous)";s:10:"visibility";s:6:"public";s:9:"startLine";i:14;s:7:"endLine";i:27;s:3:"ccn";i:1;}s:17:"fromNeo4jResponse";a:6:{s:10:"methodName";s:17:"fromNeo4jResponse";s:9:"signature";s:63:"fromNeo4jResponse(array $response, ?Throwable $exception): self";s:10:"visibility";s:6:"public";s:9:"startLine";i:36;s:7:"endLine";i:43;s:3:"ccn";i:1;}s:12:"getErrorCode";a:6:{s:10:"methodName";s:12:"getErrorCode";s:9:"signature";s:22:"getErrorCode(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:45;s:7:"endLine";i:48;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:18:"getType(): ?string";s:10:"visibility";s:6:"public";s:9:"startLine";i:50;s:7:"endLine";i:53;s:3:"ccn";i:1;}s:10:"getSubType";a:6:{s:10:"methodName";s:10:"getSubType";s:9:"signature";s:21:"getSubType(): ?string";s:10:"visibility";s:6:"public";s:9:"startLine";i:55;s:7:"endLine";i:58;s:3:"ccn";i:1;}s:7:"getName";a:6:{s:10:"methodName";s:7:"getName";s:9:"signature";s:18:"getName(): ?string";s:10:"visibility";s:6:"public";s:9:"startLine";i:60;s:7:"endLine";i:63;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:65;s:18:"commentLinesOfCode";i:7;s:21:"nonCommentLinesOfCode";i:58;}s:15:"ignoredLinesFor";a:1:{i:0;i:7;}s:17:"executableLinesIn";a:13:{i:19;i:6;i:20;i:7;i:21;i:8;i:22;i:9;i:23;i:10;i:25;i:11;i:26;i:12;i:39;i:13;i:42;i:14;i:47;i:15;i:52;i:16;i:57;i:17;i:62;i:18;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 b/.phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 new file mode 100644 index 00000000..b4f9a7ee --- /dev/null +++ b/.phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:27:"Neo4j\QueryAPI\Objects\Path";a:6:{s:4:"name";s:4:"Path";s:14:"namespacedName";s:27:"Neo4j\QueryAPI\Objects\Path";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:9;s:7:"endLine";i:33;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:47:"__construct(array $nodes, array $relationships)";s:10:"visibility";s:6:"public";s:9:"startLine";i:27;s:7:"endLine";i:31;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:15;s:21:"nonCommentLinesOfCode";i:19;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:2:{i:29;i:3;i:30;i:4;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db b/.phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db new file mode 100644 index 00000000..e7400fef --- /dev/null +++ b/.phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:37:"Neo4j\QueryAPI\Objects\Authentication";a:6:{s:4:"name";s:14:"Authentication";s:14:"namespacedName";s:37:"Neo4j\QueryAPI\Objects\Authentication";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:10;s:7:"endLine";i:39;s:7:"methods";a:4:{s:5:"basic";a:6:{s:10:"methodName";s:5:"basic";s:9:"signature";s:94:"basic(string $username, string $password): Neo4j\QueryAPI\Authentication\AuthenticateInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:12;s:7:"endLine";i:15;s:3:"ccn";i:1;}s:15:"fromEnvironment";a:6:{s:10:"methodName";s:15:"fromEnvironment";s:9:"signature";s:70:"fromEnvironment(): Neo4j\QueryAPI\Authentication\AuthenticateInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:18;s:7:"endLine";i:27;s:3:"ccn";i:3;}s:6:"bearer";a:6:{s:10:"methodName";s:6:"bearer";s:9:"signature";s:74:"bearer(string $token): Neo4j\QueryAPI\Authentication\AuthenticateInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:30;s:7:"endLine";i:33;s:3:"ccn";i:1;}s:6:"noAuth";a:6:{s:10:"methodName";s:6:"noAuth";s:9:"signature";s:46:"noAuth(): Neo4j\QueryAPI\Authentication\NoAuth";s:10:"visibility";s:6:"public";s:9:"startLine";i:35;s:7:"endLine";i:38;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:40;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:40;}s:15:"ignoredLinesFor";a:1:{i:0;i:10;}s:17:"executableLinesIn";a:9:{i:14;i:1;i:20;i:2;i:21;i:3;i:23;i:4;i:24;i:4;i:25;i:4;i:26;i:4;i:32;i:5;i:37;i:6;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c b/.phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c new file mode 100644 index 00000000..1845bf2a --- /dev/null +++ b/.phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:32:"Neo4j\QueryAPI\Results\ResultRow";a:6:{s:4:"name";s:9:"ResultRow";s:14:"namespacedName";s:32:"Neo4j\QueryAPI\Results\ResultRow";s:9:"namespace";s:22:"Neo4j\QueryAPI\Results";s:9:"startLine";i:18;s:7:"endLine";i:70;s:7:"methods";a:8:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:24:"__construct(array $data)";s:10:"visibility";s:6:"public";s:9:"startLine";i:23;s:7:"endLine";i:26;s:3:"ccn";i:1;}s:9:"offsetGet";a:6:{s:10:"methodName";s:9:"offsetGet";s:9:"signature";s:31:"offsetGet(mixed $offset): mixed";s:10:"visibility";s:6:"public";s:9:"startLine";i:28;s:7:"endLine";i:35;s:3:"ccn";i:2;}s:12:"offsetExists";a:6:{s:10:"methodName";s:12:"offsetExists";s:9:"signature";s:27:"offsetExists($offset): bool";s:10:"visibility";s:6:"public";s:9:"startLine";i:38;s:7:"endLine";i:42;s:3:"ccn";i:1;}s:9:"offsetSet";a:6:{s:10:"methodName";s:9:"offsetSet";s:9:"signature";s:32:"offsetSet($offset, $value): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:44;s:7:"endLine";i:48;s:3:"ccn";i:1;}s:11:"offsetUnset";a:6:{s:10:"methodName";s:11:"offsetUnset";s:9:"signature";s:26:"offsetUnset($offset): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:49;s:7:"endLine";i:54;s:3:"ccn";i:1;}s:3:"get";a:6:{s:10:"methodName";s:3:"get";s:9:"signature";s:23:"get(string $row): mixed";s:10:"visibility";s:6:"public";s:9:"startLine";i:55;s:7:"endLine";i:58;s:3:"ccn";i:1;}s:5:"count";a:6:{s:10:"methodName";s:5:"count";s:9:"signature";s:12:"count(): int";s:10:"visibility";s:6:"public";s:9:"startLine";i:59;s:7:"endLine";i:63;s:3:"ccn";i:1;}s:11:"getIterator";a:6:{s:10:"methodName";s:11:"getIterator";s:9:"signature";s:26:"getIterator(): Traversable";s:10:"visibility";s:6:"public";s:9:"startLine";i:65;s:7:"endLine";i:69;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:71;s:18:"commentLinesOfCode";i:6;s:21:"nonCommentLinesOfCode";i:65;}s:15:"ignoredLinesFor";a:7:{i:0;i:18;i:1;i:28;i:2;i:38;i:3;i:44;i:4;i:49;i:5;i:59;i:6;i:65;}s:17:"executableLinesIn";a:16:{i:25;i:2;i:28;i:3;i:31;i:4;i:32;i:5;i:34;i:6;i:38;i:7;i:41;i:8;i:44;i:9;i:47;i:10;i:49;i:11;i:52;i:12;i:57;i:13;i:59;i:14;i:62;i:15;i:65;i:16;i:68;i:17;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 b/.phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 new file mode 100644 index 00000000..dc624a76 --- /dev/null +++ b/.phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:49:"Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments";a:6:{s:4:"name";s:26:"ProfiledQueryPlanArguments";s:14:"namespacedName";s:49:"Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:5;s:7:"endLine";i:30;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:404:"__construct(?int $globalMemory, ?string $plannerImpl, ?int $memory, ?string $stringRepresentation, ?string $runtime, ?int $time, ?int $pageCacheMisses, ?int $pageCacheHits, ?string $runtimeImpl, ?int $version, ?int $dbHits, ?int $batchSize, ?string $details, ?string $plannerVersion, ?string $pipelineInfo, null|string|float $runtimeVersion, ?int $id, ?float $estimatedRows, ?string $planner, ?int $rows)";s:10:"visibility";s:6:"public";s:9:"startLine";i:7;s:7:"endLine";i:29;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:31;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:31;}s:15:"ignoredLinesFor";a:1:{i:0;i:5;}s:17:"executableLinesIn";a:1:{i:29;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 b/.phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 new file mode 100644 index 00000000..461ceaf3 --- /dev/null +++ b/.phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:28:"Neo4j\QueryAPI\Neo4jQueryAPI";a:6:{s:4:"name";s:13:"Neo4jQueryAPI";s:14:"namespacedName";s:28:"Neo4j\QueryAPI\Neo4jQueryAPI";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:16;s:7:"endLine";i:124;s:7:"methods";a:7:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:189:"__construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, Neo4j\QueryAPI\Configuration $config)";s:10:"visibility";s:6:"public";s:9:"startLine";i:18;s:7:"endLine";i:25;s:3:"ccn";i:1;}s:5:"login";a:6:{s:10:"methodName";s:5:"login";s:9:"signature";s:127:"login(string $address, ?Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth, ?Neo4j\QueryAPI\Configuration $config): self";s:10:"visibility";s:6:"public";s:9:"startLine";i:27;s:7:"endLine";i:52;s:3:"ccn";i:5;}s:6:"create";a:6:{s:10:"methodName";s:6:"create";s:9:"signature";s:116:"create(Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth): self";s:10:"visibility";s:6:"public";s:9:"startLine";i:54;s:7:"endLine";i:57;s:3:"ccn";i:1;}s:9:"getConfig";a:6:{s:10:"methodName";s:9:"getConfig";s:9:"signature";s:41:"getConfig(): Neo4j\QueryAPI\Configuration";s:10:"visibility";s:6:"public";s:9:"startLine";i:60;s:7:"endLine";i:63;s:3:"ccn";i:1;}s:3:"run";a:6:{s:10:"methodName";s:3:"run";s:9:"signature";s:72:"run(string $cypher, array $parameters): Neo4j\QueryAPI\Results\ResultSet";s:10:"visibility";s:6:"public";s:9:"startLine";i:69;s:7:"endLine";i:80;s:3:"ccn";i:2;}s:16:"beginTransaction";a:6:{s:10:"methodName";s:16:"beginTransaction";s:9:"signature";s:46:"beginTransaction(): Neo4j\QueryAPI\Transaction";s:10:"visibility";s:6:"public";s:9:"startLine";i:82;s:7:"endLine";i:104;s:3:"ccn";i:2;}s:22:"handleRequestException";a:6:{s:10:"methodName";s:22:"handleRequestException";s:9:"signature";s:74:"handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void";s:10:"visibility";s:7:"private";s:9:"startLine";i:113;s:7:"endLine";i:123;s:3:"ccn";i:3;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:125;s:18:"commentLinesOfCode";i:10;s:21:"nonCommentLinesOfCode";i:115;}s:15:"ignoredLinesFor";a:1:{i:0;i:16;}s:17:"executableLinesIn";a:46:{i:25;i:1;i:29;i:2;i:31;i:3;i:32;i:4;i:33;i:5;i:34;i:6;i:36;i:7;i:39;i:8;i:41;i:9;i:42;i:9;i:43;i:9;i:44;i:9;i:45;i:9;i:46;i:9;i:47;i:9;i:48;i:9;i:49;i:9;i:50;i:9;i:51;i:9;i:56;i:10;i:62;i:11;i:71;i:13;i:74;i:14;i:75;i:15;i:76;i:16;i:79;i:17;i:84;i:18;i:87;i:19;i:88;i:20;i:89;i:21;i:92;i:22;i:93;i:23;i:94;i:24;i:95;i:25;i:97;i:26;i:98;i:26;i:99;i:26;i:100;i:26;i:101;i:26;i:102;i:26;i:103;i:26;i:115;i:27;i:117;i:28;i:118;i:29;i:119;i:30;i:122;i:31;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 b/.phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 new file mode 100644 index 00000000..d1bc842d --- /dev/null +++ b/.phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:28:"Neo4j\QueryAPI\Objects\Point";a:6:{s:4:"name";s:5:"Point";s:14:"namespacedName";s:28:"Neo4j\QueryAPI\Objects\Point";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:8;s:7:"endLine";i:34;s:7:"methods";a:2:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:57:"__construct(float $x, float $y, float|null $z, int $srid)";s:10:"visibility";s:6:"public";s:9:"startLine";i:16;s:7:"endLine";i:22;s:3:"ccn";i:1;}s:10:"__toString";a:6:{s:10:"methodName";s:10:"__toString";s:9:"signature";s:20:"__toString(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:29;s:7:"endLine";i:32;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:35;s:18:"commentLinesOfCode";i:14;s:21:"nonCommentLinesOfCode";i:21;}s:15:"ignoredLinesFor";a:1:{i:0;i:8;}s:17:"executableLinesIn";a:2:{i:22;i:1;i:31;i:2;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a b/.phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a new file mode 100644 index 00000000..3d99868d --- /dev/null +++ b/.phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a @@ -0,0 +1 @@ +a:6:{s:9:"classesIn";a:1:{s:29:"Neo4j\QueryAPI\ResponseParser";a:6:{s:4:"name";s:14:"ResponseParser";s:14:"namespacedName";s:29:"Neo4j\QueryAPI\ResponseParser";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:16;s:7:"endLine";i:170;s:7:"methods";a:9:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:36:"__construct(Neo4j\QueryAPI\OGM $ogm)";s:10:"visibility";s:6:"public";s:9:"startLine";i:18;s:7:"endLine";i:20;s:3:"ccn";i:1;}s:21:"parseRunQueryResponse";a:6:{s:10:"methodName";s:21:"parseRunQueryResponse";s:9:"signature";s:101:"parseRunQueryResponse(Psr\Http\Message\ResponseInterface $response): Neo4j\QueryAPI\Results\ResultSet";s:10:"visibility";s:6:"public";s:9:"startLine";i:22;s:7:"endLine";i:33;s:3:"ccn";i:2;}s:25:"validateAndDecodeResponse";a:6:{s:10:"methodName";s:25:"validateAndDecodeResponse";s:9:"signature";s:78:"validateAndDecodeResponse(Psr\Http\Message\ResponseInterface $response): array";s:10:"visibility";s:7:"private";s:9:"startLine";i:35;s:7:"endLine";i:50;s:3:"ccn";i:3;}s:7:"mapRows";a:6:{s:10:"methodName";s:7:"mapRows";s:9:"signature";s:44:"mapRows(array $fields, array $values): array";s:10:"visibility";s:7:"private";s:9:"startLine";i:60;s:7:"endLine";i:71;s:3:"ccn";i:2;}s:15:"formatOGMOutput";a:6:{s:10:"methodName";s:15:"formatOGMOutput";s:9:"signature";s:36:"formatOGMOutput(mixed $value): mixed";s:10:"visibility";s:7:"private";s:9:"startLine";i:79;s:7:"endLine";i:86;s:3:"ccn";i:4;}s:13:"buildCounters";a:6:{s:10:"methodName";s:13:"buildCounters";s:9:"signature";s:73:"buildCounters(array $countersData): Neo4j\QueryAPI\Objects\ResultCounters";s:10:"visibility";s:7:"private";s:9:"startLine";i:88;s:7:"endLine";i:105;s:3:"ccn";i:1;}s:14:"buildBookmarks";a:6:{s:10:"methodName";s:14:"buildBookmarks";s:9:"signature";s:70:"buildBookmarks(array $bookmarksData): Neo4j\QueryAPI\Objects\Bookmarks";s:10:"visibility";s:7:"private";s:9:"startLine";i:107;s:7:"endLine";i:110;s:3:"ccn";i:1;}s:13:"getAccessMode";a:6:{s:10:"methodName";s:13:"getAccessMode";s:9:"signature";s:70:"getAccessMode(string $accessModeData): Neo4j\QueryAPI\Enums\AccessMode";s:10:"visibility";s:7:"private";s:9:"startLine";i:112;s:7:"endLine";i:115;s:3:"ccn";i:1;}s:22:"buildProfiledQueryPlan";a:6:{s:10:"methodName";s:22:"buildProfiledQueryPlan";s:9:"signature";s:87:"buildProfiledQueryPlan(mixed $queryPlanData): ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan";s:10:"visibility";s:7:"private";s:9:"startLine";i:117;s:7:"endLine";i:169;s:3:"ccn";i:5;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:171;s:18:"commentLinesOfCode";i:15;s:21:"nonCommentLinesOfCode";i:156;}s:15:"ignoredLinesFor";a:1:{i:0;i:16;}s:17:"executableLinesIn";a:88:{i:20;i:1;i:24;i:2;i:26;i:3;i:27;i:4;i:28;i:5;i:29;i:6;i:30;i:7;i:32;i:8;i:37;i:9;i:38;i:10;i:39;i:11;i:42;i:12;i:43;i:13;i:45;i:14;i:46;i:15;i:49;i:16;i:62;i:17;i:63;i:17;i:64;i:17;i:65;i:17;i:66;i:17;i:67;i:17;i:68;i:17;i:69;i:17;i:70;i:17;i:81;i:20;i:82;i:21;i:85;i:22;i:90;i:23;i:91;i:23;i:92;i:23;i:93;i:23;i:94;i:23;i:95;i:23;i:96;i:23;i:97;i:23;i:98;i:23;i:99;i:23;i:100;i:23;i:101;i:23;i:102;i:23;i:103;i:23;i:104;i:23;i:109;i:24;i:114;i:25;i:119;i:26;i:120;i:27;i:124;i:28;i:129;i:28;i:125;i:29;i:126;i:30;i:128;i:31;i:131;i:32;i:132;i:32;i:133;i:32;i:134;i:32;i:135;i:32;i:136;i:32;i:137;i:32;i:138;i:32;i:139;i:32;i:140;i:32;i:141;i:32;i:142;i:32;i:143;i:32;i:144;i:32;i:145;i:32;i:146;i:32;i:147;i:32;i:148;i:32;i:149;i:32;i:150;i:32;i:151;i:32;i:152;i:32;i:153;i:33;i:155;i:34;i:156;i:34;i:157;i:34;i:158;i:34;i:159;i:34;i:160;i:34;i:161;i:34;i:162;i:34;i:163;i:34;i:164;i:34;i:165;i:34;i:166;i:34;i:167;i:34;}} \ No newline at end of file diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results index eadf2d6d..db8be7d6 100755 --- a/.phpunit.cache/test-results +++ b/.phpunit.cache/test-results @@ -1 +1 @@ -{"version":1,"defects":{"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":7,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":8,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":8},"times":{"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.004,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetTypeReturnsBasic":0,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":0.632,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithReadAccessMode":0.598,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testReadModeWithWriteQuery":0.628,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testWriteModeWithReadQuery":0.508,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testCreateBookmarks":1.023,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testInvalidBookmarkThrowsException":0.57,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":0.553,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":0.593,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":0.53,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":0.62,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":0.607,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":0.616,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":0.712,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":0.494,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":0.48,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":0.66,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":0.508,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithNode":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithSimpleRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithPath":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testParseRunQueryResponse":0.204,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryHandling":0.206,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testCounters":0.167,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryException":0.205,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithValidConfiguration":0.002,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithNullConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testConfigOnly":0,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionCommit":1.231,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionRollback":1.388,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":1.023,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndRollback":1.639,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateQueryExistence":0.61,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateMovieQueryExistence":0.653,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateFriendsQueryExistence":0.572,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateKnowsBidirectionalRelationships":1.132,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateActedInRelationships":0.606,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testChildQueryPlanExistence":0.51,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetTypeReturnsBearer":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testAuthenticateReturnsUnmodifiedRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetHeaderReturnsEmptyString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetTypeReturnsNoAuth":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBearerToken":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBasicAuthentication":0,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testFallbackToEnvironmentVariables":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructor":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructorWithMissingErrorDetails":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithMissingDetails":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithNullResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testExceptionChaining":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testLoginCreatesInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testGetConfigReturnsCorrectConfig":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testRunExecutesQueryAndReturnsResultSet":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testHandleRequestExceptionThrowsNeo4jException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testCorrectClientSetup":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testRunSuccess":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseValidResponse":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseInvalidResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testGetAccessMode":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseBookmarks":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRunQueryRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildBeginTransactionRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildCommitRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithHeadersAndBody":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithoutAuthorizationHeader":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapInteger":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapFloat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapString":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapBoolean":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNull":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNode":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapRelationship":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapPoint":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testParseWKT":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidWKTThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidPointFormatThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnErrorResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnInvalidData":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseHandlesProfiledQueryPlan":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessGet":0,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessSetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetThrowsExceptionForInvalidKey":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetExists":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetSetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetUnsetThrowsException":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testGetReturnsValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testCount":0,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testIterator":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRunExecutesQuerySuccessfully":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testHandleRequestExceptionWithoutResponse":0,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testCommitSendsCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRollbackSendsRollbackRequest":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBasicReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testFromEnvironmentReturnsBasicAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testNoAuthReturnsNoAuthInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBearerReturnsBearerAuthenticationInstance":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testGetBookmarksReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksMergesUniqueValues":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksDoesNothingWhenNullIsPassed":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testCountReturnsCorrectNumber":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testJsonSerializeReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetLabelsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testToArrayReturnsCorrectStructure":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetNodesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetRelationshipsReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetXReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetYReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetZReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetSridReturnsCorrectValue":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testToStringReturnsCorrectFormat":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetTypeReturnsCorrectType":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetPropertiesReturnsCorrectArray":0,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testEmptyPropertiesByDefault":0}} \ No newline at end of file +{"version":1,"defects":{"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":7,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":8,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":8},"times":{"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.006,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetTypeReturnsBasic":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":0.697,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithReadAccessMode":0.552,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testReadModeWithWriteQuery":0.687,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testWriteModeWithReadQuery":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testCreateBookmarks":1.019,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testInvalidBookmarkThrowsException":2.223,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":2.179,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":0.51,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":0.511,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithNode":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithSimpleRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithPath":0.002,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testParseRunQueryResponse":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryHandling":0.206,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testCounters":0.21,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryException":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithValidConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithNullConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testConfigOnly":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionCommit":1.232,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionRollback":1.64,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":1.026,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndRollback":1.333,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateQueryExistence":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateMovieQueryExistence":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateFriendsQueryExistence":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateKnowsBidirectionalRelationships":1.031,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateActedInRelationships":0.605,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testChildQueryPlanExistence":0.611,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetTypeReturnsBearer":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testAuthenticateReturnsUnmodifiedRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetHeaderReturnsEmptyString":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetTypeReturnsNoAuth":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBearerToken":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBasicAuthentication":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testFallbackToEnvironmentVariables":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructor":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructorWithMissingErrorDetails":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithMissingDetails":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithNullResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testExceptionChaining":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testLoginCreatesInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testGetConfigReturnsCorrectConfig":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testRunExecutesQueryAndReturnsResultSet":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testHandleRequestExceptionThrowsNeo4jException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testCorrectClientSetup":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testRunSuccess":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseValidResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseInvalidResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testGetAccessMode":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseBookmarks":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRunQueryRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildBeginTransactionRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRollbackRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithHeadersAndBody":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithoutAuthorizationHeader":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapInteger":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapFloat":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapString":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapBoolean":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNull":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNode":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapPoint":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testParseWKT":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidWKTThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidPointFormatThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnErrorResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnInvalidData":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseHandlesProfiledQueryPlan":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessGet":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessSetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessUnsetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetReturnsValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetThrowsExceptionForInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetExists":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetSetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetUnsetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testGetReturnsValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testCount":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testIterator":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRunExecutesQuerySuccessfully":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testHandleRequestExceptionWithoutResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testCommitSendsCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRollbackSendsRollbackRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBasicReturnsBasicAuthenticationInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testFromEnvironmentReturnsBasicAuthenticationInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testNoAuthReturnsNoAuthInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBearerReturnsBearerAuthenticationInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testGetBookmarksReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksMergesUniqueValues":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksDoesNothingWhenNullIsPassed":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testCountReturnsCorrectNumber":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testJsonSerializeReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetLabelsReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetPropertiesReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testToArrayReturnsCorrectStructure":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetNodesReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetRelationshipsReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetXReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetYReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetZReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetSridReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testToStringReturnsCorrectFormat":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetTypeReturnsCorrectType":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetPropertiesReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testEmptyPropertiesByDefault":0.001}} \ No newline at end of file diff --git a/clover.xml b/clover.xml new file mode 100644 index 00000000..815f7b0f --- /dev/null +++ b/clover.xml @@ -0,0 +1,529 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cobertura.xml b/cobertura.xml new file mode 100644 index 00000000..7b3d6d47 --- /dev/null +++ b/cobertura.xml @@ -0,0 +1,1169 @@ + + + + + /home/pratiksha/dev/Neo4j-Client/src + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/composer.json b/composer.json index bf6345d1..8382c509 100644 --- a/composer.json +++ b/composer.json @@ -55,7 +55,7 @@ "all-tests" : "vendor/bin/phpunit --configuration=phpunit.xml --testsuite=All ./tests/", "unit-tests" : "vendor/bin/phpunit --configuration=phpunit.xml --testsuite=Unit", "integration-tests" : "vendor/bin/phpunit --configuration=phpunit.xml --testsuite=Integration", - "phpunit-with-coverage" : "XDEBUG_MODE=coverage php -d memory_limit=-1 vendor/bin/phpunit --configuration=phpunit.xml --testsuite=All --coverage-filter=src tests" + "phpunit-with-coverage" : "XDEBUG_MODE=coverage php -d memory_limit=-1 vendor/bin/phpunit --configuration=phpunitCoverage.xml --testsuite=All --coverage-filter=src tests" } } diff --git a/coverage.php b/coverage.php new file mode 100644 index 0000000000000000000000000000000000000000..d8b706c8b775e3b0f94305b5faaaa68162c7cfef GIT binary patch literal 589460 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 + + + 2025-03-03 08:46:42 + + Method Crap Stats + 81 + 0 + 0 + 154.05 + 0 + + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BasicAuthentication + __construct + __construct(?string $username, ?string $password) + __construct(?string $username, ?string $password) + 3 + 3 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BasicAuthentication + authenticate + authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface + authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BasicAuthentication + getHeader + getHeader(): string + getHeader(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BasicAuthentication + getType + getType(): string + getType(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BearerAuthentication + __construct + __construct(string $token) + __construct(string $token) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BearerAuthentication + authenticate + authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface + authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BearerAuthentication + getHeader + getHeader(): string + getHeader(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\BearerAuthentication + getType + getType(): string + getType(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\NoAuth + getHeader + getHeader(): string + getHeader(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\NoAuth + getType + getType(): string + getType(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Authentication + Neo4j\QueryAPI\Authentication\NoAuth + authenticate + authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface + authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Configuration + __construct + __construct(string $baseUri, string $database, bool $includeCounters, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode) + __construct(string $baseUri, string $database, bool $includeCounters, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Exception + Neo4j\QueryAPI\Exception\Neo4jException + __construct + __construct(array $errorDetails, int $statusCode, ?Throwable $previous) + __construct(array $errorDetails, int $statusCode, ?Throwable $previous) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Exception + Neo4j\QueryAPI\Exception\Neo4jException + fromNeo4jResponse + fromNeo4jResponse(array $response, ?Throwable $exception): self + fromNeo4jResponse(array $response, ?Throwable $exception): self + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Exception + Neo4j\QueryAPI\Exception\Neo4jException + getErrorCode + getErrorCode(): string + getErrorCode(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Exception + Neo4j\QueryAPI\Exception\Neo4jException + getType + getType(): ?string + getType(): ?string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Exception + Neo4j\QueryAPI\Exception\Neo4jException + getSubType + getSubType(): ?string + getSubType(): ?string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Exception + Neo4j\QueryAPI\Exception\Neo4jException + getName + getName(): ?string + getName(): ?string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jQueryAPI + __construct + __construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, Neo4j\QueryAPI\Configuration $config) + __construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, Neo4j\QueryAPI\Configuration $config) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jQueryAPI + login + login(string $address, ?Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth, ?Neo4j\QueryAPI\Configuration $config): self + login(string $address, ?Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth, ?Neo4j\QueryAPI\Configuration $config): self + 5 + 5 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jQueryAPI + create + create(Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth): self + create(Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth): self + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jQueryAPI + getConfig + getConfig(): Neo4j\QueryAPI\Configuration + getConfig(): Neo4j\QueryAPI\Configuration + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jQueryAPI + run + run(string $cypher, array $parameters): Neo4j\QueryAPI\Results\ResultSet + run(string $cypher, array $parameters): Neo4j\QueryAPI\Results\ResultSet + 2.26 + 2 + 60 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jQueryAPI + beginTransaction + beginTransaction(): Neo4j\QueryAPI\Transaction + beginTransaction(): Neo4j\QueryAPI\Transaction + 2.01 + 2 + 86.67 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jQueryAPI + handleRequestException + handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void + handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void + 12 + 3 + 0 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jRequestFactory + __construct + __construct(Psr\Http\Message\RequestFactoryInterface $psr17Factory, Psr\Http\Message\StreamFactoryInterface $streamFactory, Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth) + __construct(Psr\Http\Message\RequestFactoryInterface $psr17Factory, Psr\Http\Message\StreamFactoryInterface $streamFactory, Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jRequestFactory + buildRunQueryRequest + buildRunQueryRequest(string $cypher, array $parameters): Psr\Http\Message\RequestInterface + buildRunQueryRequest(string $cypher, array $parameters): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jRequestFactory + buildBeginTransactionRequest + buildBeginTransactionRequest(): Psr\Http\Message\RequestInterface + buildBeginTransactionRequest(): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jRequestFactory + buildCommitRequest + buildCommitRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface + buildCommitRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jRequestFactory + buildRollbackRequest + buildRollbackRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface + buildRollbackRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jRequestFactory + buildTransactionRunRequest + buildTransactionRunRequest(string $query, array $parameters, string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface + buildTransactionRunRequest(string $query, array $parameters, string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Neo4jRequestFactory + createRequest + createRequest(string $uri, ?string $cypher, ?array $parameters): Psr\Http\Message\RequestInterface + createRequest(string $uri, ?string $cypher, ?array $parameters): Psr\Http\Message\RequestInterface + 8 + 8 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\OGM + map + map(array $data): mixed + map(array $data): mixed + 6.02 + 6 + 92.31 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\OGM + parsePoint + parsePoint(string $value): Neo4j\QueryAPI\Objects\Point + parsePoint(string $value): Neo4j\QueryAPI\Objects\Point + 3 + 3 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\OGM + mapNode + mapNode(array $nodeData): Neo4j\QueryAPI\Objects\Node + mapNode(array $nodeData): Neo4j\QueryAPI\Objects\Node + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\OGM + mapRelationship + mapRelationship(array $relationshipData): Neo4j\QueryAPI\Objects\Relationship + mapRelationship(array $relationshipData): Neo4j\QueryAPI\Objects\Relationship + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\OGM + parseWKT + parseWKT(string $wkt): Neo4j\QueryAPI\Objects\Point + parseWKT(string $wkt): Neo4j\QueryAPI\Objects\Point + 3 + 3 + 92.86 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\OGM + mapPath + mapPath(array $pathData): Neo4j\QueryAPI\Objects\Path + mapPath(array $pathData): Neo4j\QueryAPI\Objects\Path + 4 + 4 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\OGM + mapProperties + mapProperties(array $properties): array + mapProperties(array $properties): array + 7.29 + 7 + 81.82 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Authentication + basic + basic(string $username, string $password): Neo4j\QueryAPI\Authentication\AuthenticateInterface + basic(string $username, string $password): Neo4j\QueryAPI\Authentication\AuthenticateInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Authentication + fromEnvironment + fromEnvironment(): Neo4j\QueryAPI\Authentication\AuthenticateInterface + fromEnvironment(): Neo4j\QueryAPI\Authentication\AuthenticateInterface + 3 + 3 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Authentication + bearer + bearer(string $token): Neo4j\QueryAPI\Authentication\AuthenticateInterface + bearer(string $token): Neo4j\QueryAPI\Authentication\AuthenticateInterface + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Authentication + noAuth + noAuth(): Neo4j\QueryAPI\Authentication\NoAuth + noAuth(): Neo4j\QueryAPI\Authentication\NoAuth + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Bookmarks + __construct + __construct(array $bookmarks) + __construct(array $bookmarks) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Bookmarks + addBookmarks + addBookmarks(?Neo4j\QueryAPI\Objects\Bookmarks $newBookmarks): void + addBookmarks(?Neo4j\QueryAPI\Objects\Bookmarks $newBookmarks): void + 2 + 2 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Bookmarks + count + count(): int + count(): int + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Bookmarks + jsonSerialize + jsonSerialize(): array + jsonSerialize(): array + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Node + __construct + __construct(array $labels, array $properties) + __construct(array $labels, array $properties) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Node + toArray + toArray(): array + toArray(): array + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Path + __construct + __construct(array $nodes, array $relationships) + __construct(array $nodes, array $relationships) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Point + __construct + __construct(float $x, float $y, float|null $z, int $srid) + __construct(float $x, float $y, float|null $z, int $srid) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Point + __toString + __toString(): string + __toString(): string + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\ProfiledQueryPlan + __construct + __construct(Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments $arguments, int $dbHits, int $records, bool $hasPageCacheStats, int $pageCacheHits, int $pageCacheMisses, float $pageCacheHitRatio, int $time, string $operatorType, array $children, array $identifiers) + __construct(Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments $arguments, int $dbHits, int $records, bool $hasPageCacheStats, int $pageCacheHits, int $pageCacheMisses, float $pageCacheHitRatio, int $time, string $operatorType, array $children, array $identifiers) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments + __construct + __construct(?int $globalMemory, ?string $plannerImpl, ?int $memory, ?string $stringRepresentation, ?string $runtime, ?int $time, ?int $pageCacheMisses, ?int $pageCacheHits, ?string $runtimeImpl, ?int $version, ?int $dbHits, ?int $batchSize, ?string $details, ?string $plannerVersion, ?string $pipelineInfo, null|string|float $runtimeVersion, ?int $id, ?float $estimatedRows, ?string $planner, ?int $rows) + __construct(?int $globalMemory, ?string $plannerImpl, ?int $memory, ?string $stringRepresentation, ?string $runtime, ?int $time, ?int $pageCacheMisses, ?int $pageCacheHits, ?string $runtimeImpl, ?int $version, ?int $dbHits, ?int $batchSize, ?string $details, ?string $plannerVersion, ?string $pipelineInfo, null|string|float $runtimeVersion, ?int $id, ?float $estimatedRows, ?string $planner, ?int $rows) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\Relationship + __construct + __construct(string $type, array $properties) + __construct(string $type, array $properties) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Objects + Neo4j\QueryAPI\Objects\ResultCounters + __construct + __construct(bool $containsUpdates, int $nodesCreated, int $nodesDeleted, int $propertiesSet, int $relationshipsCreated, int $relationshipsDeleted, int $labelsAdded, int $labelsRemoved, int $indexesAdded, int $indexesRemoved, int $constraintsAdded, int $constraintsRemoved, bool $containsSystemUpdates, int $systemUpdates) + __construct(bool $containsUpdates, int $nodesCreated, int $nodesDeleted, int $propertiesSet, int $relationshipsCreated, int $relationshipsDeleted, int $labelsAdded, int $labelsRemoved, int $indexesAdded, int $indexesRemoved, int $constraintsAdded, int $constraintsRemoved, bool $containsSystemUpdates, int $systemUpdates) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + __construct + __construct(Neo4j\QueryAPI\OGM $ogm) + __construct(Neo4j\QueryAPI\OGM $ogm) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + parseRunQueryResponse + parseRunQueryResponse(Psr\Http\Message\ResponseInterface $response): Neo4j\QueryAPI\Results\ResultSet + parseRunQueryResponse(Psr\Http\Message\ResponseInterface $response): Neo4j\QueryAPI\Results\ResultSet + 2 + 2 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + validateAndDecodeResponse + validateAndDecodeResponse(Psr\Http\Message\ResponseInterface $response): array + validateAndDecodeResponse(Psr\Http\Message\ResponseInterface $response): array + 3 + 3 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + mapRows + mapRows(array $fields, array $values): array + mapRows(array $fields, array $values): array + 2 + 2 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + formatOGMOutput + formatOGMOutput(mixed $value): mixed + formatOGMOutput(mixed $value): mixed + 4 + 4 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + buildCounters + buildCounters(array $countersData): Neo4j\QueryAPI\Objects\ResultCounters + buildCounters(array $countersData): Neo4j\QueryAPI\Objects\ResultCounters + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + buildBookmarks + buildBookmarks(array $bookmarksData): Neo4j\QueryAPI\Objects\Bookmarks + buildBookmarks(array $bookmarksData): Neo4j\QueryAPI\Objects\Bookmarks + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + getAccessMode + getAccessMode(string $accessModeData): Neo4j\QueryAPI\Enums\AccessMode + getAccessMode(string $accessModeData): Neo4j\QueryAPI\Enums\AccessMode + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\ResponseParser + buildProfiledQueryPlan + buildProfiledQueryPlan(mixed $queryPlanData): ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan + buildProfiledQueryPlan(mixed $queryPlanData): ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan + 5 + 5 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + __construct + __construct(array $data) + __construct(array $data) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + offsetGet + offsetGet(mixed $offset): mixed + offsetGet(mixed $offset): mixed + 2 + 2 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + offsetExists + offsetExists($offset): bool + offsetExists($offset): bool + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + offsetSet + offsetSet($offset, $value): void + offsetSet($offset, $value): void + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + offsetUnset + offsetUnset($offset): void + offsetUnset($offset): void + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + get + get(string $row): mixed + get(string $row): mixed + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + count + count(): int + count(): int + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultRow + getIterator + getIterator(): Traversable + getIterator(): Traversable + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultSet + __construct + __construct(array $rows, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode, ?Neo4j\QueryAPI\Objects\ResultCounters $counters, ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan $profiledQueryPlan) + __construct(array $rows, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode, ?Neo4j\QueryAPI\Objects\ResultCounters $counters, ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan $profiledQueryPlan) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultSet + getIterator + getIterator(): Traversable + getIterator(): Traversable + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI\Results + Neo4j\QueryAPI\Results\ResultSet + count + count(): int + count(): int + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Transaction + __construct + __construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, string $clusterAffinity, string $transactionId) + __construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, string $clusterAffinity, string $transactionId) + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Transaction + run + run(string $query, array $parameters): Neo4j\QueryAPI\Results\ResultSet + run(string $query, array $parameters): Neo4j\QueryAPI\Results\ResultSet + 3.47 + 3 + 62.5 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Transaction + commit + commit(): void + commit(): void + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Transaction + rollback + rollback(): void + rollback(): void + 1 + 1 + 100 + 0 + + + Neo4j\QueryAPI + Neo4j\QueryAPI\Transaction + handleRequestException + handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void + handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void + 12 + 3 + 0 + 0 + + + diff --git a/phpunitCoverage.xml b/phpunitCoverage.xml new file mode 100644 index 00000000..41ca73bf --- /dev/null +++ b/phpunitCoverage.xml @@ -0,0 +1,41 @@ + + + + + + tests + + + + + + + + + + + + + src + + + + + + src + + + + + + + + + + + + + + + diff --git a/xml-coverage/Authentication/AuthenticateInterface.php.xml b/xml-coverage/Authentication/AuthenticateInterface.php.xml new file mode 100644 index 00000000..0233fa63 --- /dev/null +++ b/xml-coverage/Authentication/AuthenticateInterface.php.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Authentication + ; + + + + use + + Psr\Http\Message\RequestInterface + ; + + + + interface + + AuthenticateInterface + + + { + + + + public + + function + + getHeader + ( + ) + : + + string + ; + + + + public + + function + + getType + ( + ) + : + + string + ; + + + + /** + + + * Authenticates the request by returning a new instance of the request with the authentication information attached. + + + */ + + + + public + + function + + authenticate + ( + RequestInterface + + $request + ) + : + + RequestInterface + ; + + + } + + + + + diff --git a/xml-coverage/Authentication/BasicAuthentication.php.xml b/xml-coverage/Authentication/BasicAuthentication.php.xml new file mode 100644 index 00000000..8d53acdf --- /dev/null +++ b/xml-coverage/Authentication/BasicAuthentication.php.xml @@ -0,0 +1,612 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Authentication + ; + + + + use + + Psr\Http\Message\RequestInterface + ; + + + + + class + + BasicAuthentication + + implements + + AuthenticateInterface + + + { + + + + private + + string + + $username + ; + + + + private + + string + + $password + ; + + + + + public + + function + + __construct + ( + ? + string + + $username + + = + + null + , + + ? + string + + $password + + = + + null + ) + + + + { + + + + $this + -> + username + + = + + $username + + ?? + + ( + is_string + ( + $envUser + + = + + getenv + ( + "NEO4J_USERNAME" + ) + ) + + ? + + $envUser + + : + + '' + ) + ; + + + + $this + -> + password + + = + + $password + + ?? + + ( + is_string + ( + $envPass + + = + + getenv + ( + "NEO4J_PASSWORD" + ) + ) + + ? + + $envPass + + : + + '' + ) + ; + + + + } + + + + + + #[ + \Override + ] + + + + public + + function + + authenticate + ( + RequestInterface + + $request + ) + : + + RequestInterface + + + + { + + + + $authHeader + + = + + $this + -> + getHeader + ( + ) + ; + + + + return + + $request + -> + withHeader + ( + 'Authorization' + , + + $authHeader + ) + ; + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + getHeader + ( + ) + : + + string + + + + { + + + + return + + 'Basic ' + + . + + base64_encode + ( + $this + -> + username + + . + + ':' + + . + + $this + -> + password + ) + ; + + + + } + + + + /** + + + * @psalm-suppress UnusedMethod + + + */ + + + + #[ + \Override + ] + + + + public + + function + + getType + ( + ) + : + + string + + + + { + + + + return + + 'Basic' + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Authentication/BearerAuthentication.php.xml b/xml-coverage/Authentication/BearerAuthentication.php.xml new file mode 100644 index 00000000..4231a26a --- /dev/null +++ b/xml-coverage/Authentication/BearerAuthentication.php.xml @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Authentication + ; + + + + use + + Psr\Http\Message\RequestInterface + ; + + + + + class + + BearerAuthentication + + implements + + AuthenticateInterface + + + { + + + + public + + function + + __construct + ( + private + + string + + $token + ) + + + + { + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + authenticate + ( + RequestInterface + + $request + ) + : + + RequestInterface + + + + { + + + + $authHeader + + = + + 'Bearer ' + + . + + $this + -> + token + ; + + + + return + + $request + -> + withHeader + ( + 'Authorization' + , + + $authHeader + ) + ; + + + + } + + + + + + #[ + \Override + ] + + + + public + + function + + getHeader + ( + ) + : + + string + + + + { + + + + return + + 'Bearer ' + + . + + $this + -> + token + ; + + + + } + + + + + + #[ + \Override + ] + + + + public + + function + + getType + ( + ) + : + + string + + + + { + + + + return + + 'Bearer' + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Authentication/NoAuth.php.xml b/xml-coverage/Authentication/NoAuth.php.xml new file mode 100644 index 00000000..df13cde6 --- /dev/null +++ b/xml-coverage/Authentication/NoAuth.php.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Authentication + ; + + + + use + + Psr\Http\Message\RequestInterface + ; + + + + + class + + NoAuth + + implements + + AuthenticateInterface + + + { + + + + #[ + \Override + ] + + + + public + + function + + getHeader + ( + ) + : + + string + + + + { + + + + return + + '' + ; + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + getType + ( + ) + : + + string + + + + { + + + + return + + 'NoAuth' + ; + + + + } + + + + #[ + \Override + ] + + + + public + + function + + authenticate + ( + RequestInterface + + $request + ) + : + + RequestInterface + + + + { + + + + return + + $request + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Configuration.php.xml b/xml-coverage/Configuration.php.xml new file mode 100644 index 00000000..256db4bc --- /dev/null +++ b/xml-coverage/Configuration.php.xml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI + ; + + + + use + + InvalidArgumentException + ; + + + use + + Neo4j\QueryAPI\Objects\Bookmarks + ; + + + use + + Neo4j\QueryAPI\Enums\AccessMode + ; + + + + + class + + Configuration + + + { + + + + /** + + + * Constructor for Configuration class. + + + * + + + * @param string $baseUri The base URI for the Neo4j instance. + + + * @param string $database The name of the database to connect to. + + + * @param bool $includeCounters Whether to include counters in the response. + + + * @param Bookmarks $bookmarks Bookmarks for tracking queries. + + + * @param AccessMode $accessMode The access mode for the connection (read/write). + + + * + + + * @throws InvalidArgumentException if $baseUri is empty. + + + */ + + + + public + + function + + __construct + ( + + + + public + + string + + $baseUri + , + + + + public + + string + + $database + + = + + 'neo4j' + , + + + + public + + bool + + $includeCounters + + = + + true + , + + + + public + + Bookmarks + + $bookmarks + + = + + new + + Bookmarks + ( + [ + ] + ) + , + + + + public + + AccessMode + + $accessMode + + = + + AccessMode + :: + WRITE + , + + + + ) + + { + + + + + } + + + } + + + + + diff --git a/xml-coverage/Enums/AccessMode.php.xml b/xml-coverage/Enums/AccessMode.php.xml new file mode 100644 index 00000000..77ed46b9 --- /dev/null +++ b/xml-coverage/Enums/AccessMode.php.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Enums + ; + + + + enum + + AccessMode + : + + string + + + { + + + + case + + READ + + = + + 'READ' + ; + + + + case + + WRITE + + = + + 'WRITE' + ; + + + } + + + + + diff --git a/xml-coverage/Exception/Neo4jException.php.xml b/xml-coverage/Exception/Neo4jException.php.xml new file mode 100644 index 00000000..3e430b8f --- /dev/null +++ b/xml-coverage/Exception/Neo4jException.php.xml @@ -0,0 +1,650 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Exception + ; + + + + use + + Exception + ; + + + + + class + + Neo4jException + + extends + + Exception + + + { + + + + private + + string + + $errorCode + ; + + + + private + + ? + string + + $errorType + ; + + + + private + + ? + string + + $errorSubType + ; + + + + private + + ? + string + + $errorName + ; + + + + + public + + function + + __construct + ( + + + + array + + $errorDetails + + = + + [ + ] + , + + + + int + + $statusCode + + = + + 0 + , + + + + ? + \Throwable + + $previous + + = + + null + , + + + + ) + + { + + + + $this + -> + errorCode + + = + + $errorDetails + [ + 'code' + ] + + ?? + + 'Neo.UnknownError' + ; + + + + $errorParts + + = + + explode + ( + '.' + , + + $this + -> + errorCode + ) + ; + + + + $this + -> + errorType + + = + + $errorParts + [ + 1 + ] + + ?? + + null + ; + + + + $this + -> + errorSubType + + = + + $errorParts + [ + 2 + ] + + ?? + + null + ; + + + + $this + -> + errorName + + = + + $errorParts + [ + 3 + ] + + ?? + + null + ; + + + + + $message + + = + + $errorDetails + [ + 'message' + ] + + ?? + + 'An unknown error occurred.' + ; + + + + parent + :: + __construct + ( + $message + , + + $statusCode + , + + $previous + ) + ; + + + + } + + + + + /** + + + * Create a Neo4jException instance from a Neo4j error response array. + + + * + + + * @param array $response The error response from Neo4j. + + + * @param \Throwable|null $exception Optional previous exception for chaining. + + + * @return self + + + */ + + + + public + + static + + function + + fromNeo4jResponse + ( + array + + $response + , + + ? + \Throwable + + $exception + + = + + null + ) + : + + self + + + + { + + + + + $errorDetails + + = + + $response + [ + 'errors' + ] + [ + 0 + ] + + ?? + + [ + 'message' + + => + + 'Unknown error' + , + + 'code' + + => + + 'Neo.UnknownError' + ] + ; + + + + + + return + + new + + self + ( + $errorDetails + , + + previous + : + + $exception + ) + ; + + + + } + + + + + public + + function + + getErrorCode + ( + ) + : + + string + + + + { + + + + return + + $this + -> + errorCode + ; + + + + } + + + + + public + + function + + getType + ( + ) + : + + ? + string + + + + { + + + + return + + $this + -> + errorType + ; + + + + } + + + + + public + + function + + getSubType + ( + ) + : + + ? + string + + + + { + + + + return + + $this + -> + errorSubType + ; + + + + } + + + + + public + + function + + getName + ( + ) + : + + ? + string + + + + { + + + + return + + $this + -> + errorName + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Neo4jQueryAPI.php.xml b/xml-coverage/Neo4jQueryAPI.php.xml new file mode 100644 index 00000000..b8b6fa29 --- /dev/null +++ b/xml-coverage/Neo4jQueryAPI.php.xml @@ -0,0 +1,2070 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI + ; + + + + use + + Http\Discovery\Psr17FactoryDiscovery + ; + + + use + + Http\Discovery\Psr18ClientDiscovery + ; + + + use + + InvalidArgumentException + ; + + + use + + Neo4j\QueryAPI\Exception\Neo4jException + ; + + + use + + Psr\Http\Client\ClientInterface + ; + + + use + + Neo4j\QueryAPI\Authentication\AuthenticateInterface + ; + + + use + + Neo4j\QueryAPI\Objects\Authentication + ; + + + use + + Neo4j\QueryAPI\Results\ResultSet + ; + + + use + + Psr\Http\Message\ResponseInterface + ; + + + use + + Psr\Http\Client\RequestExceptionInterface + ; + + + + + class + + Neo4jQueryAPI + + + { + + + + public + + function + + __construct + ( + + + + private + + ClientInterface + + $client + , + + + + private + + ResponseParser + + $responseParser + , + + + + private + + Neo4jRequestFactory + + $requestFactory + , + + + + private + + Configuration + + $config + + + + ) + + { + + + + + } + + + + + public + + static + + function + + login + ( + string + + $address + + = + + null + , + + ? + AuthenticateInterface + + $auth + + = + + null + , + + ? + Configuration + + $config + + = + + null + ) + : + + self + + + + { + + + + $config + + = + + $config + + ?? + + new + + Configuration + ( + baseUri + : + + $address + + ?? + + '' + ) + ; + + + + if + + ( + + + + trim + ( + $config + -> + baseUri + ) + + !== + + '' + + && + + + + $address + + !== + + null + + && + + + + trim + ( + $address + ) + + !== + + '' + + && + + + + $config + -> + baseUri + + !== + + $address + + + + ) + + { + + + + throw + + new + + InvalidArgumentException + ( + sprintf + ( + 'Address (%s) as argument is different from address in configuration (%s)' + , + + $config + -> + baseUri + , + + $address + ) + ) + ; + + + + } + + + + + $client + + = + + Psr18ClientDiscovery + :: + find + ( + ) + ; + + + + + return + + new + + self + ( + + + + client + : + + $client + , + + + + responseParser + : + + new + + ResponseParser + ( + new + + OGM + ( + ) + ) + , + + + + requestFactory + : + + new + + Neo4jRequestFactory + ( + + + + psr17Factory + : + + Psr17FactoryDiscovery + :: + findRequestFactory + ( + ) + , + + + + streamFactory + : + + Psr17FactoryDiscovery + :: + findStreamFactory + ( + ) + , + + + + configuration + : + + $config + , + + + + auth + : + + $auth + + ?? + + Authentication + :: + fromEnvironment + ( + ) + + + + ) + , + + + + config + : + + $config + + + + ) + ; + + + + } + + + + + public + + static + + function + + create + ( + Configuration + + $configuration + , + + AuthenticateInterface + + $auth + + = + + null + ) + : + + self + + + + { + + + + return + + self + :: + login + ( + auth + : + + $auth + , + + config + : + + $configuration + ) + ; + + + + } + + + + + + public + + function + + getConfig + ( + ) + : + + Configuration + + + + { + + + + return + + $this + -> + config + ; + + + + } + + + + + + /** + + + * Executes a Cypher query. + + + */ + + + + public + + function + + run + ( + string + + $cypher + , + + array + + $parameters + + = + + [ + ] + ) + : + + ResultSet + + + + { + + + + $request + + = + + $this + -> + requestFactory + -> + buildRunQueryRequest + ( + $cypher + , + + $parameters + ) + ; + + + + + try + + { + + + + $response + + = + + $this + -> + client + -> + sendRequest + ( + $request + ) + ; + + + + } + + catch + + ( + RequestExceptionInterface + + $e + ) + + { + + + + $this + -> + handleRequestException + ( + $e + ) + ; + + + + } + + + + + return + + $this + -> + responseParser + -> + parseRunQueryResponse + ( + $response + ) + ; + + + + } + + + + + public + + function + + beginTransaction + ( + ) + : + + Transaction + + + + { + + + + $request + + = + + $this + -> + requestFactory + -> + buildBeginTransactionRequest + ( + ) + ; + + + + + try + + { + + + + $response + + = + + $this + -> + client + -> + sendRequest + ( + $request + ) + ; + + + + } + + catch + + ( + RequestExceptionInterface + + $e + ) + + { + + + + $this + -> + handleRequestException + ( + $e + ) + ; + + + + } + + + + + $clusterAffinity + + = + + $response + -> + getHeaderLine + ( + 'neo4j-cluster-affinity' + ) + ; + + + + $body + + = + + $response + -> + getBody + ( + ) + -> + getContents + ( + ) + ; + + + + $responseData + + = + + json_decode + ( + $body + , + + true + ) + ; + + + + $transactionId + + = + + $responseData + [ + 'transaction' + ] + [ + 'id' + ] + ; + + + + + return + + new + + Transaction + ( + + + + $this + -> + client + , + + + + $this + -> + responseParser + , + + + + $this + -> + requestFactory + , + + + + $clusterAffinity + , + + + + $transactionId + + + + ) + ; + + + + } + + + + + /** + + + * Handles request exceptions by parsing error details and throwing a Neo4jException. + + + * + + + * @throws Neo4jException + + + * + + + * @return never + + + */ + + + + private + + function + + handleRequestException + ( + RequestExceptionInterface + + $e + ) + : + + void + + + + { + + + + $response + + = + + method_exists + ( + $e + , + + 'getResponse' + ) + + ? + + $e + -> + getResponse + ( + ) + + : + + null + ; + + + + + if + + ( + $response + + instanceof + + ResponseInterface + ) + + { + + + + $errorResponse + + = + + json_decode + ( + (string) + $response + -> + getBody + ( + ) + , + + true + ) + ; + + + + throw + + Neo4jException + :: + fromNeo4jResponse + ( + $errorResponse + , + + $e + ) + ; + + + + } + + + + + throw + + new + + Neo4jException + ( + [ + 'message' + + => + + $e + -> + getMessage + ( + ) + ] + , + + 500 + , + + $e + ) + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Neo4jRequestFactory.php.xml b/xml-coverage/Neo4jRequestFactory.php.xml new file mode 100644 index 00000000..427d7feb --- /dev/null +++ b/xml-coverage/Neo4jRequestFactory.php.xml @@ -0,0 +1,1786 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI + ; + + + + use + + Neo4j\QueryAPI\Authentication\AuthenticateInterface + ; + + + use + + Neo4j\QueryAPI\Enums\AccessMode + ; + + + use + + Psr\Http\Message\RequestFactoryInterface + ; + + + use + + Psr\Http\Message\RequestInterface + ; + + + use + + Psr\Http\Message\StreamFactoryInterface + ; + + + + + class + + Neo4jRequestFactory + + + { + + + + public + + function + + __construct + ( + + + + private + + RequestFactoryInterface + + $psr17Factory + , + + + + private + + StreamFactoryInterface + + $streamFactory + , + + + + private + + Configuration + + $configuration + , + + + + private + + AuthenticateInterface + + $auth + + + + ) + + { + + + + } + + + + + public + + function + + buildRunQueryRequest + ( + + + + string + + $cypher + , + + + + array + + $parameters + + = + + [ + ] + + + + ) + : + + RequestInterface + + { + + + + return + + $this + -> + createRequest + ( + " + /db/ + { + $this + -> + configuration + -> + database + } + /query/v2 + " + , + + $cypher + , + + $parameters + ) + ; + + + + } + + + + + public + + function + + buildBeginTransactionRequest + ( + ) + : + + RequestInterface + + + + { + + + + return + + $this + -> + createRequest + ( + " + /db/ + { + $this + -> + configuration + -> + database + } + /query/v2/tx + " + , + + null + , + + null + ) + ; + + + + } + + + + + public + + function + + buildCommitRequest + ( + string + + $transactionId + , + + string + + $clusterAffinity + ) + : + + RequestInterface + + + + { + + + + return + + $this + -> + createRequest + ( + " + /db/ + { + $this + -> + configuration + -> + database + } + /query/v2/tx/ + { + $transactionId + } + /commit + " + , + + null + , + + null + ) + + + + -> + withHeader + ( + "neo4j-cluster-affinity" + , + + $clusterAffinity + ) + ; + + + + } + + + + + public + + function + + buildRollbackRequest + ( + string + + $transactionId + , + + string + + $clusterAffinity + ) + : + + RequestInterface + + + + { + + + + return + + $this + -> + createRequest + ( + " + /db/ + { + $this + -> + configuration + -> + database + } + /query/v2/tx/ + { + $transactionId + } + /rollback + " + , + + null + , + + null + ) + + + + -> + withHeader + ( + "neo4j-cluster-affinity" + , + + $clusterAffinity + ) + + + + -> + withMethod + ( + "DELETE" + ) + ; + + + + } + + + + + public + + function + + buildTransactionRunRequest + ( + string + + $query + , + + array + + $parameters + , + + string + + $transactionId + , + + string + + $clusterAffinity + ) + : + + RequestInterface + + + + { + + + + return + + $this + -> + createRequest + ( + " + /db/neo4j/query/v2/tx/ + { + $transactionId + } + " + , + + $query + , + + $parameters + ) + + + + -> + withHeader + ( + "neo4j-cluster-affinity" + , + + $clusterAffinity + ) + ; + + + + } + + + + + private + + function + + createRequest + ( + string + + $uri + , + + ? + string + + $cypher + , + + ? + array + + $parameters + ) + : + + RequestInterface + + + + { + + + + $request + + = + + $this + -> + psr17Factory + -> + createRequest + ( + 'POST' + , + + $this + -> + configuration + -> + baseUri + + . + + $uri + ) + ; + + + + + $payload + + = + + [ + ] + ; + + + + + if + + ( + $this + -> + configuration + -> + includeCounters + ) + + { + + + + $payload + [ + 'includeCounters' + ] + + = + + true + ; + + + + } + + + + + if + + ( + $this + -> + configuration + -> + accessMode + + === + + AccessMode + :: + READ + ) + + { + + + + $payload + [ + 'accessMode' + ] + + = + + AccessMode + :: + READ + ; + + + + } + + + + + if + + ( + $cypher + + !== + + null + + && + + $cypher + + !== + + '' + ) + + { + + + + $payload + [ + 'statement' + ] + + = + + $cypher + ; + + + + } + + + + + if + + ( + $parameters + + !== + + null + + && + + $parameters + + !== + + [ + ] + ) + + { + + + + $payload + [ + 'parameters' + ] + + = + + $parameters + ; + + + + } + + + + + /** @psalm-suppress RedundantCondition */ + + + + if + + ( + $this + -> + configuration + -> + bookmarks + + !== + + null + ) + + { + + + + $payload + [ + 'bookmarks' + ] + + = + + $this + -> + configuration + -> + bookmarks + ; + + + + } + + + + + $request + + = + + $request + -> + withHeader + ( + 'Content-Type' + , + + 'application/json' + ) + ; + + + + $request + + = + + $request + -> + withHeader + ( + 'Accept' + , + + 'application/vnd.neo4j.query' + ) + ; + + + + + $body + + = + + json_encode + ( + $payload + , + + JSON_THROW_ON_ERROR + ) + ; + + + + + $stream + + = + + $this + -> + streamFactory + -> + createStream + ( + $body + ) + ; + + + + + $request + + = + + $request + -> + withBody + ( + $stream + ) + ; + + + + + return + + $this + -> + auth + -> + authenticate + ( + $request + ) + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/OGM.php.xml b/xml-coverage/OGM.php.xml new file mode 100644 index 00000000..a4b24907 --- /dev/null +++ b/xml-coverage/OGM.php.xml @@ -0,0 +1,1963 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI + ; + + + + use + + Neo4j\QueryAPI\Objects\Point + ; + + + use + + Neo4j\QueryAPI\Objects\Node + ; + + + use + + Neo4j\QueryAPI\Objects\Relationship + ; + + + use + + Neo4j\QueryAPI\Objects\Path + ; + + + use + + InvalidArgumentException + ; + + + + + class + + OGM + + + { + + + + /** + + + * @param array<array-key, mixed> $data + + + * @return mixed + + + */ + + + + public + + function + + map + ( + array + + $data + ) + : + + mixed + + + + { + + + + if + + ( + ! + isset + ( + $data + [ + '$type' + ] + ) + + || + + ! + array_key_exists + ( + '_value' + , + + $data + ) + + || + + ! + is_string + ( + $data + [ + '$type' + ] + ) + ) + + { + + + + throw + + new + + InvalidArgumentException + ( + "Unknown object type: " + + . + + json_encode + ( + $data + , + + JSON_THROW_ON_ERROR + ) + ) + ; + + + + } + + + + + return + + match + + ( + $data + [ + '$type' + ] + ) + + { + + + + 'Integer' + , + + 'Float' + , + + 'String' + , + + 'Boolean' + , + + 'Duration' + , + + 'OffsetDateTime' + + => + + $data + [ + '_value' + ] + , + + + + 'Array' + , + + 'List' + + => + + is_array + ( + $data + [ + '_value' + ] + ) + + ? + + array_map + ( + [ + $this + , + + 'map' + ] + , + + $data + [ + '_value' + ] + ) + + : + + [ + ] + , + + + + 'Null' + + => + + null + , + + + + 'Node' + + => + + $this + -> + mapNode + ( + $data + [ + '_value' + ] + ) + , + + + + 'Map' + + => + + is_array + ( + $data + [ + '_value' + ] + ) + + ? + + $this + -> + mapProperties + ( + $data + [ + '_value' + ] + ) + + : + + [ + ] + , + + + + 'Point' + + => + + $this + -> + parsePoint + ( + $data + [ + '_value' + ] + ) + , + + + + 'Relationship' + + => + + $this + -> + mapRelationship + ( + $data + [ + '_value' + ] + ) + , + + + + 'Path' + + => + + $this + -> + mapPath + ( + $data + [ + '_value' + ] + ) + , + + + + default + + => + + throw + + new + + InvalidArgumentException + ( + 'Unknown type: ' + + . + + json_encode + ( + $data + , + + JSON_THROW_ON_ERROR + ) + ) + , + + + + } + ; + + + + } + + + + + + private + + function + + parsePoint + ( + string + + $value + ) + : + + Point + + + + { + + + + if + + ( + preg_match + ( + '/SRID=(\d+);POINT(?: Z)? \(([-\d.]+) ([-\d.]+)(?: ([-\d.]+))?\)/' + , + + $value + , + + $matches + ) + ) + + { + + + + $srid + + = + + (int) + + $matches + [ + 1 + ] + ; + + + + $x + + = + + (float) + + $matches + [ + 2 + ] + ; + + + + $y + + = + + (float) + + $matches + [ + 3 + ] + ; + + + + $z + + = + + isset + ( + $matches + [ + 4 + ] + ) + + ? + + (float) + + $matches + [ + 4 + ] + + : + + null + ; + + + + + return + + new + + Point + ( + $x + , + + $y + , + + $z + , + + $srid + ) + ; + + + + } + + + + + throw + + new + + InvalidArgumentException + ( + "Invalid Point format: " + + . + + $value + ) + ; + + + + } + + + + + + private + + function + + mapNode + ( + array + + $nodeData + ) + : + + Node + + + + { + + + + return + + new + + Node + ( + + + + labels + : + + $nodeData + [ + '_labels' + ] + + ?? + + [ + ] + , + + + + properties + : + + $this + -> + mapProperties + ( + $nodeData + [ + '_properties' + ] + + ?? + + [ + ] + ) + + + + ) + ; + + + + } + + + + + private + + function + + mapRelationship + ( + array + + $relationshipData + ) + : + + Relationship + + + + { + + + + return + + new + + Relationship + ( + + + + type + : + + $relationshipData + [ + '_type' + ] + + ?? + + 'UNKNOWN' + , + + + + properties + : + + $this + -> + mapProperties + ( + $relationshipData + [ + '_properties' + ] + + ?? + + [ + ] + ) + + + + ) + ; + + + + } + + + + + + public + + static + + function + + parseWKT + ( + string + + $wkt + ) + : + + Point + + + + { + + + + $sridPos + + = + + strpos + ( + $wkt + , + + ';' + ) + ; + + + + if + + ( + $sridPos + + === + + false + ) + + { + + + + throw + + new + + \InvalidArgumentException + ( + "Invalid WKT format: missing ';'" + ) + ; + + + + } + + + + $sridPart + + = + + substr + ( + $wkt + , + + 0 + , + + $sridPos + ) + ; + + + + $srid + + = + + (int) + str_replace + ( + 'SRID=' + , + + '' + , + + $sridPart + ) + ; + + + + + $pointPos + + = + + strpos + ( + $wkt + , + + 'POINT' + ) + ; + + + + if + + ( + $pointPos + + === + + false + ) + + { + + + + throw + + new + + \InvalidArgumentException + ( + "Invalid WKT format: missing 'POINT'" + ) + ; + + + + } + + + + $pointPart + + = + + substr + ( + $wkt + , + + $pointPos + + + + + 6 + ) + ; + + + + + $pointPart + + = + + str_replace + ( + 'Z' + , + + '' + , + + $pointPart + ) + ; + + + + $pointPart + + = + + trim + ( + $pointPart + , + + ' ()' + ) + ; + + + + $coordinates + + = + + explode + ( + ' ' + , + + $pointPart + ) + ; + + + + + [ + $x + , + + $y + , + + $z + ] + + = + + array_pad + ( + array_map + ( + 'floatval' + , + + $coordinates + ) + , + + 3 + , + + 0.0 + ) + ; + + + + + return + + new + + Point + ( + $x + , + + $y + , + + $z + , + + $srid + ) + ; + + + + } + + + + + + private + + function + + mapPath + ( + array + + $pathData + ) + : + + Path + + + + { + + + + $nodes + + = + + [ + ] + ; + + + + $relationships + + = + + [ + ] + ; + + + + + foreach + + ( + $pathData + + as + + $item + ) + + { + + + + if + + ( + $item + [ + '$type' + ] + + === + + 'Node' + ) + + { + + + + $nodes + [ + ] + + = + + $this + -> + mapNode + ( + $item + [ + '_value' + ] + ) + ; + + + + } + + elseif + + ( + $item + [ + '$type' + ] + + === + + 'Relationship' + ) + + { + + + + $relationships + [ + ] + + = + + $this + -> + mapRelationship + ( + $item + [ + '_value' + ] + ) + ; + + + + } + + + + } + + + + + return + + new + + Path + ( + $nodes + , + + $relationships + ) + ; + + + + } + + + + + private + + function + + mapProperties + ( + array + + $properties + ) + : + + array + + + + { + + + + + $mappedProperties + + = + + [ + ] + ; + + + + + foreach + + ( + $properties + + as + + $key + + => + + $value + ) + + { + + + + if + + ( + is_array + ( + $value + ) + + && + + isset + ( + $value + [ + '$type' + ] + , + + $value + [ + '_value' + ] + ) + ) + + { + + + + $mappedProperties + [ + $key + ] + + = + + $this + -> + map + ( + $value + ) + ; + + + + } + + elseif + + ( + is_scalar + ( + $value + ) + ) + + { + + + + $mappedProperties + [ + $key + ] + + = + + $value + ; + + + + } + + elseif + + ( + is_array + ( + $value + ) + + && + + ! + isset + ( + $value + [ + '$type' + ] + ) + ) + + { + + + + $mappedProperties + [ + $key + ] + + = + + $this + -> + map + ( + [ + '$type' + + => + + 'Map' + , + + '_value' + + => + + $value + ] + ) + ; + + + + } + + else + + { + + + + error_log + ( + " + Invalid property format for key: + { + $key + } + => + " + + . + + json_encode + ( + $value + , + + JSON_THROW_ON_ERROR + ) + ) + ; + + + + + throw + + new + + \InvalidArgumentException + ( + " + Invalid property format for key: + { + $key + } + " + ) + ; + + + + } + + + + } + + + + + return + + $mappedProperties + ; + + + + } + + + + + } + + + + + diff --git a/xml-coverage/Objects/Authentication.php.xml b/xml-coverage/Objects/Authentication.php.xml new file mode 100644 index 00000000..774b7faf --- /dev/null +++ b/xml-coverage/Objects/Authentication.php.xml @@ -0,0 +1,620 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + use + + Neo4j\QueryAPI\Authentication\AuthenticateInterface + ; + + + use + + Neo4j\QueryAPI\Authentication\BasicAuthentication + ; + + + use + + Neo4j\QueryAPI\Authentication\BearerAuthentication + ; + + + use + + Neo4j\QueryAPI\Authentication\NoAuth + ; + + + + + class + + Authentication + + + { + + + + public + + static + + function + + basic + ( + string + + $username + , + + string + + $password + ) + : + + AuthenticateInterface + + + + { + + + + return + + new + + BasicAuthentication + ( + $username + , + + $password + ) + ; + + + + } + + + + + + public + + static + + function + + fromEnvironment + ( + ) + : + + AuthenticateInterface + + + + { + + + + $username + + = + + getenv + ( + "NEO4J_USERNAME" + ) + ; + + + + $password + + = + + getenv + ( + "NEO4J_PASSWORD" + ) + ; + + + + + return + + new + + BasicAuthentication + ( + + + + $username + + !== + + false + + ? + + $username + + : + + null + , + + + + $password + + !== + + false + + ? + + $password + + : + + null + + + + ) + ; + + + + } + + + + + + public + + static + + function + + bearer + ( + string + + $token + ) + : + + AuthenticateInterface + + + + { + + + + return + + new + + BearerAuthentication + ( + $token + ) + ; + + + + } + + + + + public + + static + + function + + noAuth + ( + ) + : + + NoAuth + + + + { + + + + return + + new + + NoAuth + ( + ) + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Objects/Bookmarks.php.xml b/xml-coverage/Objects/Bookmarks.php.xml new file mode 100644 index 00000000..e27f8de1 --- /dev/null +++ b/xml-coverage/Objects/Bookmarks.php.xml @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + use + + JsonSerializable + ; + + + + + class + + Bookmarks + + implements + + \Countable + , + + JsonSerializable + + + { + + + + public + + function + + __construct + ( + public + + array + + $bookmarks + ) + + + + { + + + + } + + + + + public + + function + + addBookmarks + ( + ? + Bookmarks + + $newBookmarks + ) + : + + void + + + + { + + + + if + + ( + $newBookmarks + + !== + + null + ) + + { + + + + $this + -> + bookmarks + + = + + array_unique + ( + array_merge + ( + $this + -> + bookmarks + , + + $newBookmarks + -> + bookmarks + ) + ) + ; + + + + } + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + count + ( + ) + : + + int + + + + { + + + + return + + count + ( + $this + -> + bookmarks + ) + ; + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + jsonSerialize + ( + ) + : + + array + + + + { + + + + return + + $this + -> + bookmarks + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Objects/Node.php.xml b/xml-coverage/Objects/Node.php.xml new file mode 100644 index 00000000..85d56c8d --- /dev/null +++ b/xml-coverage/Objects/Node.php.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + /** + + + * Represents a Neo4j Node with labels and properties. + + + */ + + + + + class + + Node + + + { + + + + /** + + + * Node constructor + + + * + + + * @param string[] $labels Array of labels for the node. + + + * @param array<string, mixed> $properties Associative array of properties. + + + */ + + + + public + + function + + __construct + ( + public + + array + + $labels + , + + public + + array + + $properties + ) + + + + { + + + + } + + + + + /** + + + * Convert the Node object to an array representation. + + + * @return array Node data as an array. + + + */ + + + + public + + function + + toArray + ( + ) + : + + array + + + + { + + + + return + + [ + + + + '_labels' + + => + + $this + -> + labels + , + + + + '_properties' + + => + + $this + -> + properties + , + + + + ] + ; + + + + } + + + + } + + + + + diff --git a/xml-coverage/Objects/Path.php.xml b/xml-coverage/Objects/Path.php.xml new file mode 100644 index 00000000..c0d68c37 --- /dev/null +++ b/xml-coverage/Objects/Path.php.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + /** + + + * Represents a path in a Neo4j graph, consisting of nodes and relationships. + + + */ + + + + + class + + Path + + + { + + + + /** + + + * @var Node[] Array of nodes in the path. + + + */ + + + + public + + array + + $nodes + ; + + + + + /** + + + * @var Relationship[] Array of relationships in the path. + + + */ + + + + public + + array + + $relationships + ; + + + + + /** + + + * Path constructor. + + + * + + + * @param Node[] $nodes Array of nodes in the path. + + + * @param Relationship[] $relationships Array of relationships in the path. + + + */ + + + + public + + function + + __construct + ( + array + + $nodes + , + + array + + $relationships + ) + + + + { + + + + $this + -> + nodes + + = + + $nodes + ; + + + + $this + -> + relationships + + = + + $relationships + ; + + + + } + + + + } + + + + + diff --git a/xml-coverage/Objects/Point.php.xml b/xml-coverage/Objects/Point.php.xml new file mode 100644 index 00000000..1d86bcb1 --- /dev/null +++ b/xml-coverage/Objects/Point.php.xml @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + /** + + + * Represents a point with x, y, z coordinates, and SRID (Spatial Reference System Identifier). + + + */ + + + + class + + Point + + + { + + + + /** + + + * @param float $x The x coordinate of the point. + + + * @param float $y The y coordinate of the point. + + + * @param float|null $z The z coordinate of the point, or null if not applicable. + + + * @param int $srid The Spatial Reference System Identifier (SRID). + + + */ + + + + public + + function + + __construct + ( + + + + public + + float + + $x + , + + + + public + + float + + $y + , + + + + public + + float + | + null + + $z + , + + + + public + + int + + $srid + , + + + + ) + + { + + + + } + + + + + /** + + + * Convert the Point object to a string representation. + + + * + + + * @return string String representation in the format: "SRID=<srid>;POINT (<x> <y> <z>)". + + + */ + + + + public + + function + + __toString + ( + ) + : + + string + + + + { + + + + return + + " + SRID= + { + $this + -> + srid + } + ;POINT ( + { + $this + -> + x + } + + { + $this + -> + y + } + ) + " + ; + + + + } + + + + } + + + + + diff --git a/xml-coverage/Objects/ProfiledQueryPlan.php.xml b/xml-coverage/Objects/ProfiledQueryPlan.php.xml new file mode 100644 index 00000000..305c5d53 --- /dev/null +++ b/xml-coverage/Objects/ProfiledQueryPlan.php.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + + class + + ProfiledQueryPlan + + + { + + + + public + + function + + __construct + ( + + + + public + + ProfiledQueryPlanArguments + + $arguments + , + + + + public + + int + + $dbHits + + = + + 0 + , + + + + public + + int + + $records + + = + + 0 + , + + + + public + + bool + + $hasPageCacheStats + + = + + false + , + + + + public + + int + + $pageCacheHits + + = + + 0 + , + + + + public + + int + + $pageCacheMisses + + = + + 0 + , + + + + public + + float + + $pageCacheHitRatio + + = + + 0.0 + , + + + + public + + int + + $time + + = + + 0 + , + + + + public + + string + + $operatorType + + = + + '' + , + + + + public + + array + + $children + + = + + [ + ] + , + + + + public + + array + + $identifiers + + = + + [ + ] + + + + ) + + { + + + + } + + + } + + + + + diff --git a/xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml b/xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml new file mode 100644 index 00000000..3c0a7bd3 --- /dev/null +++ b/xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + + class + + ProfiledQueryPlanArguments + + + { + + + + public + + function + + __construct + ( + + + + public + + ? + int + + $globalMemory + + = + + null + , + + + + public + + ? + string + + $plannerImpl + + = + + null + , + + + + public + + ? + int + + $memory + + = + + null + , + + + + public + + ? + string + + $stringRepresentation + + = + + null + , + + + + public + + ? + string + + $runtime + + = + + null + , + + + + public + + ? + int + + $time + + = + + null + , + + + + public + + ? + int + + $pageCacheMisses + + = + + null + , + + + + public + + ? + int + + $pageCacheHits + + = + + null + , + + + + public + + ? + string + + $runtimeImpl + + = + + null + , + + + + public + + ? + int + + $version + + = + + null + , + + + + public + + ? + int + + $dbHits + + = + + null + , + + + + public + + ? + int + + $batchSize + + = + + null + , + + + + public + + ? + string + + $details + + = + + null + , + + + + public + + ? + string + + $plannerVersion + + = + + null + , + + + + public + + ? + string + + $pipelineInfo + + = + + null + , + + + + public + + null + | + string + | + float + + $runtimeVersion + + = + + null + , + + + + public + + ? + int + + $id + + = + + null + , + + + + public + + ? + float + + $estimatedRows + + = + + null + , + + + + public + + ? + string + + $planner + + = + + null + , + + + + public + + ? + int + + $rows + + = + + null + + + + ) + + { + + + + } + + + } + + + + + diff --git a/xml-coverage/Objects/Relationship.php.xml b/xml-coverage/Objects/Relationship.php.xml new file mode 100644 index 00000000..add1d0da --- /dev/null +++ b/xml-coverage/Objects/Relationship.php.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + /** + + + * Represents a relationship in a Neo4j graph, with a type and associated properties. + + + */ + + + + + class + + Relationship + + + { + + + + /** + + + * @var string The type of the relationship (e.g., "FRIENDS_WITH", "WORKS_FOR"). + + + */ + + + + public + + string + + $type + ; + + + + + /** + + + * @var array<string, mixed> Associative array of properties for the relationship. + + + */ + + + + public + + array + + $properties + ; + + + + + /** + + + * Relationship constructor. + + + * + + + * @param string $type The type of the relationship. + + + * @param array<string, mixed> $properties Associative array of properties for the relationship. + + + */ + + + + public + + function + + __construct + ( + string + + $type + , + + array + + $properties + + = + + [ + ] + ) + + + + { + + + + $this + -> + type + + = + + $type + ; + + + + $this + -> + properties + + = + + $properties + ; + + + + } + + + + } + + + + + diff --git a/xml-coverage/Objects/ResultCounters.php.xml b/xml-coverage/Objects/ResultCounters.php.xml new file mode 100644 index 00000000..fa97960e --- /dev/null +++ b/xml-coverage/Objects/ResultCounters.php.xml @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Objects + ; + + + + + class + + ResultCounters + + + { + + + + public + + function + + __construct + ( + + + + public + + bool + + $containsUpdates + + = + + false + , + + + + public + + int + + $nodesCreated + + = + + 0 + , + + + + public + + int + + $nodesDeleted + + = + + 0 + , + + + + public + + int + + $propertiesSet + + = + + 0 + , + + + + public + + int + + $relationshipsCreated + + = + + 0 + , + + + + public + + int + + $relationshipsDeleted + + = + + 0 + , + + + + public + + int + + $labelsAdded + + = + + 0 + , + + + + public + + int + + $labelsRemoved + + = + + 0 + , + + + + public + + int + + $indexesAdded + + = + + 0 + , + + + + public + + int + + $indexesRemoved + + = + + 0 + , + + + + public + + int + + $constraintsAdded + + = + + 0 + , + + + + public + + int + + $constraintsRemoved + + = + + 0 + , + + + + public + + bool + + $containsSystemUpdates + + = + + false + , + + + + public + + int + + $systemUpdates + + = + + 0 + + + + ) + + { + + + + } + + + + } + + + + + diff --git a/xml-coverage/ResponseParser.php.xml b/xml-coverage/ResponseParser.php.xml new file mode 100644 index 00000000..3f9192be --- /dev/null +++ b/xml-coverage/ResponseParser.php.xml @@ -0,0 +1,3853 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI + ; + + + + use + + Neo4j\QueryAPI\Enums\AccessMode + ; + + + use + + Neo4j\QueryAPI\Exception\Neo4jException + ; + + + use + + Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments + ; + + + use + + Psr\Http\Message\ResponseInterface + ; + + + use + + Neo4j\QueryAPI\Results\ResultSet + ; + + + use + + Neo4j\QueryAPI\Objects\ResultCounters + ; + + + use + + Neo4j\QueryAPI\Objects\Bookmarks + ; + + + use + + Neo4j\QueryAPI\Results\ResultRow + ; + + + use + + RuntimeException + ; + + + use + + Neo4j\QueryAPI\Objects\ProfiledQueryPlan + ; + + + + + class + + ResponseParser + + + { + + + + public + + function + + __construct + ( + private + + OGM + + $ogm + ) + + + + { + + + + } + + + + + public + + function + + parseRunQueryResponse + ( + ResponseInterface + + $response + ) + : + + ResultSet + + + + { + + + + $data + + = + + $this + -> + validateAndDecodeResponse + ( + $response + ) + ; + + + + + $rows + + = + + $this + -> + mapRows + ( + $data + [ + 'data' + ] + [ + 'fields' + ] + + ?? + + [ + ] + , + + $data + [ + 'data' + ] + [ + 'values' + ] + + ?? + + [ + ] + ) + ; + + + + $counters + + = + + isset + ( + $data + [ + 'counters' + ] + ) + + ? + + $this + -> + buildCounters + ( + $data + [ + 'counters' + ] + ) + + : + + null + ; + + + + $bookmarks + + = + + $this + -> + buildBookmarks + ( + $data + [ + 'bookmarks' + ] + + ?? + + [ + ] + ) + ; + + + + $profiledQueryPlan + + = + + $this + -> + buildProfiledQueryPlan + ( + $data + [ + 'profiledQueryPlan' + ] + + ?? + + null + ) + ; + + + + $accessMode + + = + + $this + -> + getAccessMode + ( + $data + [ + 'accessMode' + ] + + ?? + + '' + ) + ; + + + + + return + + new + + ResultSet + ( + $rows + , + + $bookmarks + , + + $accessMode + , + + $counters + , + + $profiledQueryPlan + ) + ; + + + + } + + + + + private + + function + + validateAndDecodeResponse + ( + ResponseInterface + + $response + ) + : + + array + + + + { + + + + if + + ( + $response + -> + getStatusCode + ( + ) + + >= + + 400 + ) + + { + + + + $errorResponse + + = + + json_decode + ( + (string) + $response + -> + getBody + ( + ) + , + + true + ) + ; + + + + throw + + Neo4jException + :: + fromNeo4jResponse + ( + $errorResponse + ) + ; + + + + } + + + + + $contents + + = + + $response + -> + getBody + ( + ) + -> + getContents + ( + ) + ; + + + + $data + + = + + json_decode + ( + $contents + , + + true + ) + ; + + + + + if + + ( + ! + isset + ( + $data + [ + 'data' + ] + ) + ) + + { + + + + throw + + new + + RuntimeException + ( + 'Invalid response: "data" key missing or null.' + ) + ; + + + + } + + + + + return + + $data + ; + + + + } + + + + + /** + + + * @return list<ResultRow> + + + */ + + + + /** + + + * @param list<string> $fields + + + * @param list<array<array-key, mixed>> $values + + + * @return list<ResultRow> + + + */ + + + + private + + function + + mapRows + ( + array + + $fields + , + + array + + $values + ) + : + + array + + + + { + + + + return + + array_map + ( + + + + fn + + ( + array + + $row + ) + : + + ResultRow + + => + + new + + ResultRow + ( + + + + array_combine + ( + + + + $fields + , + + + + array_map + ( + [ + $this + , + + 'formatOGMOutput' + ] + , + + $row + ) + + + + ) + + ? + : + + [ + ] + + // Ensure array_combine never returns false + + + + ) + , + + + + $values + + + + ) + ; + + + + } + + + + + /** + + + * Ensures mapped output follows expected format + + + * + + + * @param mixed $value + + + * @return mixed + + + */ + + + + private + + function + + formatOGMOutput + ( + mixed + + $value + ) + : + + mixed + + + + { + + + + if + + ( + is_array + ( + $value + ) + + && + + array_key_exists + ( + '$type' + , + + $value + ) + + && + + array_key_exists + ( + '_value' + , + + $value + ) + ) + + { + + + + return + + $this + -> + ogm + -> + map + ( + $value + ) + ; + + + + } + + + + + return + + $value + ; + + + + } + + + + + private + + function + + buildCounters + ( + array + + $countersData + ) + : + + ResultCounters + + + + { + + + + return + + new + + ResultCounters + ( + + + + containsUpdates + : + + $countersData + [ + 'containsUpdates' + ] + + ?? + + false + , + + + + nodesCreated + : + + $countersData + [ + 'nodesCreated' + ] + + ?? + + 0 + , + + + + nodesDeleted + : + + $countersData + [ + 'nodesDeleted' + ] + + ?? + + 0 + , + + + + propertiesSet + : + + $countersData + [ + 'propertiesSet' + ] + + ?? + + 0 + , + + + + relationshipsCreated + : + + $countersData + [ + 'relationshipsCreated' + ] + + ?? + + 0 + , + + + + relationshipsDeleted + : + + $countersData + [ + 'relationshipsDeleted' + ] + + ?? + + 0 + , + + + + labelsAdded + : + + $countersData + [ + 'labelsAdded' + ] + + ?? + + 0 + , + + + + labelsRemoved + : + + $countersData + [ + 'labelsRemoved' + ] + + ?? + + 0 + , + + + + indexesAdded + : + + $countersData + [ + 'indexesAdded' + ] + + ?? + + 0 + , + + + + indexesRemoved + : + + $countersData + [ + 'indexesRemoved' + ] + + ?? + + 0 + , + + + + constraintsAdded + : + + $countersData + [ + 'constraintsAdded' + ] + + ?? + + 0 + , + + + + constraintsRemoved + : + + $countersData + [ + 'constraintsRemoved' + ] + + ?? + + 0 + , + + + + systemUpdates + : + + $countersData + [ + 'systemUpdates' + ] + + ?? + + 0 + , + + + + ) + ; + + + + } + + + + + private + + function + + buildBookmarks + ( + array + + $bookmarksData + ) + : + + Bookmarks + + + + { + + + + return + + new + + Bookmarks + ( + $bookmarksData + ) + ; + + + + } + + + + + private + + function + + getAccessMode + ( + string + + $accessModeData + ) + : + + AccessMode + + + + { + + + + return + + AccessMode + :: + tryFrom + ( + $accessModeData + ) + + ?? + + AccessMode + :: + WRITE + ; + + + + } + + + + + private + + function + + buildProfiledQueryPlan + ( + mixed + + $queryPlanData + ) + : + + ? + ProfiledQueryPlan + + + + { + + + + if + + ( + ! + + is_array + ( + $queryPlanData + ) + ) + + { + + + + return + + null + ; + + + + } + + + + + /** @var array<array-key, mixed> $mappedArguments */ + + + + $mappedArguments + + = + + array_map + ( + function + + ( + mixed + + $value + ) + : + + mixed + + { + + + + if + + ( + is_array + ( + $value + ) + + && + + array_key_exists + ( + '$type' + , + + $value + ) + + && + + array_key_exists + ( + '_value' + , + + $value + ) + ) + + { + + + + return + + $this + -> + ogm + -> + map + ( + $value + ) + ; + + + + } + + + + return + + $value + ; + + + + } + , + + $queryPlanData + [ + 'arguments' + ] + + ?? + + [ + ] + ) + ; + + + + + $queryArguments + + = + + new + + ProfiledQueryPlanArguments + ( + + + + globalMemory + : + + $mappedArguments + [ + 'GlobalMemory' + ] + + ?? + + null + , + + + + plannerImpl + : + + $mappedArguments + [ + 'planner-impl' + ] + + ?? + + null + , + + + + memory + : + + $mappedArguments + [ + 'Memory' + ] + + ?? + + null + , + + + + stringRepresentation + : + + $mappedArguments + [ + 'string-representation' + ] + + ?? + + null + , + + + + runtime + : + + $mappedArguments + [ + 'runtime' + ] + + ?? + + null + , + + + + time + : + + $mappedArguments + [ + 'Time' + ] + + ?? + + null + , + + + + pageCacheMisses + : + + $mappedArguments + [ + 'PageCacheMisses' + ] + + ?? + + null + , + + + + pageCacheHits + : + + $mappedArguments + [ + 'PageCacheHits' + ] + + ?? + + null + , + + + + runtimeImpl + : + + $mappedArguments + [ + 'runtime-impl' + ] + + ?? + + null + , + + + + version + : + + $mappedArguments + [ + 'version' + ] + + ?? + + null + , + + + + dbHits + : + + $mappedArguments + [ + 'DbHits' + ] + + ?? + + null + , + + + + batchSize + : + + $mappedArguments + [ + 'batch-size' + ] + + ?? + + null + , + + + + details + : + + $mappedArguments + [ + 'Details' + ] + + ?? + + null + , + + + + plannerVersion + : + + $mappedArguments + [ + 'planner-version' + ] + + ?? + + null + , + + + + pipelineInfo + : + + $mappedArguments + [ + 'PipelineInfo' + ] + + ?? + + null + , + + + + runtimeVersion + : + + $mappedArguments + [ + 'runtime-version' + ] + + ?? + + null + , + + + + id + : + + $mappedArguments + [ + 'Id' + ] + + ?? + + null + , + + + + estimatedRows + : + + $mappedArguments + [ + 'EstimatedRows' + ] + + ?? + + null + , + + + + planner + : + + $mappedArguments + [ + 'planner' + ] + + ?? + + null + , + + + + rows + : + + $mappedArguments + [ + 'Rows' + ] + + ?? + + null + + + + ) + ; + + + + $children + + = + + array_map + ( + fn + + ( + mixed + + $child + ) + : + + ? + ProfiledQueryPlan + + => + + $this + -> + buildProfiledQueryPlan + ( + $child + ) + , + + $queryPlanData + [ + 'children' + ] + + ?? + + [ + ] + ) + ; + + + + + return + + new + + ProfiledQueryPlan + ( + + + + $queryArguments + , + + + + $queryPlanData + [ + 'dbHits' + ] + + ?? + + 0 + , + + + + $queryPlanData + [ + 'records' + ] + + ?? + + 0 + , + + + + $queryPlanData + [ + 'hasPageCacheStats' + ] + + ?? + + false + , + + + + $queryPlanData + [ + 'pageCacheHits' + ] + + ?? + + 0 + , + + + + $queryPlanData + [ + 'pageCacheMisses' + ] + + ?? + + 0 + , + + + + $queryPlanData + [ + 'pageCacheHitRatio' + ] + + ?? + + 0.0 + , + + + + $queryPlanData + [ + 'time' + ] + + ?? + + 0 + , + + + + $queryPlanData + [ + 'operatorType' + ] + + ?? + + '' + , + + + + $children + , + + + + $queryPlanData + [ + 'identifiers' + ] + + ?? + + [ + ] + + + + ) + ; + + + + + } + + + } + + + + + diff --git a/xml-coverage/Results/ResultRow.php.xml b/xml-coverage/Results/ResultRow.php.xml new file mode 100644 index 00000000..242fc842 --- /dev/null +++ b/xml-coverage/Results/ResultRow.php.xml @@ -0,0 +1,589 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Results + ; + + + + use + + ArrayIterator + ; + + + use + + BadMethodCallException + ; + + + use + + Countable + ; + + + use + + IteratorAggregate + ; + + + use + + OutOfBoundsException + ; + + + use + + ArrayAccess + ; + + + use + + Traversable + ; + + + + /** + + + * @template TValue + + + * @implements ArrayAccess<string, TValue> + + + * @implements IteratorAggregate<string, TValue> + + + */ + + + + class + + ResultRow + + implements + + ArrayAccess + , + + Countable + , + + IteratorAggregate + + + { + + + + /** @var array<string, TValue> */ + + + + private + + array + + $data + ; + + + + + public + + function + + __construct + ( + array + + $data + ) + + + + { + + + + $this + -> + data + + = + + $data + ; + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + offsetGet + ( + mixed + + $offset + ) + : + + mixed + + + + { + + + + if + + ( + ! + $this + -> + offsetExists + ( + $offset + ) + ) + + { + + + + throw + + new + + OutOfBoundsException + ( + " + Column + { + $offset + } + not found. + " + ) + ; + + + + } + + + + return + + $this + -> + data + [ + $offset + ] + ; + + + + } + + + + + + #[ + \Override + ] + + + + public + + function + + offsetExists + ( + $offset + ) + : + + bool + + + + { + + + + return + + isset + ( + $this + -> + data + [ + $offset + ] + ) + ; + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + offsetSet + ( + $offset + , + + $value + ) + : + + void + + + + { + + + + throw + + new + + BadMethodCallException + ( + " + You can't set the value of column + { + $offset + } + . + " + ) + ; + + + + } + + + + #[ + \Override + ] + + + + public + + function + + offsetUnset + ( + $offset + ) + : + + void + + + + { + + + + throw + + new + + BadMethodCallException + ( + " + You can't Unset + { + $offset + } + . + " + ) + ; + + + + + } + + + + public + + function + + get + ( + string + + $row + ) + : + + mixed + + + + { + + + + return + + $this + -> + offsetGet + ( + $row + ) + ; + + + + } + + + + #[ + \Override + ] + + + + public + + function + + count + ( + ) + : + + int + + + + { + + + + return + + count + ( + $this + -> + data + ) + ; + + + + } + + + + + #[ + \Override + ] + + + + public + + function + + getIterator + ( + ) + : + + Traversable + + + + { + + + + return + + new + + ArrayIterator + ( + $this + -> + data + ) + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/Results/ResultSet.php.xml b/xml-coverage/Results/ResultSet.php.xml new file mode 100644 index 00000000..c27eceab --- /dev/null +++ b/xml-coverage/Results/ResultSet.php.xml @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI\Results + ; + + + + use + + ArrayIterator + ; + + + use + + Countable + ; + + + use + + IteratorAggregate + ; + + + use + + Neo4j\QueryAPI\Enums\AccessMode + ; + + + use + + Neo4j\QueryAPI\Objects\Bookmarks + ; + + + use + + Neo4j\QueryAPI\Objects\ProfiledQueryPlan + ; + + + use + + Neo4j\QueryAPI\Objects\ResultCounters + ; + + + use + + Traversable + ; + + + + /** + + + * @template TValue + + + * @implements IteratorAggregate<int, ResultRow> + + + */ + + + + class + + ResultSet + + implements + + IteratorAggregate + , + + Countable + + + { + + + + /** + + + * @param list<ResultRow> $rows + + + */ + + + + public + + function + + __construct + ( + + + + public + + array + + $rows + , + + + + public + + Bookmarks + + $bookmarks + , + + + + public + + AccessMode + + $accessMode + , + + + + public + + ? + ResultCounters + + $counters + + = + + null + , + + + + public + + ? + ProfiledQueryPlan + + $profiledQueryPlan + + = + + null + + + + ) + + { + + + + } + + + + + /** + + + * @return Traversable<int, ResultRow> + + + */ + + + + #[ + \Override + ] + + + + public + + function + + getIterator + ( + ) + : + + Traversable + + + + { + + + + return + + new + + ArrayIterator + ( + $this + -> + rows + ) + ; + + + + } + + + + + + #[ + \Override + ] + + + + public + + function + + count + ( + ) + : + + int + + + + { + + + + return + + count + ( + $this + -> + rows + ) + ; + + + + } + + + + } + + + + + diff --git a/xml-coverage/Transaction.php.xml b/xml-coverage/Transaction.php.xml new file mode 100644 index 00000000..daf00895 --- /dev/null +++ b/xml-coverage/Transaction.php.xml @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + + + + namespace + + Neo4j\QueryAPI + ; + + + + use + + Neo4j\QueryAPI\Exception\Neo4jException + ; + + + use + + Neo4j\QueryAPI\Results\ResultSet + ; + + + use + + Psr\Http\Client\ClientInterface + ; + + + use + + Psr\Http\Client\RequestExceptionInterface + ; + + + use + + Psr\Http\Message\ResponseInterface + ; + + + use + + stdClass + ; + + + + + class + + Transaction + + + { + + + + public + + function + + __construct + ( + + + + private + + ClientInterface + + $client + , + + + + private + + ResponseParser + + $responseParser + , + + + + private + + Neo4jRequestFactory + + $requestFactory + , + + + + private + + string + + $clusterAffinity + , + + + + private + + string + + $transactionId + + + + ) + + { + + + + } + + + + + /** + + + * Execute a Cypher query within the transaction. + + + * + + + * @param string $query The Cypher query to be executed. + + + * @param array $parameters Parameters for the query. + + + * @return ResultSet The result rows in ResultSet format. + + + * @throws Neo4jException If the response structure is invalid. + + + */ + + + + public + + function + + run + ( + string + + $query + , + + array + + $parameters + ) + : + + ResultSet + + + + { + + + + $request + + = + + $this + -> + requestFactory + -> + buildTransactionRunRequest + ( + $query + , + + $parameters + , + + $this + -> + transactionId + , + + $this + -> + clusterAffinity + ) + ; + + + + + $response + + = + + null + ; + + + + + try + + { + + + + $response + + = + + $this + -> + client + -> + sendRequest + ( + $request + ) + ; + + + + } + + catch + + ( + RequestExceptionInterface + + $e + ) + + { + + + + $this + -> + handleRequestException + ( + $e + ) + ; + + + + } + + + + + if + + ( + ! + $response + + instanceof + + ResponseInterface + ) + + { + + + + throw + + new + + Neo4jException + ( + [ + 'message' + + => + + 'Failed to receive a valid response from Neo4j' + ] + , + + 500 + ) + ; + + + + } + + + + + return + + $this + -> + responseParser + -> + parseRunQueryResponse + ( + $response + ) + ; + + + + } + + + + + public + + function + + commit + ( + ) + : + + void + + + + { + + + + $request + + = + + $this + -> + requestFactory + -> + buildCommitRequest + ( + $this + -> + transactionId + , + + $this + -> + clusterAffinity + ) + ; + + + + $this + -> + client + -> + sendRequest + ( + $request + ) + ; + + + + } + + + + + public + + function + + rollback + ( + ) + : + + void + + + + { + + + + $request + + = + + $this + -> + requestFactory + -> + buildRollbackRequest + ( + $this + -> + transactionId + , + + $this + -> + clusterAffinity + ) + ; + + + + $this + -> + client + -> + sendRequest + ( + $request + ) + ; + + + + } + + + + + /** + + + * Handles request exceptions by parsing error details and throwing a Neo4jException. + + + * + + + * @throws Neo4jException + + + */ + + + + private + + function + + handleRequestException + ( + RequestExceptionInterface + + $e + ) + : + + void + + + + { + + + + $response + + = + + method_exists + ( + $e + , + + 'getResponse' + ) + + ? + + $e + -> + getResponse + ( + ) + + : + + null + ; + + + + + if + + ( + $response + + instanceof + + ResponseInterface + ) + + { + + + + $errorResponse + + = + + json_decode + ( + (string) + $response + -> + getBody + ( + ) + , + + true + ) + ; + + + + throw + + Neo4jException + :: + fromNeo4jResponse + ( + $errorResponse + , + + $e + ) + ; + + + + } + + + + + throw + + new + + Neo4jException + ( + [ + 'message' + + => + + $e + -> + getMessage + ( + ) + ] + , + + 500 + , + + $e + ) + ; + + + + } + + + } + + + + + diff --git a/xml-coverage/index.xml b/xml-coverage/index.xml new file mode 100644 index 00000000..530565d8 --- /dev/null +++ b/xml-coverage/index.xml @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a196b998195c130464cbdf6806e617fb00e242da Mon Sep 17 00:00:00 2001 From: pratikshazalte69 Date: Mon, 3 Mar 2025 14:26:59 +0530 Subject: [PATCH 44/45] added a new phunitCoverage.xml file for generating a code coverage report --- coverage.php | Bin 589460 -> 589467 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/coverage.php b/coverage.php index d8b706c8b775e3b0f94305b5faaaa68162c7cfef..051fb1c0bb2c8ebb497ef48a877a99d45629f950 100644 GIT binary patch delta 69 zcmbR8S9$hdWd$4if{X$#uAZ|!Rt5I03LI7c0L1ka+W-In From 493aea5c6ecc4bc2f540f1627840ed8182684b88 Mon Sep 17 00:00:00 2001 From: pratikshazalte69 Date: Mon, 3 Mar 2025 14:37:41 +0530 Subject: [PATCH 45/45] removed phunit.cache file and xml-coverage folder --- .gitignore | 4 +- .../0d84a93ae86cf9abc682a9a445f69e27 | 1 - .../0dc2a8801d1e00baa2e79dd856ebd50e | 1 - .../131c4cedf17d093063572ca473332fa6 | 1 - .../21a329404661a8eee1701bfc2708d31f | 1 - .../273ba54e95d51e917c6612e5177d2772 | 1 - .../3e6d68289822078b851e7629b220d4f6 | 1 - .../45103b4696278578a5d002f65c524a25 | 1 - .../47573f9c993056e3ab7e76ebbd6d1696 | 1 - .../49b214b86cb03d421cb5ff4f616a3638 | 1 - .../4a60bde4d8dfbb0a82c12400a0bc1e88 | 1 - .../5a4d2c5d29cc306f429a2fd186fb2c88 | 1 - .../74ef3c363d33e17953bf27080a65d757 | 1 - .../7ec168dd8bef4735e30f9bca3818ae51 | 1 - .../7efebc1d072f0f9c831b04d6abf1cfbe | 1 - .../99b9a8434128c921ad46b7eeb56bc9c6 | 1 - .../a15444975b998570db93036d0d82f6cc | 1 - .../ab8cb7ca9fc9aa9d541615db6b6eee71 | 1 - .../c5ce51a0bff1e1b39f54fd66c72e64db | 1 - .../ca3789be13c8cccbb0923d66e6049a9c | 1 - .../d2a4505e258c71d34c46edcf73d567e3 | 1 - .../d348ccaac52c23f4f2efc1d4791c7586 | 1 - .../ed331e7cc26ad75e89b9c3c6e38cfbe7 | 1 - .../f29382a2a2a8d9e39e9da9248b774b3a | 1 - .phpunit.cache/test-results | 1 - .../AuthenticateInterface.php.xml | 99 - .../BasicAuthentication.php.xml | 612 --- .../BearerAuthentication.php.xml | 241 -- xml-coverage/Authentication/NoAuth.php.xml | 173 - xml-coverage/Configuration.php.xml | 238 - xml-coverage/Enums/AccessMode.php.xml | 62 - xml-coverage/Exception/Neo4jException.php.xml | 650 --- xml-coverage/Neo4jQueryAPI.php.xml | 2070 --------- xml-coverage/Neo4jRequestFactory.php.xml | 1786 -------- xml-coverage/OGM.php.xml | 1963 --------- xml-coverage/Objects/Authentication.php.xml | 620 --- xml-coverage/Objects/Bookmarks.php.xml | 368 -- xml-coverage/Objects/Node.php.xml | 202 - xml-coverage/Objects/Path.php.xml | 172 - xml-coverage/Objects/Point.php.xml | 213 - .../Objects/ProfiledQueryPlan.php.xml | 212 - .../ProfiledQueryPlanArguments.php.xml | 354 -- xml-coverage/Objects/Relationship.php.xml | 187 - xml-coverage/Objects/ResultCounters.php.xml | 285 -- xml-coverage/ResponseParser.php.xml | 3853 ----------------- xml-coverage/Results/ResultRow.php.xml | 589 --- xml-coverage/Results/ResultSet.php.xml | 359 -- xml-coverage/Transaction.php.xml | 666 --- xml-coverage/index.xml | 392 -- 49 files changed, 2 insertions(+), 16392 deletions(-) delete mode 100644 .phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 delete mode 100644 .phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e delete mode 100644 .phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 delete mode 100644 .phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f delete mode 100644 .phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 delete mode 100644 .phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 delete mode 100644 .phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 delete mode 100644 .phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 delete mode 100644 .phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 delete mode 100644 .phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 delete mode 100644 .phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 delete mode 100644 .phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 delete mode 100644 .phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 delete mode 100644 .phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe delete mode 100644 .phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 delete mode 100644 .phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc delete mode 100644 .phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 delete mode 100644 .phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db delete mode 100644 .phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c delete mode 100644 .phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 delete mode 100644 .phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 delete mode 100644 .phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 delete mode 100644 .phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a delete mode 100755 .phpunit.cache/test-results delete mode 100644 xml-coverage/Authentication/AuthenticateInterface.php.xml delete mode 100644 xml-coverage/Authentication/BasicAuthentication.php.xml delete mode 100644 xml-coverage/Authentication/BearerAuthentication.php.xml delete mode 100644 xml-coverage/Authentication/NoAuth.php.xml delete mode 100644 xml-coverage/Configuration.php.xml delete mode 100644 xml-coverage/Enums/AccessMode.php.xml delete mode 100644 xml-coverage/Exception/Neo4jException.php.xml delete mode 100644 xml-coverage/Neo4jQueryAPI.php.xml delete mode 100644 xml-coverage/Neo4jRequestFactory.php.xml delete mode 100644 xml-coverage/OGM.php.xml delete mode 100644 xml-coverage/Objects/Authentication.php.xml delete mode 100644 xml-coverage/Objects/Bookmarks.php.xml delete mode 100644 xml-coverage/Objects/Node.php.xml delete mode 100644 xml-coverage/Objects/Path.php.xml delete mode 100644 xml-coverage/Objects/Point.php.xml delete mode 100644 xml-coverage/Objects/ProfiledQueryPlan.php.xml delete mode 100644 xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml delete mode 100644 xml-coverage/Objects/Relationship.php.xml delete mode 100644 xml-coverage/Objects/ResultCounters.php.xml delete mode 100644 xml-coverage/ResponseParser.php.xml delete mode 100644 xml-coverage/Results/ResultRow.php.xml delete mode 100644 xml-coverage/Results/ResultSet.php.xml delete mode 100644 xml-coverage/Transaction.php.xml delete mode 100644 xml-coverage/index.xml diff --git a/.gitignore b/.gitignore index ea86c437..6dd2a04a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,8 +13,8 @@ test #PHP-CS-FIXER .php-cs-fixer.php .php-cs-fixer.cache - +.phpunit.cache coverage - +xml-coverage composer.lock \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 b/.phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 deleted file mode 100644 index b3fead12..00000000 --- a/.phpunit.cache/code-coverage/0d84a93ae86cf9abc682a9a445f69e27 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:0:{}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:16;s:18:"commentLinesOfCode";i:3;s:21:"nonCommentLinesOfCode";i:13;}s:15:"ignoredLinesFor";a:1:{i:0;i:7;}s:17:"executableLinesIn";a:0:{}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e b/.phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e deleted file mode 100644 index 6abea5c7..00000000 --- a/.phpunit.cache/code-coverage/0dc2a8801d1e00baa2e79dd856ebd50e +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:28:"Neo4j\QueryAPI\Configuration";a:6:{s:4:"name";s:13:"Configuration";s:14:"namespacedName";s:28:"Neo4j\QueryAPI\Configuration";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:9;s:7:"endLine";i:31;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:159:"__construct(string $baseUri, string $database, bool $includeCounters, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode)";s:10:"visibility";s:6:"public";s:9:"startLine";i:22;s:7:"endLine";i:30;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:32;s:18:"commentLinesOfCode";i:11;s:21:"nonCommentLinesOfCode";i:21;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:1:{i:30;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 b/.phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 deleted file mode 100644 index d3a7b440..00000000 --- a/.phpunit.cache/code-coverage/131c4cedf17d093063572ca473332fa6 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:32:"Neo4j\QueryAPI\Results\ResultSet";a:6:{s:4:"name";s:9:"ResultSet";s:14:"namespacedName";s:32:"Neo4j\QueryAPI\Results\ResultSet";s:9:"namespace";s:22:"Neo4j\QueryAPI\Results";s:9:"startLine";i:18;s:7:"endLine";i:48;s:7:"methods";a:3:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:226:"__construct(array $rows, Neo4j\QueryAPI\Objects\Bookmarks $bookmarks, Neo4j\QueryAPI\Enums\AccessMode $accessMode, ?Neo4j\QueryAPI\Objects\ResultCounters $counters, ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan $profiledQueryPlan)";s:10:"visibility";s:6:"public";s:9:"startLine";i:23;s:7:"endLine";i:30;s:3:"ccn";i:1;}s:11:"getIterator";a:6:{s:10:"methodName";s:11:"getIterator";s:9:"signature";s:26:"getIterator(): Traversable";s:10:"visibility";s:6:"public";s:9:"startLine";i:35;s:7:"endLine";i:39;s:3:"ccn";i:1;}s:5:"count";a:6:{s:10:"methodName";s:5:"count";s:9:"signature";s:12:"count(): int";s:10:"visibility";s:6:"public";s:9:"startLine";i:42;s:7:"endLine";i:46;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:49;s:18:"commentLinesOfCode";i:10;s:21:"nonCommentLinesOfCode";i:39;}s:15:"ignoredLinesFor";a:3:{i:0;i:18;i:1;i:35;i:2;i:42;}s:17:"executableLinesIn";a:5:{i:30;i:1;i:35;i:2;i:38;i:3;i:42;i:4;i:45;i:5;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f b/.phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f deleted file mode 100644 index 54b87482..00000000 --- a/.phpunit.cache/code-coverage/21a329404661a8eee1701bfc2708d31f +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:50:"Neo4j\QueryAPI\Authentication\BearerAuthentication";a:6:{s:4:"name";s:20:"BearerAuthentication";s:14:"namespacedName";s:50:"Neo4j\QueryAPI\Authentication\BearerAuthentication";s:9:"namespace";s:29:"Neo4j\QueryAPI\Authentication";s:9:"startLine";i:7;s:7:"endLine";i:33;s:7:"methods";a:4:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:26:"__construct(string $token)";s:10:"visibility";s:6:"public";s:9:"startLine";i:9;s:7:"endLine";i:11;s:3:"ccn";i:1;}s:12:"authenticate";a:6:{s:10:"methodName";s:12:"authenticate";s:9:"signature";s:91:"authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:13;s:7:"endLine";i:18;s:3:"ccn";i:1;}s:9:"getHeader";a:6:{s:10:"methodName";s:9:"getHeader";s:9:"signature";s:19:"getHeader(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:21;s:7:"endLine";i:25;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:17:"getType(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:28;s:7:"endLine";i:32;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:34;}s:15:"ignoredLinesFor";a:4:{i:0;i:7;i:1;i:13;i:2;i:21;i:3;i:28;}s:17:"executableLinesIn";a:8:{i:11;i:1;i:13;i:2;i:16;i:3;i:17;i:4;i:21;i:5;i:24;i:6;i:28;i:7;i:31;i:8;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 b/.phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 deleted file mode 100644 index a97170c3..00000000 --- a/.phpunit.cache/code-coverage/273ba54e95d51e917c6612e5177d2772 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:49:"Neo4j\QueryAPI\Authentication\BasicAuthentication";a:6:{s:4:"name";s:19:"BasicAuthentication";s:14:"namespacedName";s:49:"Neo4j\QueryAPI\Authentication\BasicAuthentication";s:9:"namespace";s:29:"Neo4j\QueryAPI\Authentication";s:9:"startLine";i:7;s:7:"endLine";i:39;s:7:"methods";a:4:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:49:"__construct(?string $username, ?string $password)";s:10:"visibility";s:6:"public";s:9:"startLine";i:12;s:7:"endLine";i:16;s:3:"ccn";i:3;}s:12:"authenticate";a:6:{s:10:"methodName";s:12:"authenticate";s:9:"signature";s:91:"authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:19;s:7:"endLine";i:24;s:3:"ccn";i:1;}s:9:"getHeader";a:6:{s:10:"methodName";s:9:"getHeader";s:9:"signature";s:19:"getHeader(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:26;s:7:"endLine";i:30;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:17:"getType(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:34;s:7:"endLine";i:38;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:40;s:18:"commentLinesOfCode";i:3;s:21:"nonCommentLinesOfCode";i:37;}s:15:"ignoredLinesFor";a:4:{i:0;i:7;i:1;i:19;i:2;i:26;i:3;i:34;}s:17:"executableLinesIn";a:9:{i:14;i:3;i:15;i:4;i:19;i:5;i:22;i:6;i:23;i:7;i:26;i:8;i:29;i:9;i:34;i:10;i:37;i:11;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 b/.phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 deleted file mode 100644 index 2c6a2b0c..00000000 --- a/.phpunit.cache/code-coverage/3e6d68289822078b851e7629b220d4f6 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:27:"Neo4j\QueryAPI\Objects\Node";a:6:{s:4:"name";s:4:"Node";s:14:"namespacedName";s:27:"Neo4j\QueryAPI\Objects\Node";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:9;s:7:"endLine";i:33;s:7:"methods";a:2:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:45:"__construct(array $labels, array $properties)";s:10:"visibility";s:6:"public";s:9:"startLine";i:17;s:7:"endLine";i:19;s:3:"ccn";i:1;}s:7:"toArray";a:6:{s:10:"methodName";s:7:"toArray";s:9:"signature";s:16:"toArray(): array";s:10:"visibility";s:6:"public";s:9:"startLine";i:25;s:7:"endLine";i:31;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:13;s:21:"nonCommentLinesOfCode";i:21;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:5:{i:19;i:1;i:27;i:2;i:28;i:2;i:29;i:2;i:30;i:2;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 b/.phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 deleted file mode 100644 index 2797e0ad..00000000 --- a/.phpunit.cache/code-coverage/45103b4696278578a5d002f65c524a25 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:34:"Neo4j\QueryAPI\Neo4jRequestFactory";a:6:{s:4:"name";s:19:"Neo4jRequestFactory";s:14:"namespacedName";s:34:"Neo4j\QueryAPI\Neo4jRequestFactory";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:11;s:7:"endLine";i:90;s:7:"methods";a:7:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:227:"__construct(Psr\Http\Message\RequestFactoryInterface $psr17Factory, Psr\Http\Message\StreamFactoryInterface $streamFactory, Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth)";s:10:"visibility";s:6:"public";s:9:"startLine";i:13;s:7:"endLine";i:19;s:3:"ccn";i:1;}s:20:"buildRunQueryRequest";a:6:{s:10:"methodName";s:20:"buildRunQueryRequest";s:9:"signature";s:90:"buildRunQueryRequest(string $cypher, array $parameters): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:21;s:7:"endLine";i:26;s:3:"ccn";i:1;}s:28:"buildBeginTransactionRequest";a:6:{s:10:"methodName";s:28:"buildBeginTransactionRequest";s:9:"signature";s:65:"buildBeginTransactionRequest(): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:28;s:7:"endLine";i:31;s:3:"ccn";i:1;}s:18:"buildCommitRequest";a:6:{s:10:"methodName";s:18:"buildCommitRequest";s:9:"signature";s:101:"buildCommitRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:33;s:7:"endLine";i:37;s:3:"ccn";i:1;}s:20:"buildRollbackRequest";a:6:{s:10:"methodName";s:20:"buildRollbackRequest";s:9:"signature";s:103:"buildRollbackRequest(string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:39;s:7:"endLine";i:44;s:3:"ccn";i:1;}s:26:"buildTransactionRunRequest";a:6:{s:10:"methodName";s:26:"buildTransactionRunRequest";s:9:"signature";s:143:"buildTransactionRunRequest(string $query, array $parameters, string $transactionId, string $clusterAffinity): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:46;s:7:"endLine";i:50;s:3:"ccn";i:1;}s:13:"createRequest";a:6:{s:10:"methodName";s:13:"createRequest";s:9:"signature";s:98:"createRequest(string $uri, ?string $cypher, ?array $parameters): Psr\Http\Message\RequestInterface";s:10:"visibility";s:7:"private";s:9:"startLine";i:52;s:7:"endLine";i:89;s:3:"ccn";i:8;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:91;s:18:"commentLinesOfCode";i:1;s:21:"nonCommentLinesOfCode";i:90;}s:15:"ignoredLinesFor";a:1:{i:0;i:11;}s:17:"executableLinesIn";a:28:{i:19;i:1;i:25;i:3;i:30;i:4;i:35;i:5;i:36;i:5;i:41;i:6;i:42;i:6;i:43;i:6;i:48;i:7;i:49;i:7;i:54;i:8;i:56;i:9;i:58;i:10;i:59;i:11;i:62;i:12;i:63;i:13;i:66;i:14;i:67;i:15;i:70;i:16;i:71;i:17;i:75;i:18;i:76;i:19;i:79;i:20;i:80;i:21;i:82;i:22;i:84;i:23;i:86;i:24;i:88;i:25;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 b/.phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 deleted file mode 100644 index 29dfb3a7..00000000 --- a/.phpunit.cache/code-coverage/47573f9c993056e3ab7e76ebbd6d1696 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:35:"Neo4j\QueryAPI\Objects\Relationship";a:6:{s:4:"name";s:12:"Relationship";s:14:"namespacedName";s:35:"Neo4j\QueryAPI\Objects\Relationship";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:9;s:7:"endLine";i:33;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:44:"__construct(string $type, array $properties)";s:10:"visibility";s:6:"public";s:9:"startLine";i:27;s:7:"endLine";i:31;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:15;s:21:"nonCommentLinesOfCode";i:19;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:2:{i:29;i:4;i:30;i:5;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 b/.phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 deleted file mode 100644 index 4bd0bf63..00000000 --- a/.phpunit.cache/code-coverage/49b214b86cb03d421cb5ff4f616a3638 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:0:{}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:10;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:10;}s:15:"ignoredLinesFor";a:0:{}s:17:"executableLinesIn";a:0:{}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 b/.phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 deleted file mode 100644 index f76b8cfe..00000000 --- a/.phpunit.cache/code-coverage/4a60bde4d8dfbb0a82c12400a0bc1e88 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:18:"Neo4j\QueryAPI\OGM";a:6:{s:4:"name";s:3:"OGM";s:14:"namespacedName";s:18:"Neo4j\QueryAPI\OGM";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:11;s:7:"endLine";i:133;s:7:"methods";a:7:{s:3:"map";a:6:{s:10:"methodName";s:3:"map";s:9:"signature";s:23:"map(array $data): mixed";s:10:"visibility";s:6:"public";s:9:"startLine";i:17;s:7:"endLine";i:34;s:3:"ccn";i:6;}s:10:"parsePoint";a:6:{s:10:"methodName";s:10:"parsePoint";s:9:"signature";s:55:"parsePoint(string $value): Neo4j\QueryAPI\Objects\Point";s:10:"visibility";s:7:"private";s:9:"startLine";i:37;s:7:"endLine";i:49;s:3:"ccn";i:3;}s:7:"mapNode";a:6:{s:10:"methodName";s:7:"mapNode";s:9:"signature";s:53:"mapNode(array $nodeData): Neo4j\QueryAPI\Objects\Node";s:10:"visibility";s:7:"private";s:9:"startLine";i:52;s:7:"endLine";i:58;s:3:"ccn";i:1;}s:15:"mapRelationship";a:6:{s:10:"methodName";s:15:"mapRelationship";s:9:"signature";s:77:"mapRelationship(array $relationshipData): Neo4j\QueryAPI\Objects\Relationship";s:10:"visibility";s:7:"private";s:9:"startLine";i:60;s:7:"endLine";i:66;s:3:"ccn";i:1;}s:8:"parseWKT";a:6:{s:10:"methodName";s:8:"parseWKT";s:9:"signature";s:51:"parseWKT(string $wkt): Neo4j\QueryAPI\Objects\Point";s:10:"visibility";s:6:"public";s:9:"startLine";i:69;s:7:"endLine";i:91;s:3:"ccn";i:3;}s:7:"mapPath";a:6:{s:10:"methodName";s:7:"mapPath";s:9:"signature";s:53:"mapPath(array $pathData): Neo4j\QueryAPI\Objects\Path";s:10:"visibility";s:7:"private";s:9:"startLine";i:94;s:7:"endLine";i:108;s:3:"ccn";i:4;}s:13:"mapProperties";a:6:{s:10:"methodName";s:13:"mapProperties";s:9:"signature";s:39:"mapProperties(array $properties): array";s:10:"visibility";s:7:"private";s:9:"startLine";i:110;s:7:"endLine";i:130;s:3:"ccn";i:7;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:134;s:18:"commentLinesOfCode";i:4;s:21:"nonCommentLinesOfCode";i:130;}s:15:"ignoredLinesFor";a:1:{i:0;i:11;}s:17:"executableLinesIn";a:61:{i:19;i:1;i:20;i:2;i:23;i:3;i:24;i:4;i:25;i:5;i:26;i:6;i:27;i:7;i:28;i:8;i:29;i:9;i:30;i:10;i:31;i:11;i:32;i:12;i:33;i:3;i:39;i:13;i:40;i:14;i:41;i:15;i:42;i:16;i:43;i:17;i:45;i:18;i:48;i:19;i:54;i:20;i:55;i:20;i:56;i:20;i:57;i:20;i:62;i:21;i:63;i:21;i:64;i:21;i:65;i:21;i:71;i:22;i:72;i:23;i:73;i:24;i:75;i:25;i:76;i:26;i:78;i:27;i:79;i:28;i:80;i:29;i:82;i:30;i:84;i:31;i:85;i:32;i:86;i:33;i:88;i:34;i:90;i:35;i:96;i:36;i:97;i:37;i:99;i:38;i:100;i:39;i:101;i:40;i:102;i:41;i:103;i:42;i:107;i:43;i:113;i:44;i:115;i:45;i:116;i:46;i:117;i:47;i:118;i:48;i:119;i:49;i:120;i:50;i:121;i:51;i:123;i:52;i:125;i:53;i:129;i:54;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 b/.phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 deleted file mode 100644 index f865a68b..00000000 --- a/.phpunit.cache/code-coverage/5a4d2c5d29cc306f429a2fd186fb2c88 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:40:"Neo4j\QueryAPI\Objects\ProfiledQueryPlan";a:6:{s:4:"name";s:17:"ProfiledQueryPlan";s:14:"namespacedName";s:40:"Neo4j\QueryAPI\Objects\ProfiledQueryPlan";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:5;s:7:"endLine";i:21;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:263:"__construct(Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments $arguments, int $dbHits, int $records, bool $hasPageCacheStats, int $pageCacheHits, int $pageCacheMisses, float $pageCacheHitRatio, int $time, string $operatorType, array $children, array $identifiers)";s:10:"visibility";s:6:"public";s:9:"startLine";i:7;s:7:"endLine";i:20;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:22;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:22;}s:15:"ignoredLinesFor";a:1:{i:0;i:5;}s:17:"executableLinesIn";a:1:{i:20;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 b/.phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 deleted file mode 100644 index a7521528..00000000 --- a/.phpunit.cache/code-coverage/74ef3c363d33e17953bf27080a65d757 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:37:"Neo4j\QueryAPI\Objects\ResultCounters";a:6:{s:4:"name";s:14:"ResultCounters";s:14:"namespacedName";s:37:"Neo4j\QueryAPI\Objects\ResultCounters";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:5;s:7:"endLine";i:25;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:321:"__construct(bool $containsUpdates, int $nodesCreated, int $nodesDeleted, int $propertiesSet, int $relationshipsCreated, int $relationshipsDeleted, int $labelsAdded, int $labelsRemoved, int $indexesAdded, int $indexesRemoved, int $constraintsAdded, int $constraintsRemoved, bool $containsSystemUpdates, int $systemUpdates)";s:10:"visibility";s:6:"public";s:9:"startLine";i:7;s:7:"endLine";i:23;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:26;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:26;}s:15:"ignoredLinesFor";a:1:{i:0;i:5;}s:17:"executableLinesIn";a:1:{i:23;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 b/.phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 deleted file mode 100644 index 24d83b02..00000000 --- a/.phpunit.cache/code-coverage/7ec168dd8bef4735e30f9bca3818ae51 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:32:"Neo4j\QueryAPI\Objects\Bookmarks";a:6:{s:4:"name";s:9:"Bookmarks";s:14:"namespacedName";s:32:"Neo4j\QueryAPI\Objects\Bookmarks";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:7;s:7:"endLine";i:31;s:7:"methods";a:4:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:29:"__construct(array $bookmarks)";s:10:"visibility";s:6:"public";s:9:"startLine";i:9;s:7:"endLine";i:11;s:3:"ccn";i:1;}s:12:"addBookmarks";a:6:{s:10:"methodName";s:12:"addBookmarks";s:9:"signature";s:67:"addBookmarks(?Neo4j\QueryAPI\Objects\Bookmarks $newBookmarks): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:13;s:7:"endLine";i:18;s:3:"ccn";i:2;}s:5:"count";a:6:{s:10:"methodName";s:5:"count";s:9:"signature";s:12:"count(): int";s:10:"visibility";s:6:"public";s:9:"startLine";i:20;s:7:"endLine";i:24;s:3:"ccn";i:1;}s:13:"jsonSerialize";a:6:{s:10:"methodName";s:13:"jsonSerialize";s:9:"signature";s:22:"jsonSerialize(): array";s:10:"visibility";s:6:"public";s:9:"startLine";i:26;s:7:"endLine";i:30;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:32;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:32;}s:15:"ignoredLinesFor";a:3:{i:0;i:7;i:1;i:20;i:2;i:26;}s:17:"executableLinesIn";a:7:{i:11;i:1;i:15;i:2;i:16;i:3;i:20;i:4;i:23;i:5;i:26;i:6;i:29;i:7;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe b/.phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe deleted file mode 100644 index a5db23ee..00000000 --- a/.phpunit.cache/code-coverage/7efebc1d072f0f9c831b04d6abf1cfbe +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:26:"Neo4j\QueryAPI\Transaction";a:6:{s:4:"name";s:11:"Transaction";s:14:"namespacedName";s:26:"Neo4j\QueryAPI\Transaction";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:12;s:7:"endLine";i:78;s:7:"methods";a:5:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:199:"__construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, string $clusterAffinity, string $transactionId)";s:10:"visibility";s:6:"public";s:9:"startLine";i:14;s:7:"endLine";i:21;s:3:"ccn";i:1;}s:3:"run";a:6:{s:10:"methodName";s:3:"run";s:9:"signature";s:71:"run(string $query, array $parameters): Neo4j\QueryAPI\Results\ResultSet";s:10:"visibility";s:6:"public";s:9:"startLine";i:31;s:7:"endLine";i:48;s:3:"ccn";i:3;}s:6:"commit";a:6:{s:10:"methodName";s:6:"commit";s:9:"signature";s:14:"commit(): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:50;s:7:"endLine";i:54;s:3:"ccn";i:1;}s:8:"rollback";a:6:{s:10:"methodName";s:8:"rollback";s:9:"signature";s:16:"rollback(): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:56;s:7:"endLine";i:60;s:3:"ccn";i:1;}s:22:"handleRequestException";a:6:{s:10:"methodName";s:22:"handleRequestException";s:9:"signature";s:74:"handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void";s:10:"visibility";s:7:"private";s:9:"startLine";i:67;s:7:"endLine";i:77;s:3:"ccn";i:3;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:79;s:18:"commentLinesOfCode";i:13;s:21:"nonCommentLinesOfCode";i:66;}s:15:"ignoredLinesFor";a:1:{i:0;i:12;}s:17:"executableLinesIn";a:18:{i:21;i:1;i:33;i:2;i:35;i:3;i:38;i:4;i:39;i:5;i:40;i:6;i:43;i:7;i:44;i:8;i:47;i:9;i:52;i:10;i:53;i:11;i:58;i:12;i:59;i:13;i:69;i:14;i:71;i:15;i:72;i:16;i:73;i:17;i:76;i:18;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 b/.phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 deleted file mode 100644 index d9adf5aa..00000000 --- a/.phpunit.cache/code-coverage/99b9a8434128c921ad46b7eeb56bc9c6 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:36:"Neo4j\QueryAPI\Authentication\NoAuth";a:6:{s:4:"name";s:6:"NoAuth";s:14:"namespacedName";s:36:"Neo4j\QueryAPI\Authentication\NoAuth";s:9:"namespace";s:29:"Neo4j\QueryAPI\Authentication";s:9:"startLine";i:7;s:7:"endLine";i:25;s:7:"methods";a:3:{s:9:"getHeader";a:6:{s:10:"methodName";s:9:"getHeader";s:9:"signature";s:19:"getHeader(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:9;s:7:"endLine";i:13;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:17:"getType(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:15;s:7:"endLine";i:19;s:3:"ccn";i:1;}s:12:"authenticate";a:6:{s:10:"methodName";s:12:"authenticate";s:9:"signature";s:91:"authenticate(Psr\Http\Message\RequestInterface $request): Psr\Http\Message\RequestInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:20;s:7:"endLine";i:24;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:26;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:26;}s:15:"ignoredLinesFor";a:4:{i:0;i:7;i:1;i:9;i:2;i:15;i:3;i:20;}s:17:"executableLinesIn";a:6:{i:9;i:1;i:12;i:2;i:15;i:3;i:18;i:4;i:20;i:5;i:23;i:6;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc b/.phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc deleted file mode 100644 index c31055e5..00000000 --- a/.phpunit.cache/code-coverage/a15444975b998570db93036d0d82f6cc +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:39:"Neo4j\QueryAPI\Exception\Neo4jException";a:6:{s:4:"name";s:14:"Neo4jException";s:14:"namespacedName";s:39:"Neo4j\QueryAPI\Exception\Neo4jException";s:9:"namespace";s:24:"Neo4j\QueryAPI\Exception";s:9:"startLine";i:7;s:7:"endLine";i:64;s:7:"methods";a:6:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:71:"__construct(array $errorDetails, int $statusCode, ?Throwable $previous)";s:10:"visibility";s:6:"public";s:9:"startLine";i:14;s:7:"endLine";i:27;s:3:"ccn";i:1;}s:17:"fromNeo4jResponse";a:6:{s:10:"methodName";s:17:"fromNeo4jResponse";s:9:"signature";s:63:"fromNeo4jResponse(array $response, ?Throwable $exception): self";s:10:"visibility";s:6:"public";s:9:"startLine";i:36;s:7:"endLine";i:43;s:3:"ccn";i:1;}s:12:"getErrorCode";a:6:{s:10:"methodName";s:12:"getErrorCode";s:9:"signature";s:22:"getErrorCode(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:45;s:7:"endLine";i:48;s:3:"ccn";i:1;}s:7:"getType";a:6:{s:10:"methodName";s:7:"getType";s:9:"signature";s:18:"getType(): ?string";s:10:"visibility";s:6:"public";s:9:"startLine";i:50;s:7:"endLine";i:53;s:3:"ccn";i:1;}s:10:"getSubType";a:6:{s:10:"methodName";s:10:"getSubType";s:9:"signature";s:21:"getSubType(): ?string";s:10:"visibility";s:6:"public";s:9:"startLine";i:55;s:7:"endLine";i:58;s:3:"ccn";i:1;}s:7:"getName";a:6:{s:10:"methodName";s:7:"getName";s:9:"signature";s:18:"getName(): ?string";s:10:"visibility";s:6:"public";s:9:"startLine";i:60;s:7:"endLine";i:63;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:65;s:18:"commentLinesOfCode";i:7;s:21:"nonCommentLinesOfCode";i:58;}s:15:"ignoredLinesFor";a:1:{i:0;i:7;}s:17:"executableLinesIn";a:13:{i:19;i:6;i:20;i:7;i:21;i:8;i:22;i:9;i:23;i:10;i:25;i:11;i:26;i:12;i:39;i:13;i:42;i:14;i:47;i:15;i:52;i:16;i:57;i:17;i:62;i:18;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 b/.phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 deleted file mode 100644 index b4f9a7ee..00000000 --- a/.phpunit.cache/code-coverage/ab8cb7ca9fc9aa9d541615db6b6eee71 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:27:"Neo4j\QueryAPI\Objects\Path";a:6:{s:4:"name";s:4:"Path";s:14:"namespacedName";s:27:"Neo4j\QueryAPI\Objects\Path";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:9;s:7:"endLine";i:33;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:47:"__construct(array $nodes, array $relationships)";s:10:"visibility";s:6:"public";s:9:"startLine";i:27;s:7:"endLine";i:31;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:34;s:18:"commentLinesOfCode";i:15;s:21:"nonCommentLinesOfCode";i:19;}s:15:"ignoredLinesFor";a:1:{i:0;i:9;}s:17:"executableLinesIn";a:2:{i:29;i:3;i:30;i:4;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db b/.phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db deleted file mode 100644 index e7400fef..00000000 --- a/.phpunit.cache/code-coverage/c5ce51a0bff1e1b39f54fd66c72e64db +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:37:"Neo4j\QueryAPI\Objects\Authentication";a:6:{s:4:"name";s:14:"Authentication";s:14:"namespacedName";s:37:"Neo4j\QueryAPI\Objects\Authentication";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:10;s:7:"endLine";i:39;s:7:"methods";a:4:{s:5:"basic";a:6:{s:10:"methodName";s:5:"basic";s:9:"signature";s:94:"basic(string $username, string $password): Neo4j\QueryAPI\Authentication\AuthenticateInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:12;s:7:"endLine";i:15;s:3:"ccn";i:1;}s:15:"fromEnvironment";a:6:{s:10:"methodName";s:15:"fromEnvironment";s:9:"signature";s:70:"fromEnvironment(): Neo4j\QueryAPI\Authentication\AuthenticateInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:18;s:7:"endLine";i:27;s:3:"ccn";i:3;}s:6:"bearer";a:6:{s:10:"methodName";s:6:"bearer";s:9:"signature";s:74:"bearer(string $token): Neo4j\QueryAPI\Authentication\AuthenticateInterface";s:10:"visibility";s:6:"public";s:9:"startLine";i:30;s:7:"endLine";i:33;s:3:"ccn";i:1;}s:6:"noAuth";a:6:{s:10:"methodName";s:6:"noAuth";s:9:"signature";s:46:"noAuth(): Neo4j\QueryAPI\Authentication\NoAuth";s:10:"visibility";s:6:"public";s:9:"startLine";i:35;s:7:"endLine";i:38;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:40;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:40;}s:15:"ignoredLinesFor";a:1:{i:0;i:10;}s:17:"executableLinesIn";a:9:{i:14;i:1;i:20;i:2;i:21;i:3;i:23;i:4;i:24;i:4;i:25;i:4;i:26;i:4;i:32;i:5;i:37;i:6;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c b/.phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c deleted file mode 100644 index 1845bf2a..00000000 --- a/.phpunit.cache/code-coverage/ca3789be13c8cccbb0923d66e6049a9c +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:32:"Neo4j\QueryAPI\Results\ResultRow";a:6:{s:4:"name";s:9:"ResultRow";s:14:"namespacedName";s:32:"Neo4j\QueryAPI\Results\ResultRow";s:9:"namespace";s:22:"Neo4j\QueryAPI\Results";s:9:"startLine";i:18;s:7:"endLine";i:70;s:7:"methods";a:8:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:24:"__construct(array $data)";s:10:"visibility";s:6:"public";s:9:"startLine";i:23;s:7:"endLine";i:26;s:3:"ccn";i:1;}s:9:"offsetGet";a:6:{s:10:"methodName";s:9:"offsetGet";s:9:"signature";s:31:"offsetGet(mixed $offset): mixed";s:10:"visibility";s:6:"public";s:9:"startLine";i:28;s:7:"endLine";i:35;s:3:"ccn";i:2;}s:12:"offsetExists";a:6:{s:10:"methodName";s:12:"offsetExists";s:9:"signature";s:27:"offsetExists($offset): bool";s:10:"visibility";s:6:"public";s:9:"startLine";i:38;s:7:"endLine";i:42;s:3:"ccn";i:1;}s:9:"offsetSet";a:6:{s:10:"methodName";s:9:"offsetSet";s:9:"signature";s:32:"offsetSet($offset, $value): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:44;s:7:"endLine";i:48;s:3:"ccn";i:1;}s:11:"offsetUnset";a:6:{s:10:"methodName";s:11:"offsetUnset";s:9:"signature";s:26:"offsetUnset($offset): void";s:10:"visibility";s:6:"public";s:9:"startLine";i:49;s:7:"endLine";i:54;s:3:"ccn";i:1;}s:3:"get";a:6:{s:10:"methodName";s:3:"get";s:9:"signature";s:23:"get(string $row): mixed";s:10:"visibility";s:6:"public";s:9:"startLine";i:55;s:7:"endLine";i:58;s:3:"ccn";i:1;}s:5:"count";a:6:{s:10:"methodName";s:5:"count";s:9:"signature";s:12:"count(): int";s:10:"visibility";s:6:"public";s:9:"startLine";i:59;s:7:"endLine";i:63;s:3:"ccn";i:1;}s:11:"getIterator";a:6:{s:10:"methodName";s:11:"getIterator";s:9:"signature";s:26:"getIterator(): Traversable";s:10:"visibility";s:6:"public";s:9:"startLine";i:65;s:7:"endLine";i:69;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:71;s:18:"commentLinesOfCode";i:6;s:21:"nonCommentLinesOfCode";i:65;}s:15:"ignoredLinesFor";a:7:{i:0;i:18;i:1;i:28;i:2;i:38;i:3;i:44;i:4;i:49;i:5;i:59;i:6;i:65;}s:17:"executableLinesIn";a:16:{i:25;i:2;i:28;i:3;i:31;i:4;i:32;i:5;i:34;i:6;i:38;i:7;i:41;i:8;i:44;i:9;i:47;i:10;i:49;i:11;i:52;i:12;i:57;i:13;i:59;i:14;i:62;i:15;i:65;i:16;i:68;i:17;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 b/.phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 deleted file mode 100644 index dc624a76..00000000 --- a/.phpunit.cache/code-coverage/d2a4505e258c71d34c46edcf73d567e3 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:49:"Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments";a:6:{s:4:"name";s:26:"ProfiledQueryPlanArguments";s:14:"namespacedName";s:49:"Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:5;s:7:"endLine";i:30;s:7:"methods";a:1:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:404:"__construct(?int $globalMemory, ?string $plannerImpl, ?int $memory, ?string $stringRepresentation, ?string $runtime, ?int $time, ?int $pageCacheMisses, ?int $pageCacheHits, ?string $runtimeImpl, ?int $version, ?int $dbHits, ?int $batchSize, ?string $details, ?string $plannerVersion, ?string $pipelineInfo, null|string|float $runtimeVersion, ?int $id, ?float $estimatedRows, ?string $planner, ?int $rows)";s:10:"visibility";s:6:"public";s:9:"startLine";i:7;s:7:"endLine";i:29;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:31;s:18:"commentLinesOfCode";i:0;s:21:"nonCommentLinesOfCode";i:31;}s:15:"ignoredLinesFor";a:1:{i:0;i:5;}s:17:"executableLinesIn";a:1:{i:29;i:1;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 b/.phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 deleted file mode 100644 index 461ceaf3..00000000 --- a/.phpunit.cache/code-coverage/d348ccaac52c23f4f2efc1d4791c7586 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:28:"Neo4j\QueryAPI\Neo4jQueryAPI";a:6:{s:4:"name";s:13:"Neo4jQueryAPI";s:14:"namespacedName";s:28:"Neo4j\QueryAPI\Neo4jQueryAPI";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:16;s:7:"endLine";i:124;s:7:"methods";a:7:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:189:"__construct(Psr\Http\Client\ClientInterface $client, Neo4j\QueryAPI\ResponseParser $responseParser, Neo4j\QueryAPI\Neo4jRequestFactory $requestFactory, Neo4j\QueryAPI\Configuration $config)";s:10:"visibility";s:6:"public";s:9:"startLine";i:18;s:7:"endLine";i:25;s:3:"ccn";i:1;}s:5:"login";a:6:{s:10:"methodName";s:5:"login";s:9:"signature";s:127:"login(string $address, ?Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth, ?Neo4j\QueryAPI\Configuration $config): self";s:10:"visibility";s:6:"public";s:9:"startLine";i:27;s:7:"endLine";i:52;s:3:"ccn";i:5;}s:6:"create";a:6:{s:10:"methodName";s:6:"create";s:9:"signature";s:116:"create(Neo4j\QueryAPI\Configuration $configuration, Neo4j\QueryAPI\Authentication\AuthenticateInterface $auth): self";s:10:"visibility";s:6:"public";s:9:"startLine";i:54;s:7:"endLine";i:57;s:3:"ccn";i:1;}s:9:"getConfig";a:6:{s:10:"methodName";s:9:"getConfig";s:9:"signature";s:41:"getConfig(): Neo4j\QueryAPI\Configuration";s:10:"visibility";s:6:"public";s:9:"startLine";i:60;s:7:"endLine";i:63;s:3:"ccn";i:1;}s:3:"run";a:6:{s:10:"methodName";s:3:"run";s:9:"signature";s:72:"run(string $cypher, array $parameters): Neo4j\QueryAPI\Results\ResultSet";s:10:"visibility";s:6:"public";s:9:"startLine";i:69;s:7:"endLine";i:80;s:3:"ccn";i:2;}s:16:"beginTransaction";a:6:{s:10:"methodName";s:16:"beginTransaction";s:9:"signature";s:46:"beginTransaction(): Neo4j\QueryAPI\Transaction";s:10:"visibility";s:6:"public";s:9:"startLine";i:82;s:7:"endLine";i:104;s:3:"ccn";i:2;}s:22:"handleRequestException";a:6:{s:10:"methodName";s:22:"handleRequestException";s:9:"signature";s:74:"handleRequestException(Psr\Http\Client\RequestExceptionInterface $e): void";s:10:"visibility";s:7:"private";s:9:"startLine";i:113;s:7:"endLine";i:123;s:3:"ccn";i:3;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:125;s:18:"commentLinesOfCode";i:10;s:21:"nonCommentLinesOfCode";i:115;}s:15:"ignoredLinesFor";a:1:{i:0;i:16;}s:17:"executableLinesIn";a:46:{i:25;i:1;i:29;i:2;i:31;i:3;i:32;i:4;i:33;i:5;i:34;i:6;i:36;i:7;i:39;i:8;i:41;i:9;i:42;i:9;i:43;i:9;i:44;i:9;i:45;i:9;i:46;i:9;i:47;i:9;i:48;i:9;i:49;i:9;i:50;i:9;i:51;i:9;i:56;i:10;i:62;i:11;i:71;i:13;i:74;i:14;i:75;i:15;i:76;i:16;i:79;i:17;i:84;i:18;i:87;i:19;i:88;i:20;i:89;i:21;i:92;i:22;i:93;i:23;i:94;i:24;i:95;i:25;i:97;i:26;i:98;i:26;i:99;i:26;i:100;i:26;i:101;i:26;i:102;i:26;i:103;i:26;i:115;i:27;i:117;i:28;i:118;i:29;i:119;i:30;i:122;i:31;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 b/.phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 deleted file mode 100644 index d1bc842d..00000000 --- a/.phpunit.cache/code-coverage/ed331e7cc26ad75e89b9c3c6e38cfbe7 +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:28:"Neo4j\QueryAPI\Objects\Point";a:6:{s:4:"name";s:5:"Point";s:14:"namespacedName";s:28:"Neo4j\QueryAPI\Objects\Point";s:9:"namespace";s:22:"Neo4j\QueryAPI\Objects";s:9:"startLine";i:8;s:7:"endLine";i:34;s:7:"methods";a:2:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:57:"__construct(float $x, float $y, float|null $z, int $srid)";s:10:"visibility";s:6:"public";s:9:"startLine";i:16;s:7:"endLine";i:22;s:3:"ccn";i:1;}s:10:"__toString";a:6:{s:10:"methodName";s:10:"__toString";s:9:"signature";s:20:"__toString(): string";s:10:"visibility";s:6:"public";s:9:"startLine";i:29;s:7:"endLine";i:32;s:3:"ccn";i:1;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:35;s:18:"commentLinesOfCode";i:14;s:21:"nonCommentLinesOfCode";i:21;}s:15:"ignoredLinesFor";a:1:{i:0;i:8;}s:17:"executableLinesIn";a:2:{i:22;i:1;i:31;i:2;}} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a b/.phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a deleted file mode 100644 index 3d99868d..00000000 --- a/.phpunit.cache/code-coverage/f29382a2a2a8d9e39e9da9248b774b3a +++ /dev/null @@ -1 +0,0 @@ -a:6:{s:9:"classesIn";a:1:{s:29:"Neo4j\QueryAPI\ResponseParser";a:6:{s:4:"name";s:14:"ResponseParser";s:14:"namespacedName";s:29:"Neo4j\QueryAPI\ResponseParser";s:9:"namespace";s:14:"Neo4j\QueryAPI";s:9:"startLine";i:16;s:7:"endLine";i:170;s:7:"methods";a:9:{s:11:"__construct";a:6:{s:10:"methodName";s:11:"__construct";s:9:"signature";s:36:"__construct(Neo4j\QueryAPI\OGM $ogm)";s:10:"visibility";s:6:"public";s:9:"startLine";i:18;s:7:"endLine";i:20;s:3:"ccn";i:1;}s:21:"parseRunQueryResponse";a:6:{s:10:"methodName";s:21:"parseRunQueryResponse";s:9:"signature";s:101:"parseRunQueryResponse(Psr\Http\Message\ResponseInterface $response): Neo4j\QueryAPI\Results\ResultSet";s:10:"visibility";s:6:"public";s:9:"startLine";i:22;s:7:"endLine";i:33;s:3:"ccn";i:2;}s:25:"validateAndDecodeResponse";a:6:{s:10:"methodName";s:25:"validateAndDecodeResponse";s:9:"signature";s:78:"validateAndDecodeResponse(Psr\Http\Message\ResponseInterface $response): array";s:10:"visibility";s:7:"private";s:9:"startLine";i:35;s:7:"endLine";i:50;s:3:"ccn";i:3;}s:7:"mapRows";a:6:{s:10:"methodName";s:7:"mapRows";s:9:"signature";s:44:"mapRows(array $fields, array $values): array";s:10:"visibility";s:7:"private";s:9:"startLine";i:60;s:7:"endLine";i:71;s:3:"ccn";i:2;}s:15:"formatOGMOutput";a:6:{s:10:"methodName";s:15:"formatOGMOutput";s:9:"signature";s:36:"formatOGMOutput(mixed $value): mixed";s:10:"visibility";s:7:"private";s:9:"startLine";i:79;s:7:"endLine";i:86;s:3:"ccn";i:4;}s:13:"buildCounters";a:6:{s:10:"methodName";s:13:"buildCounters";s:9:"signature";s:73:"buildCounters(array $countersData): Neo4j\QueryAPI\Objects\ResultCounters";s:10:"visibility";s:7:"private";s:9:"startLine";i:88;s:7:"endLine";i:105;s:3:"ccn";i:1;}s:14:"buildBookmarks";a:6:{s:10:"methodName";s:14:"buildBookmarks";s:9:"signature";s:70:"buildBookmarks(array $bookmarksData): Neo4j\QueryAPI\Objects\Bookmarks";s:10:"visibility";s:7:"private";s:9:"startLine";i:107;s:7:"endLine";i:110;s:3:"ccn";i:1;}s:13:"getAccessMode";a:6:{s:10:"methodName";s:13:"getAccessMode";s:9:"signature";s:70:"getAccessMode(string $accessModeData): Neo4j\QueryAPI\Enums\AccessMode";s:10:"visibility";s:7:"private";s:9:"startLine";i:112;s:7:"endLine";i:115;s:3:"ccn";i:1;}s:22:"buildProfiledQueryPlan";a:6:{s:10:"methodName";s:22:"buildProfiledQueryPlan";s:9:"signature";s:87:"buildProfiledQueryPlan(mixed $queryPlanData): ?Neo4j\QueryAPI\Objects\ProfiledQueryPlan";s:10:"visibility";s:7:"private";s:9:"startLine";i:117;s:7:"endLine";i:169;s:3:"ccn";i:5;}}}}s:8:"traitsIn";a:0:{}s:11:"functionsIn";a:0:{}s:14:"linesOfCodeFor";a:3:{s:11:"linesOfCode";i:171;s:18:"commentLinesOfCode";i:15;s:21:"nonCommentLinesOfCode";i:156;}s:15:"ignoredLinesFor";a:1:{i:0;i:16;}s:17:"executableLinesIn";a:88:{i:20;i:1;i:24;i:2;i:26;i:3;i:27;i:4;i:28;i:5;i:29;i:6;i:30;i:7;i:32;i:8;i:37;i:9;i:38;i:10;i:39;i:11;i:42;i:12;i:43;i:13;i:45;i:14;i:46;i:15;i:49;i:16;i:62;i:17;i:63;i:17;i:64;i:17;i:65;i:17;i:66;i:17;i:67;i:17;i:68;i:17;i:69;i:17;i:70;i:17;i:81;i:20;i:82;i:21;i:85;i:22;i:90;i:23;i:91;i:23;i:92;i:23;i:93;i:23;i:94;i:23;i:95;i:23;i:96;i:23;i:97;i:23;i:98;i:23;i:99;i:23;i:100;i:23;i:101;i:23;i:102;i:23;i:103;i:23;i:104;i:23;i:109;i:24;i:114;i:25;i:119;i:26;i:120;i:27;i:124;i:28;i:129;i:28;i:125;i:29;i:126;i:30;i:128;i:31;i:131;i:32;i:132;i:32;i:133;i:32;i:134;i:32;i:135;i:32;i:136;i:32;i:137;i:32;i:138;i:32;i:139;i:32;i:140;i:32;i:141;i:32;i:142;i:32;i:143;i:32;i:144;i:32;i:145;i:32;i:146;i:32;i:147;i:32;i:148;i:32;i:149;i:32;i:150;i:32;i:151;i:32;i:152;i:32;i:153;i:33;i:155;i:34;i:156;i:34;i:157;i:34;i:158;i:34;i:159;i:34;i:160;i:34;i:161;i:34;i:162;i:34;i:163;i:34;i:164;i:34;i:165;i:34;i:166;i:34;i:167;i:34;}} \ No newline at end of file diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results deleted file mode 100755 index db8be7d6..00000000 --- a/.phpunit.cache/test-results +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":{"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":7,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":8,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":8,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":8},"times":{"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.006,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BasicAuthenticationUnitTest::testGetTypeReturnsBasic":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithWriteAccessMode":0.697,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testRunWithReadAccessMode":0.552,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testReadModeWithWriteQuery":0.687,"Neo4j\\QueryAPI\\Tests\\Integration\\AccessModesIntegrationTest::testWriteModeWithReadQuery":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testCreateBookmarks":1.019,"Neo4j\\QueryAPI\\Tests\\Integration\\BookmarksIntegrationTest::testInvalidBookmarkThrowsException":2.223,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithExactNames":2.179,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithSingleName":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithInteger":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithFloat":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNull":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithBoolean":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithString":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithArray":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDate":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithDuration":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_2DPoint":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithWGS84_3DPoint":0.51,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian2DPoint":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithCartesian3DPoint":0.511,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithNode":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithPath":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithMap":0.611,"Neo4j\\QueryAPI\\Tests\\Integration\\DataTypesIntegrationTest::testWithRelationship":0.614,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithNode":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithSimpleRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jOGMTest::testWithPath":0.002,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testParseRunQueryResponse":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryHandling":0.206,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testCounters":0.21,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPIIntegrationTest::testInvalidQueryException":0.207,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithValidConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testLoginWithNullConfiguration":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jQueryAPITest::testConfigOnly":0.001,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionCommit":1.232,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testTransactionRollback":1.64,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndCommit":1.026,"Neo4j\\QueryAPI\\Tests\\Integration\\Neo4jTransactionIntegrationTest::testCreateNodeAndRollback":1.333,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileExistence":0.615,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateQueryExistence":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateMovieQueryExistence":0.612,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateFriendsQueryExistence":0.613,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateKnowsBidirectionalRelationships":1.031,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testProfileCreateActedInRelationships":0.605,"Neo4j\\QueryAPI\\Tests\\Integration\\ProfiledQueryPlanIntegrationTest::testChildQueryPlanExistence":0.611,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testAuthenticateAddsAuthorizationHeader":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetHeaderReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\BearerAuthenticationUnitTest::testGetTypeReturnsBearer":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testAuthenticateReturnsUnmodifiedRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetHeaderReturnsEmptyString":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Authentication\\NoAuthUnitTest::testGetTypeReturnsNoAuth":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBearerToken":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testBasicAuthentication":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\AuthenticationTest::testFallbackToEnvironmentVariables":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructor":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testConstructorWithMissingErrorDetails":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithMissingDetails":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testFromNeo4jResponseWithNullResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jExceptionUnitTest::testExceptionChaining":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testLoginCreatesInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testGetConfigReturnsCorrectConfig":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testRunExecutesQueryAndReturnsResultSet":0.002,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPINewUnitTest::testHandleRequestExceptionThrowsNeo4jException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testCorrectClientSetup":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testRunSuccess":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseValidResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseInvalidResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testGetAccessMode":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jQueryAPIUnitTest::testParseBookmarks":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRunQueryRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildBeginTransactionRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testBuildRollbackRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithHeadersAndBody":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Neo4jRequestFactoryTest::testCreateRequestWithoutAuthorizationHeader":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapInteger":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapFloat":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapString":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapBoolean":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNull":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapNode":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapRelationship":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testMapPoint":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testParseWKT":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidWKTThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\OGMUnitTest::testInvalidPointFormatThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnErrorResponse":0.003,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseThrowsExceptionOnInvalidData":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResponseParserUnitTest::testParseRunQueryResponseHandlesProfiledQueryPlan":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessGet":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessSetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\ResultRowTest::testArrayAccessUnsetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetReturnsValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetGetThrowsExceptionForInvalidKey":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetExists":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetSetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testOffsetUnsetThrowsException":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testGetReturnsValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testCount":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\Results\\ResultRowUnitTest::testIterator":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRunExecutesQuerySuccessfully":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testHandleRequestExceptionWithoutResponse":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testCommitSendsCommitRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\TransactionUnitTest::testRollbackSendsRollbackRequest":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBasicReturnsBasicAuthenticationInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testFromEnvironmentReturnsBasicAuthenticationInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testNoAuthReturnsNoAuthInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\AuthenticationUnitTest::testBearerReturnsBearerAuthenticationInstance":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testGetBookmarksReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksMergesUniqueValues":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testAddBookmarksDoesNothingWhenNullIsPassed":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testCountReturnsCorrectNumber":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\BookmarksUnitTest::testJsonSerializeReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetLabelsReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testGetPropertiesReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\NodeUnitTest::testToArrayReturnsCorrectStructure":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetNodesReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PathUnitTest::testGetRelationshipsReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetXReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetYReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetZReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testGetSridReturnsCorrectValue":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\PointUnitTest::testToStringReturnsCorrectFormat":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetTypeReturnsCorrectType":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testGetPropertiesReturnsCorrectArray":0.001,"Neo4j\\QueryAPI\\Tests\\Unit\\objects\\RelationshipUnitTest::testEmptyPropertiesByDefault":0.001}} \ No newline at end of file diff --git a/xml-coverage/Authentication/AuthenticateInterface.php.xml b/xml-coverage/Authentication/AuthenticateInterface.php.xml deleted file mode 100644 index 0233fa63..00000000 --- a/xml-coverage/Authentication/AuthenticateInterface.php.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Authentication - ; - - - - use - - Psr\Http\Message\RequestInterface - ; - - - - interface - - AuthenticateInterface - - - { - - - - public - - function - - getHeader - ( - ) - : - - string - ; - - - - public - - function - - getType - ( - ) - : - - string - ; - - - - /** - - - * Authenticates the request by returning a new instance of the request with the authentication information attached. - - - */ - - - - public - - function - - authenticate - ( - RequestInterface - - $request - ) - : - - RequestInterface - ; - - - } - - - - - diff --git a/xml-coverage/Authentication/BasicAuthentication.php.xml b/xml-coverage/Authentication/BasicAuthentication.php.xml deleted file mode 100644 index 8d53acdf..00000000 --- a/xml-coverage/Authentication/BasicAuthentication.php.xml +++ /dev/null @@ -1,612 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Authentication - ; - - - - use - - Psr\Http\Message\RequestInterface - ; - - - - - class - - BasicAuthentication - - implements - - AuthenticateInterface - - - { - - - - private - - string - - $username - ; - - - - private - - string - - $password - ; - - - - - public - - function - - __construct - ( - ? - string - - $username - - = - - null - , - - ? - string - - $password - - = - - null - ) - - - - { - - - - $this - -> - username - - = - - $username - - ?? - - ( - is_string - ( - $envUser - - = - - getenv - ( - "NEO4J_USERNAME" - ) - ) - - ? - - $envUser - - : - - '' - ) - ; - - - - $this - -> - password - - = - - $password - - ?? - - ( - is_string - ( - $envPass - - = - - getenv - ( - "NEO4J_PASSWORD" - ) - ) - - ? - - $envPass - - : - - '' - ) - ; - - - - } - - - - - - #[ - \Override - ] - - - - public - - function - - authenticate - ( - RequestInterface - - $request - ) - : - - RequestInterface - - - - { - - - - $authHeader - - = - - $this - -> - getHeader - ( - ) - ; - - - - return - - $request - -> - withHeader - ( - 'Authorization' - , - - $authHeader - ) - ; - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - getHeader - ( - ) - : - - string - - - - { - - - - return - - 'Basic ' - - . - - base64_encode - ( - $this - -> - username - - . - - ':' - - . - - $this - -> - password - ) - ; - - - - } - - - - /** - - - * @psalm-suppress UnusedMethod - - - */ - - - - #[ - \Override - ] - - - - public - - function - - getType - ( - ) - : - - string - - - - { - - - - return - - 'Basic' - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Authentication/BearerAuthentication.php.xml b/xml-coverage/Authentication/BearerAuthentication.php.xml deleted file mode 100644 index 4231a26a..00000000 --- a/xml-coverage/Authentication/BearerAuthentication.php.xml +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Authentication - ; - - - - use - - Psr\Http\Message\RequestInterface - ; - - - - - class - - BearerAuthentication - - implements - - AuthenticateInterface - - - { - - - - public - - function - - __construct - ( - private - - string - - $token - ) - - - - { - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - authenticate - ( - RequestInterface - - $request - ) - : - - RequestInterface - - - - { - - - - $authHeader - - = - - 'Bearer ' - - . - - $this - -> - token - ; - - - - return - - $request - -> - withHeader - ( - 'Authorization' - , - - $authHeader - ) - ; - - - - } - - - - - - #[ - \Override - ] - - - - public - - function - - getHeader - ( - ) - : - - string - - - - { - - - - return - - 'Bearer ' - - . - - $this - -> - token - ; - - - - } - - - - - - #[ - \Override - ] - - - - public - - function - - getType - ( - ) - : - - string - - - - { - - - - return - - 'Bearer' - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Authentication/NoAuth.php.xml b/xml-coverage/Authentication/NoAuth.php.xml deleted file mode 100644 index df13cde6..00000000 --- a/xml-coverage/Authentication/NoAuth.php.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Authentication - ; - - - - use - - Psr\Http\Message\RequestInterface - ; - - - - - class - - NoAuth - - implements - - AuthenticateInterface - - - { - - - - #[ - \Override - ] - - - - public - - function - - getHeader - ( - ) - : - - string - - - - { - - - - return - - '' - ; - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - getType - ( - ) - : - - string - - - - { - - - - return - - 'NoAuth' - ; - - - - } - - - - #[ - \Override - ] - - - - public - - function - - authenticate - ( - RequestInterface - - $request - ) - : - - RequestInterface - - - - { - - - - return - - $request - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Configuration.php.xml b/xml-coverage/Configuration.php.xml deleted file mode 100644 index 256db4bc..00000000 --- a/xml-coverage/Configuration.php.xml +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI - ; - - - - use - - InvalidArgumentException - ; - - - use - - Neo4j\QueryAPI\Objects\Bookmarks - ; - - - use - - Neo4j\QueryAPI\Enums\AccessMode - ; - - - - - class - - Configuration - - - { - - - - /** - - - * Constructor for Configuration class. - - - * - - - * @param string $baseUri The base URI for the Neo4j instance. - - - * @param string $database The name of the database to connect to. - - - * @param bool $includeCounters Whether to include counters in the response. - - - * @param Bookmarks $bookmarks Bookmarks for tracking queries. - - - * @param AccessMode $accessMode The access mode for the connection (read/write). - - - * - - - * @throws InvalidArgumentException if $baseUri is empty. - - - */ - - - - public - - function - - __construct - ( - - - - public - - string - - $baseUri - , - - - - public - - string - - $database - - = - - 'neo4j' - , - - - - public - - bool - - $includeCounters - - = - - true - , - - - - public - - Bookmarks - - $bookmarks - - = - - new - - Bookmarks - ( - [ - ] - ) - , - - - - public - - AccessMode - - $accessMode - - = - - AccessMode - :: - WRITE - , - - - - ) - - { - - - - - } - - - } - - - - - diff --git a/xml-coverage/Enums/AccessMode.php.xml b/xml-coverage/Enums/AccessMode.php.xml deleted file mode 100644 index 77ed46b9..00000000 --- a/xml-coverage/Enums/AccessMode.php.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Enums - ; - - - - enum - - AccessMode - : - - string - - - { - - - - case - - READ - - = - - 'READ' - ; - - - - case - - WRITE - - = - - 'WRITE' - ; - - - } - - - - - diff --git a/xml-coverage/Exception/Neo4jException.php.xml b/xml-coverage/Exception/Neo4jException.php.xml deleted file mode 100644 index 3e430b8f..00000000 --- a/xml-coverage/Exception/Neo4jException.php.xml +++ /dev/null @@ -1,650 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Exception - ; - - - - use - - Exception - ; - - - - - class - - Neo4jException - - extends - - Exception - - - { - - - - private - - string - - $errorCode - ; - - - - private - - ? - string - - $errorType - ; - - - - private - - ? - string - - $errorSubType - ; - - - - private - - ? - string - - $errorName - ; - - - - - public - - function - - __construct - ( - - - - array - - $errorDetails - - = - - [ - ] - , - - - - int - - $statusCode - - = - - 0 - , - - - - ? - \Throwable - - $previous - - = - - null - , - - - - ) - - { - - - - $this - -> - errorCode - - = - - $errorDetails - [ - 'code' - ] - - ?? - - 'Neo.UnknownError' - ; - - - - $errorParts - - = - - explode - ( - '.' - , - - $this - -> - errorCode - ) - ; - - - - $this - -> - errorType - - = - - $errorParts - [ - 1 - ] - - ?? - - null - ; - - - - $this - -> - errorSubType - - = - - $errorParts - [ - 2 - ] - - ?? - - null - ; - - - - $this - -> - errorName - - = - - $errorParts - [ - 3 - ] - - ?? - - null - ; - - - - - $message - - = - - $errorDetails - [ - 'message' - ] - - ?? - - 'An unknown error occurred.' - ; - - - - parent - :: - __construct - ( - $message - , - - $statusCode - , - - $previous - ) - ; - - - - } - - - - - /** - - - * Create a Neo4jException instance from a Neo4j error response array. - - - * - - - * @param array $response The error response from Neo4j. - - - * @param \Throwable|null $exception Optional previous exception for chaining. - - - * @return self - - - */ - - - - public - - static - - function - - fromNeo4jResponse - ( - array - - $response - , - - ? - \Throwable - - $exception - - = - - null - ) - : - - self - - - - { - - - - - $errorDetails - - = - - $response - [ - 'errors' - ] - [ - 0 - ] - - ?? - - [ - 'message' - - => - - 'Unknown error' - , - - 'code' - - => - - 'Neo.UnknownError' - ] - ; - - - - - - return - - new - - self - ( - $errorDetails - , - - previous - : - - $exception - ) - ; - - - - } - - - - - public - - function - - getErrorCode - ( - ) - : - - string - - - - { - - - - return - - $this - -> - errorCode - ; - - - - } - - - - - public - - function - - getType - ( - ) - : - - ? - string - - - - { - - - - return - - $this - -> - errorType - ; - - - - } - - - - - public - - function - - getSubType - ( - ) - : - - ? - string - - - - { - - - - return - - $this - -> - errorSubType - ; - - - - } - - - - - public - - function - - getName - ( - ) - : - - ? - string - - - - { - - - - return - - $this - -> - errorName - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Neo4jQueryAPI.php.xml b/xml-coverage/Neo4jQueryAPI.php.xml deleted file mode 100644 index b8b6fa29..00000000 --- a/xml-coverage/Neo4jQueryAPI.php.xml +++ /dev/null @@ -1,2070 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI - ; - - - - use - - Http\Discovery\Psr17FactoryDiscovery - ; - - - use - - Http\Discovery\Psr18ClientDiscovery - ; - - - use - - InvalidArgumentException - ; - - - use - - Neo4j\QueryAPI\Exception\Neo4jException - ; - - - use - - Psr\Http\Client\ClientInterface - ; - - - use - - Neo4j\QueryAPI\Authentication\AuthenticateInterface - ; - - - use - - Neo4j\QueryAPI\Objects\Authentication - ; - - - use - - Neo4j\QueryAPI\Results\ResultSet - ; - - - use - - Psr\Http\Message\ResponseInterface - ; - - - use - - Psr\Http\Client\RequestExceptionInterface - ; - - - - - class - - Neo4jQueryAPI - - - { - - - - public - - function - - __construct - ( - - - - private - - ClientInterface - - $client - , - - - - private - - ResponseParser - - $responseParser - , - - - - private - - Neo4jRequestFactory - - $requestFactory - , - - - - private - - Configuration - - $config - - - - ) - - { - - - - - } - - - - - public - - static - - function - - login - ( - string - - $address - - = - - null - , - - ? - AuthenticateInterface - - $auth - - = - - null - , - - ? - Configuration - - $config - - = - - null - ) - : - - self - - - - { - - - - $config - - = - - $config - - ?? - - new - - Configuration - ( - baseUri - : - - $address - - ?? - - '' - ) - ; - - - - if - - ( - - - - trim - ( - $config - -> - baseUri - ) - - !== - - '' - - && - - - - $address - - !== - - null - - && - - - - trim - ( - $address - ) - - !== - - '' - - && - - - - $config - -> - baseUri - - !== - - $address - - - - ) - - { - - - - throw - - new - - InvalidArgumentException - ( - sprintf - ( - 'Address (%s) as argument is different from address in configuration (%s)' - , - - $config - -> - baseUri - , - - $address - ) - ) - ; - - - - } - - - - - $client - - = - - Psr18ClientDiscovery - :: - find - ( - ) - ; - - - - - return - - new - - self - ( - - - - client - : - - $client - , - - - - responseParser - : - - new - - ResponseParser - ( - new - - OGM - ( - ) - ) - , - - - - requestFactory - : - - new - - Neo4jRequestFactory - ( - - - - psr17Factory - : - - Psr17FactoryDiscovery - :: - findRequestFactory - ( - ) - , - - - - streamFactory - : - - Psr17FactoryDiscovery - :: - findStreamFactory - ( - ) - , - - - - configuration - : - - $config - , - - - - auth - : - - $auth - - ?? - - Authentication - :: - fromEnvironment - ( - ) - - - - ) - , - - - - config - : - - $config - - - - ) - ; - - - - } - - - - - public - - static - - function - - create - ( - Configuration - - $configuration - , - - AuthenticateInterface - - $auth - - = - - null - ) - : - - self - - - - { - - - - return - - self - :: - login - ( - auth - : - - $auth - , - - config - : - - $configuration - ) - ; - - - - } - - - - - - public - - function - - getConfig - ( - ) - : - - Configuration - - - - { - - - - return - - $this - -> - config - ; - - - - } - - - - - - /** - - - * Executes a Cypher query. - - - */ - - - - public - - function - - run - ( - string - - $cypher - , - - array - - $parameters - - = - - [ - ] - ) - : - - ResultSet - - - - { - - - - $request - - = - - $this - -> - requestFactory - -> - buildRunQueryRequest - ( - $cypher - , - - $parameters - ) - ; - - - - - try - - { - - - - $response - - = - - $this - -> - client - -> - sendRequest - ( - $request - ) - ; - - - - } - - catch - - ( - RequestExceptionInterface - - $e - ) - - { - - - - $this - -> - handleRequestException - ( - $e - ) - ; - - - - } - - - - - return - - $this - -> - responseParser - -> - parseRunQueryResponse - ( - $response - ) - ; - - - - } - - - - - public - - function - - beginTransaction - ( - ) - : - - Transaction - - - - { - - - - $request - - = - - $this - -> - requestFactory - -> - buildBeginTransactionRequest - ( - ) - ; - - - - - try - - { - - - - $response - - = - - $this - -> - client - -> - sendRequest - ( - $request - ) - ; - - - - } - - catch - - ( - RequestExceptionInterface - - $e - ) - - { - - - - $this - -> - handleRequestException - ( - $e - ) - ; - - - - } - - - - - $clusterAffinity - - = - - $response - -> - getHeaderLine - ( - 'neo4j-cluster-affinity' - ) - ; - - - - $body - - = - - $response - -> - getBody - ( - ) - -> - getContents - ( - ) - ; - - - - $responseData - - = - - json_decode - ( - $body - , - - true - ) - ; - - - - $transactionId - - = - - $responseData - [ - 'transaction' - ] - [ - 'id' - ] - ; - - - - - return - - new - - Transaction - ( - - - - $this - -> - client - , - - - - $this - -> - responseParser - , - - - - $this - -> - requestFactory - , - - - - $clusterAffinity - , - - - - $transactionId - - - - ) - ; - - - - } - - - - - /** - - - * Handles request exceptions by parsing error details and throwing a Neo4jException. - - - * - - - * @throws Neo4jException - - - * - - - * @return never - - - */ - - - - private - - function - - handleRequestException - ( - RequestExceptionInterface - - $e - ) - : - - void - - - - { - - - - $response - - = - - method_exists - ( - $e - , - - 'getResponse' - ) - - ? - - $e - -> - getResponse - ( - ) - - : - - null - ; - - - - - if - - ( - $response - - instanceof - - ResponseInterface - ) - - { - - - - $errorResponse - - = - - json_decode - ( - (string) - $response - -> - getBody - ( - ) - , - - true - ) - ; - - - - throw - - Neo4jException - :: - fromNeo4jResponse - ( - $errorResponse - , - - $e - ) - ; - - - - } - - - - - throw - - new - - Neo4jException - ( - [ - 'message' - - => - - $e - -> - getMessage - ( - ) - ] - , - - 500 - , - - $e - ) - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Neo4jRequestFactory.php.xml b/xml-coverage/Neo4jRequestFactory.php.xml deleted file mode 100644 index 427d7feb..00000000 --- a/xml-coverage/Neo4jRequestFactory.php.xml +++ /dev/null @@ -1,1786 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI - ; - - - - use - - Neo4j\QueryAPI\Authentication\AuthenticateInterface - ; - - - use - - Neo4j\QueryAPI\Enums\AccessMode - ; - - - use - - Psr\Http\Message\RequestFactoryInterface - ; - - - use - - Psr\Http\Message\RequestInterface - ; - - - use - - Psr\Http\Message\StreamFactoryInterface - ; - - - - - class - - Neo4jRequestFactory - - - { - - - - public - - function - - __construct - ( - - - - private - - RequestFactoryInterface - - $psr17Factory - , - - - - private - - StreamFactoryInterface - - $streamFactory - , - - - - private - - Configuration - - $configuration - , - - - - private - - AuthenticateInterface - - $auth - - - - ) - - { - - - - } - - - - - public - - function - - buildRunQueryRequest - ( - - - - string - - $cypher - , - - - - array - - $parameters - - = - - [ - ] - - - - ) - : - - RequestInterface - - { - - - - return - - $this - -> - createRequest - ( - " - /db/ - { - $this - -> - configuration - -> - database - } - /query/v2 - " - , - - $cypher - , - - $parameters - ) - ; - - - - } - - - - - public - - function - - buildBeginTransactionRequest - ( - ) - : - - RequestInterface - - - - { - - - - return - - $this - -> - createRequest - ( - " - /db/ - { - $this - -> - configuration - -> - database - } - /query/v2/tx - " - , - - null - , - - null - ) - ; - - - - } - - - - - public - - function - - buildCommitRequest - ( - string - - $transactionId - , - - string - - $clusterAffinity - ) - : - - RequestInterface - - - - { - - - - return - - $this - -> - createRequest - ( - " - /db/ - { - $this - -> - configuration - -> - database - } - /query/v2/tx/ - { - $transactionId - } - /commit - " - , - - null - , - - null - ) - - - - -> - withHeader - ( - "neo4j-cluster-affinity" - , - - $clusterAffinity - ) - ; - - - - } - - - - - public - - function - - buildRollbackRequest - ( - string - - $transactionId - , - - string - - $clusterAffinity - ) - : - - RequestInterface - - - - { - - - - return - - $this - -> - createRequest - ( - " - /db/ - { - $this - -> - configuration - -> - database - } - /query/v2/tx/ - { - $transactionId - } - /rollback - " - , - - null - , - - null - ) - - - - -> - withHeader - ( - "neo4j-cluster-affinity" - , - - $clusterAffinity - ) - - - - -> - withMethod - ( - "DELETE" - ) - ; - - - - } - - - - - public - - function - - buildTransactionRunRequest - ( - string - - $query - , - - array - - $parameters - , - - string - - $transactionId - , - - string - - $clusterAffinity - ) - : - - RequestInterface - - - - { - - - - return - - $this - -> - createRequest - ( - " - /db/neo4j/query/v2/tx/ - { - $transactionId - } - " - , - - $query - , - - $parameters - ) - - - - -> - withHeader - ( - "neo4j-cluster-affinity" - , - - $clusterAffinity - ) - ; - - - - } - - - - - private - - function - - createRequest - ( - string - - $uri - , - - ? - string - - $cypher - , - - ? - array - - $parameters - ) - : - - RequestInterface - - - - { - - - - $request - - = - - $this - -> - psr17Factory - -> - createRequest - ( - 'POST' - , - - $this - -> - configuration - -> - baseUri - - . - - $uri - ) - ; - - - - - $payload - - = - - [ - ] - ; - - - - - if - - ( - $this - -> - configuration - -> - includeCounters - ) - - { - - - - $payload - [ - 'includeCounters' - ] - - = - - true - ; - - - - } - - - - - if - - ( - $this - -> - configuration - -> - accessMode - - === - - AccessMode - :: - READ - ) - - { - - - - $payload - [ - 'accessMode' - ] - - = - - AccessMode - :: - READ - ; - - - - } - - - - - if - - ( - $cypher - - !== - - null - - && - - $cypher - - !== - - '' - ) - - { - - - - $payload - [ - 'statement' - ] - - = - - $cypher - ; - - - - } - - - - - if - - ( - $parameters - - !== - - null - - && - - $parameters - - !== - - [ - ] - ) - - { - - - - $payload - [ - 'parameters' - ] - - = - - $parameters - ; - - - - } - - - - - /** @psalm-suppress RedundantCondition */ - - - - if - - ( - $this - -> - configuration - -> - bookmarks - - !== - - null - ) - - { - - - - $payload - [ - 'bookmarks' - ] - - = - - $this - -> - configuration - -> - bookmarks - ; - - - - } - - - - - $request - - = - - $request - -> - withHeader - ( - 'Content-Type' - , - - 'application/json' - ) - ; - - - - $request - - = - - $request - -> - withHeader - ( - 'Accept' - , - - 'application/vnd.neo4j.query' - ) - ; - - - - - $body - - = - - json_encode - ( - $payload - , - - JSON_THROW_ON_ERROR - ) - ; - - - - - $stream - - = - - $this - -> - streamFactory - -> - createStream - ( - $body - ) - ; - - - - - $request - - = - - $request - -> - withBody - ( - $stream - ) - ; - - - - - return - - $this - -> - auth - -> - authenticate - ( - $request - ) - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/OGM.php.xml b/xml-coverage/OGM.php.xml deleted file mode 100644 index a4b24907..00000000 --- a/xml-coverage/OGM.php.xml +++ /dev/null @@ -1,1963 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI - ; - - - - use - - Neo4j\QueryAPI\Objects\Point - ; - - - use - - Neo4j\QueryAPI\Objects\Node - ; - - - use - - Neo4j\QueryAPI\Objects\Relationship - ; - - - use - - Neo4j\QueryAPI\Objects\Path - ; - - - use - - InvalidArgumentException - ; - - - - - class - - OGM - - - { - - - - /** - - - * @param array<array-key, mixed> $data - - - * @return mixed - - - */ - - - - public - - function - - map - ( - array - - $data - ) - : - - mixed - - - - { - - - - if - - ( - ! - isset - ( - $data - [ - '$type' - ] - ) - - || - - ! - array_key_exists - ( - '_value' - , - - $data - ) - - || - - ! - is_string - ( - $data - [ - '$type' - ] - ) - ) - - { - - - - throw - - new - - InvalidArgumentException - ( - "Unknown object type: " - - . - - json_encode - ( - $data - , - - JSON_THROW_ON_ERROR - ) - ) - ; - - - - } - - - - - return - - match - - ( - $data - [ - '$type' - ] - ) - - { - - - - 'Integer' - , - - 'Float' - , - - 'String' - , - - 'Boolean' - , - - 'Duration' - , - - 'OffsetDateTime' - - => - - $data - [ - '_value' - ] - , - - - - 'Array' - , - - 'List' - - => - - is_array - ( - $data - [ - '_value' - ] - ) - - ? - - array_map - ( - [ - $this - , - - 'map' - ] - , - - $data - [ - '_value' - ] - ) - - : - - [ - ] - , - - - - 'Null' - - => - - null - , - - - - 'Node' - - => - - $this - -> - mapNode - ( - $data - [ - '_value' - ] - ) - , - - - - 'Map' - - => - - is_array - ( - $data - [ - '_value' - ] - ) - - ? - - $this - -> - mapProperties - ( - $data - [ - '_value' - ] - ) - - : - - [ - ] - , - - - - 'Point' - - => - - $this - -> - parsePoint - ( - $data - [ - '_value' - ] - ) - , - - - - 'Relationship' - - => - - $this - -> - mapRelationship - ( - $data - [ - '_value' - ] - ) - , - - - - 'Path' - - => - - $this - -> - mapPath - ( - $data - [ - '_value' - ] - ) - , - - - - default - - => - - throw - - new - - InvalidArgumentException - ( - 'Unknown type: ' - - . - - json_encode - ( - $data - , - - JSON_THROW_ON_ERROR - ) - ) - , - - - - } - ; - - - - } - - - - - - private - - function - - parsePoint - ( - string - - $value - ) - : - - Point - - - - { - - - - if - - ( - preg_match - ( - '/SRID=(\d+);POINT(?: Z)? \(([-\d.]+) ([-\d.]+)(?: ([-\d.]+))?\)/' - , - - $value - , - - $matches - ) - ) - - { - - - - $srid - - = - - (int) - - $matches - [ - 1 - ] - ; - - - - $x - - = - - (float) - - $matches - [ - 2 - ] - ; - - - - $y - - = - - (float) - - $matches - [ - 3 - ] - ; - - - - $z - - = - - isset - ( - $matches - [ - 4 - ] - ) - - ? - - (float) - - $matches - [ - 4 - ] - - : - - null - ; - - - - - return - - new - - Point - ( - $x - , - - $y - , - - $z - , - - $srid - ) - ; - - - - } - - - - - throw - - new - - InvalidArgumentException - ( - "Invalid Point format: " - - . - - $value - ) - ; - - - - } - - - - - - private - - function - - mapNode - ( - array - - $nodeData - ) - : - - Node - - - - { - - - - return - - new - - Node - ( - - - - labels - : - - $nodeData - [ - '_labels' - ] - - ?? - - [ - ] - , - - - - properties - : - - $this - -> - mapProperties - ( - $nodeData - [ - '_properties' - ] - - ?? - - [ - ] - ) - - - - ) - ; - - - - } - - - - - private - - function - - mapRelationship - ( - array - - $relationshipData - ) - : - - Relationship - - - - { - - - - return - - new - - Relationship - ( - - - - type - : - - $relationshipData - [ - '_type' - ] - - ?? - - 'UNKNOWN' - , - - - - properties - : - - $this - -> - mapProperties - ( - $relationshipData - [ - '_properties' - ] - - ?? - - [ - ] - ) - - - - ) - ; - - - - } - - - - - - public - - static - - function - - parseWKT - ( - string - - $wkt - ) - : - - Point - - - - { - - - - $sridPos - - = - - strpos - ( - $wkt - , - - ';' - ) - ; - - - - if - - ( - $sridPos - - === - - false - ) - - { - - - - throw - - new - - \InvalidArgumentException - ( - "Invalid WKT format: missing ';'" - ) - ; - - - - } - - - - $sridPart - - = - - substr - ( - $wkt - , - - 0 - , - - $sridPos - ) - ; - - - - $srid - - = - - (int) - str_replace - ( - 'SRID=' - , - - '' - , - - $sridPart - ) - ; - - - - - $pointPos - - = - - strpos - ( - $wkt - , - - 'POINT' - ) - ; - - - - if - - ( - $pointPos - - === - - false - ) - - { - - - - throw - - new - - \InvalidArgumentException - ( - "Invalid WKT format: missing 'POINT'" - ) - ; - - - - } - - - - $pointPart - - = - - substr - ( - $wkt - , - - $pointPos - - + - - 6 - ) - ; - - - - - $pointPart - - = - - str_replace - ( - 'Z' - , - - '' - , - - $pointPart - ) - ; - - - - $pointPart - - = - - trim - ( - $pointPart - , - - ' ()' - ) - ; - - - - $coordinates - - = - - explode - ( - ' ' - , - - $pointPart - ) - ; - - - - - [ - $x - , - - $y - , - - $z - ] - - = - - array_pad - ( - array_map - ( - 'floatval' - , - - $coordinates - ) - , - - 3 - , - - 0.0 - ) - ; - - - - - return - - new - - Point - ( - $x - , - - $y - , - - $z - , - - $srid - ) - ; - - - - } - - - - - - private - - function - - mapPath - ( - array - - $pathData - ) - : - - Path - - - - { - - - - $nodes - - = - - [ - ] - ; - - - - $relationships - - = - - [ - ] - ; - - - - - foreach - - ( - $pathData - - as - - $item - ) - - { - - - - if - - ( - $item - [ - '$type' - ] - - === - - 'Node' - ) - - { - - - - $nodes - [ - ] - - = - - $this - -> - mapNode - ( - $item - [ - '_value' - ] - ) - ; - - - - } - - elseif - - ( - $item - [ - '$type' - ] - - === - - 'Relationship' - ) - - { - - - - $relationships - [ - ] - - = - - $this - -> - mapRelationship - ( - $item - [ - '_value' - ] - ) - ; - - - - } - - - - } - - - - - return - - new - - Path - ( - $nodes - , - - $relationships - ) - ; - - - - } - - - - - private - - function - - mapProperties - ( - array - - $properties - ) - : - - array - - - - { - - - - - $mappedProperties - - = - - [ - ] - ; - - - - - foreach - - ( - $properties - - as - - $key - - => - - $value - ) - - { - - - - if - - ( - is_array - ( - $value - ) - - && - - isset - ( - $value - [ - '$type' - ] - , - - $value - [ - '_value' - ] - ) - ) - - { - - - - $mappedProperties - [ - $key - ] - - = - - $this - -> - map - ( - $value - ) - ; - - - - } - - elseif - - ( - is_scalar - ( - $value - ) - ) - - { - - - - $mappedProperties - [ - $key - ] - - = - - $value - ; - - - - } - - elseif - - ( - is_array - ( - $value - ) - - && - - ! - isset - ( - $value - [ - '$type' - ] - ) - ) - - { - - - - $mappedProperties - [ - $key - ] - - = - - $this - -> - map - ( - [ - '$type' - - => - - 'Map' - , - - '_value' - - => - - $value - ] - ) - ; - - - - } - - else - - { - - - - error_log - ( - " - Invalid property format for key: - { - $key - } - => - " - - . - - json_encode - ( - $value - , - - JSON_THROW_ON_ERROR - ) - ) - ; - - - - - throw - - new - - \InvalidArgumentException - ( - " - Invalid property format for key: - { - $key - } - " - ) - ; - - - - } - - - - } - - - - - return - - $mappedProperties - ; - - - - } - - - - - } - - - - - diff --git a/xml-coverage/Objects/Authentication.php.xml b/xml-coverage/Objects/Authentication.php.xml deleted file mode 100644 index 774b7faf..00000000 --- a/xml-coverage/Objects/Authentication.php.xml +++ /dev/null @@ -1,620 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - use - - Neo4j\QueryAPI\Authentication\AuthenticateInterface - ; - - - use - - Neo4j\QueryAPI\Authentication\BasicAuthentication - ; - - - use - - Neo4j\QueryAPI\Authentication\BearerAuthentication - ; - - - use - - Neo4j\QueryAPI\Authentication\NoAuth - ; - - - - - class - - Authentication - - - { - - - - public - - static - - function - - basic - ( - string - - $username - , - - string - - $password - ) - : - - AuthenticateInterface - - - - { - - - - return - - new - - BasicAuthentication - ( - $username - , - - $password - ) - ; - - - - } - - - - - - public - - static - - function - - fromEnvironment - ( - ) - : - - AuthenticateInterface - - - - { - - - - $username - - = - - getenv - ( - "NEO4J_USERNAME" - ) - ; - - - - $password - - = - - getenv - ( - "NEO4J_PASSWORD" - ) - ; - - - - - return - - new - - BasicAuthentication - ( - - - - $username - - !== - - false - - ? - - $username - - : - - null - , - - - - $password - - !== - - false - - ? - - $password - - : - - null - - - - ) - ; - - - - } - - - - - - public - - static - - function - - bearer - ( - string - - $token - ) - : - - AuthenticateInterface - - - - { - - - - return - - new - - BearerAuthentication - ( - $token - ) - ; - - - - } - - - - - public - - static - - function - - noAuth - ( - ) - : - - NoAuth - - - - { - - - - return - - new - - NoAuth - ( - ) - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Objects/Bookmarks.php.xml b/xml-coverage/Objects/Bookmarks.php.xml deleted file mode 100644 index e27f8de1..00000000 --- a/xml-coverage/Objects/Bookmarks.php.xml +++ /dev/null @@ -1,368 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - use - - JsonSerializable - ; - - - - - class - - Bookmarks - - implements - - \Countable - , - - JsonSerializable - - - { - - - - public - - function - - __construct - ( - public - - array - - $bookmarks - ) - - - - { - - - - } - - - - - public - - function - - addBookmarks - ( - ? - Bookmarks - - $newBookmarks - ) - : - - void - - - - { - - - - if - - ( - $newBookmarks - - !== - - null - ) - - { - - - - $this - -> - bookmarks - - = - - array_unique - ( - array_merge - ( - $this - -> - bookmarks - , - - $newBookmarks - -> - bookmarks - ) - ) - ; - - - - } - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - count - ( - ) - : - - int - - - - { - - - - return - - count - ( - $this - -> - bookmarks - ) - ; - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - jsonSerialize - ( - ) - : - - array - - - - { - - - - return - - $this - -> - bookmarks - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Objects/Node.php.xml b/xml-coverage/Objects/Node.php.xml deleted file mode 100644 index 85d56c8d..00000000 --- a/xml-coverage/Objects/Node.php.xml +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - /** - - - * Represents a Neo4j Node with labels and properties. - - - */ - - - - - class - - Node - - - { - - - - /** - - - * Node constructor - - - * - - - * @param string[] $labels Array of labels for the node. - - - * @param array<string, mixed> $properties Associative array of properties. - - - */ - - - - public - - function - - __construct - ( - public - - array - - $labels - , - - public - - array - - $properties - ) - - - - { - - - - } - - - - - /** - - - * Convert the Node object to an array representation. - - - * @return array Node data as an array. - - - */ - - - - public - - function - - toArray - ( - ) - : - - array - - - - { - - - - return - - [ - - - - '_labels' - - => - - $this - -> - labels - , - - - - '_properties' - - => - - $this - -> - properties - , - - - - ] - ; - - - - } - - - - } - - - - - diff --git a/xml-coverage/Objects/Path.php.xml b/xml-coverage/Objects/Path.php.xml deleted file mode 100644 index c0d68c37..00000000 --- a/xml-coverage/Objects/Path.php.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - /** - - - * Represents a path in a Neo4j graph, consisting of nodes and relationships. - - - */ - - - - - class - - Path - - - { - - - - /** - - - * @var Node[] Array of nodes in the path. - - - */ - - - - public - - array - - $nodes - ; - - - - - /** - - - * @var Relationship[] Array of relationships in the path. - - - */ - - - - public - - array - - $relationships - ; - - - - - /** - - - * Path constructor. - - - * - - - * @param Node[] $nodes Array of nodes in the path. - - - * @param Relationship[] $relationships Array of relationships in the path. - - - */ - - - - public - - function - - __construct - ( - array - - $nodes - , - - array - - $relationships - ) - - - - { - - - - $this - -> - nodes - - = - - $nodes - ; - - - - $this - -> - relationships - - = - - $relationships - ; - - - - } - - - - } - - - - - diff --git a/xml-coverage/Objects/Point.php.xml b/xml-coverage/Objects/Point.php.xml deleted file mode 100644 index 1d86bcb1..00000000 --- a/xml-coverage/Objects/Point.php.xml +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - /** - - - * Represents a point with x, y, z coordinates, and SRID (Spatial Reference System Identifier). - - - */ - - - - class - - Point - - - { - - - - /** - - - * @param float $x The x coordinate of the point. - - - * @param float $y The y coordinate of the point. - - - * @param float|null $z The z coordinate of the point, or null if not applicable. - - - * @param int $srid The Spatial Reference System Identifier (SRID). - - - */ - - - - public - - function - - __construct - ( - - - - public - - float - - $x - , - - - - public - - float - - $y - , - - - - public - - float - | - null - - $z - , - - - - public - - int - - $srid - , - - - - ) - - { - - - - } - - - - - /** - - - * Convert the Point object to a string representation. - - - * - - - * @return string String representation in the format: "SRID=<srid>;POINT (<x> <y> <z>)". - - - */ - - - - public - - function - - __toString - ( - ) - : - - string - - - - { - - - - return - - " - SRID= - { - $this - -> - srid - } - ;POINT ( - { - $this - -> - x - } - - { - $this - -> - y - } - ) - " - ; - - - - } - - - - } - - - - - diff --git a/xml-coverage/Objects/ProfiledQueryPlan.php.xml b/xml-coverage/Objects/ProfiledQueryPlan.php.xml deleted file mode 100644 index 305c5d53..00000000 --- a/xml-coverage/Objects/ProfiledQueryPlan.php.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - - class - - ProfiledQueryPlan - - - { - - - - public - - function - - __construct - ( - - - - public - - ProfiledQueryPlanArguments - - $arguments - , - - - - public - - int - - $dbHits - - = - - 0 - , - - - - public - - int - - $records - - = - - 0 - , - - - - public - - bool - - $hasPageCacheStats - - = - - false - , - - - - public - - int - - $pageCacheHits - - = - - 0 - , - - - - public - - int - - $pageCacheMisses - - = - - 0 - , - - - - public - - float - - $pageCacheHitRatio - - = - - 0.0 - , - - - - public - - int - - $time - - = - - 0 - , - - - - public - - string - - $operatorType - - = - - '' - , - - - - public - - array - - $children - - = - - [ - ] - , - - - - public - - array - - $identifiers - - = - - [ - ] - - - - ) - - { - - - - } - - - } - - - - - diff --git a/xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml b/xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml deleted file mode 100644 index 3c0a7bd3..00000000 --- a/xml-coverage/Objects/ProfiledQueryPlanArguments.php.xml +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - - class - - ProfiledQueryPlanArguments - - - { - - - - public - - function - - __construct - ( - - - - public - - ? - int - - $globalMemory - - = - - null - , - - - - public - - ? - string - - $plannerImpl - - = - - null - , - - - - public - - ? - int - - $memory - - = - - null - , - - - - public - - ? - string - - $stringRepresentation - - = - - null - , - - - - public - - ? - string - - $runtime - - = - - null - , - - - - public - - ? - int - - $time - - = - - null - , - - - - public - - ? - int - - $pageCacheMisses - - = - - null - , - - - - public - - ? - int - - $pageCacheHits - - = - - null - , - - - - public - - ? - string - - $runtimeImpl - - = - - null - , - - - - public - - ? - int - - $version - - = - - null - , - - - - public - - ? - int - - $dbHits - - = - - null - , - - - - public - - ? - int - - $batchSize - - = - - null - , - - - - public - - ? - string - - $details - - = - - null - , - - - - public - - ? - string - - $plannerVersion - - = - - null - , - - - - public - - ? - string - - $pipelineInfo - - = - - null - , - - - - public - - null - | - string - | - float - - $runtimeVersion - - = - - null - , - - - - public - - ? - int - - $id - - = - - null - , - - - - public - - ? - float - - $estimatedRows - - = - - null - , - - - - public - - ? - string - - $planner - - = - - null - , - - - - public - - ? - int - - $rows - - = - - null - - - - ) - - { - - - - } - - - } - - - - - diff --git a/xml-coverage/Objects/Relationship.php.xml b/xml-coverage/Objects/Relationship.php.xml deleted file mode 100644 index add1d0da..00000000 --- a/xml-coverage/Objects/Relationship.php.xml +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - /** - - - * Represents a relationship in a Neo4j graph, with a type and associated properties. - - - */ - - - - - class - - Relationship - - - { - - - - /** - - - * @var string The type of the relationship (e.g., "FRIENDS_WITH", "WORKS_FOR"). - - - */ - - - - public - - string - - $type - ; - - - - - /** - - - * @var array<string, mixed> Associative array of properties for the relationship. - - - */ - - - - public - - array - - $properties - ; - - - - - /** - - - * Relationship constructor. - - - * - - - * @param string $type The type of the relationship. - - - * @param array<string, mixed> $properties Associative array of properties for the relationship. - - - */ - - - - public - - function - - __construct - ( - string - - $type - , - - array - - $properties - - = - - [ - ] - ) - - - - { - - - - $this - -> - type - - = - - $type - ; - - - - $this - -> - properties - - = - - $properties - ; - - - - } - - - - } - - - - - diff --git a/xml-coverage/Objects/ResultCounters.php.xml b/xml-coverage/Objects/ResultCounters.php.xml deleted file mode 100644 index fa97960e..00000000 --- a/xml-coverage/Objects/ResultCounters.php.xml +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Objects - ; - - - - - class - - ResultCounters - - - { - - - - public - - function - - __construct - ( - - - - public - - bool - - $containsUpdates - - = - - false - , - - - - public - - int - - $nodesCreated - - = - - 0 - , - - - - public - - int - - $nodesDeleted - - = - - 0 - , - - - - public - - int - - $propertiesSet - - = - - 0 - , - - - - public - - int - - $relationshipsCreated - - = - - 0 - , - - - - public - - int - - $relationshipsDeleted - - = - - 0 - , - - - - public - - int - - $labelsAdded - - = - - 0 - , - - - - public - - int - - $labelsRemoved - - = - - 0 - , - - - - public - - int - - $indexesAdded - - = - - 0 - , - - - - public - - int - - $indexesRemoved - - = - - 0 - , - - - - public - - int - - $constraintsAdded - - = - - 0 - , - - - - public - - int - - $constraintsRemoved - - = - - 0 - , - - - - public - - bool - - $containsSystemUpdates - - = - - false - , - - - - public - - int - - $systemUpdates - - = - - 0 - - - - ) - - { - - - - } - - - - } - - - - - diff --git a/xml-coverage/ResponseParser.php.xml b/xml-coverage/ResponseParser.php.xml deleted file mode 100644 index 3f9192be..00000000 --- a/xml-coverage/ResponseParser.php.xml +++ /dev/null @@ -1,3853 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI - ; - - - - use - - Neo4j\QueryAPI\Enums\AccessMode - ; - - - use - - Neo4j\QueryAPI\Exception\Neo4jException - ; - - - use - - Neo4j\QueryAPI\Objects\ProfiledQueryPlanArguments - ; - - - use - - Psr\Http\Message\ResponseInterface - ; - - - use - - Neo4j\QueryAPI\Results\ResultSet - ; - - - use - - Neo4j\QueryAPI\Objects\ResultCounters - ; - - - use - - Neo4j\QueryAPI\Objects\Bookmarks - ; - - - use - - Neo4j\QueryAPI\Results\ResultRow - ; - - - use - - RuntimeException - ; - - - use - - Neo4j\QueryAPI\Objects\ProfiledQueryPlan - ; - - - - - class - - ResponseParser - - - { - - - - public - - function - - __construct - ( - private - - OGM - - $ogm - ) - - - - { - - - - } - - - - - public - - function - - parseRunQueryResponse - ( - ResponseInterface - - $response - ) - : - - ResultSet - - - - { - - - - $data - - = - - $this - -> - validateAndDecodeResponse - ( - $response - ) - ; - - - - - $rows - - = - - $this - -> - mapRows - ( - $data - [ - 'data' - ] - [ - 'fields' - ] - - ?? - - [ - ] - , - - $data - [ - 'data' - ] - [ - 'values' - ] - - ?? - - [ - ] - ) - ; - - - - $counters - - = - - isset - ( - $data - [ - 'counters' - ] - ) - - ? - - $this - -> - buildCounters - ( - $data - [ - 'counters' - ] - ) - - : - - null - ; - - - - $bookmarks - - = - - $this - -> - buildBookmarks - ( - $data - [ - 'bookmarks' - ] - - ?? - - [ - ] - ) - ; - - - - $profiledQueryPlan - - = - - $this - -> - buildProfiledQueryPlan - ( - $data - [ - 'profiledQueryPlan' - ] - - ?? - - null - ) - ; - - - - $accessMode - - = - - $this - -> - getAccessMode - ( - $data - [ - 'accessMode' - ] - - ?? - - '' - ) - ; - - - - - return - - new - - ResultSet - ( - $rows - , - - $bookmarks - , - - $accessMode - , - - $counters - , - - $profiledQueryPlan - ) - ; - - - - } - - - - - private - - function - - validateAndDecodeResponse - ( - ResponseInterface - - $response - ) - : - - array - - - - { - - - - if - - ( - $response - -> - getStatusCode - ( - ) - - >= - - 400 - ) - - { - - - - $errorResponse - - = - - json_decode - ( - (string) - $response - -> - getBody - ( - ) - , - - true - ) - ; - - - - throw - - Neo4jException - :: - fromNeo4jResponse - ( - $errorResponse - ) - ; - - - - } - - - - - $contents - - = - - $response - -> - getBody - ( - ) - -> - getContents - ( - ) - ; - - - - $data - - = - - json_decode - ( - $contents - , - - true - ) - ; - - - - - if - - ( - ! - isset - ( - $data - [ - 'data' - ] - ) - ) - - { - - - - throw - - new - - RuntimeException - ( - 'Invalid response: "data" key missing or null.' - ) - ; - - - - } - - - - - return - - $data - ; - - - - } - - - - - /** - - - * @return list<ResultRow> - - - */ - - - - /** - - - * @param list<string> $fields - - - * @param list<array<array-key, mixed>> $values - - - * @return list<ResultRow> - - - */ - - - - private - - function - - mapRows - ( - array - - $fields - , - - array - - $values - ) - : - - array - - - - { - - - - return - - array_map - ( - - - - fn - - ( - array - - $row - ) - : - - ResultRow - - => - - new - - ResultRow - ( - - - - array_combine - ( - - - - $fields - , - - - - array_map - ( - [ - $this - , - - 'formatOGMOutput' - ] - , - - $row - ) - - - - ) - - ? - : - - [ - ] - - // Ensure array_combine never returns false - - - - ) - , - - - - $values - - - - ) - ; - - - - } - - - - - /** - - - * Ensures mapped output follows expected format - - - * - - - * @param mixed $value - - - * @return mixed - - - */ - - - - private - - function - - formatOGMOutput - ( - mixed - - $value - ) - : - - mixed - - - - { - - - - if - - ( - is_array - ( - $value - ) - - && - - array_key_exists - ( - '$type' - , - - $value - ) - - && - - array_key_exists - ( - '_value' - , - - $value - ) - ) - - { - - - - return - - $this - -> - ogm - -> - map - ( - $value - ) - ; - - - - } - - - - - return - - $value - ; - - - - } - - - - - private - - function - - buildCounters - ( - array - - $countersData - ) - : - - ResultCounters - - - - { - - - - return - - new - - ResultCounters - ( - - - - containsUpdates - : - - $countersData - [ - 'containsUpdates' - ] - - ?? - - false - , - - - - nodesCreated - : - - $countersData - [ - 'nodesCreated' - ] - - ?? - - 0 - , - - - - nodesDeleted - : - - $countersData - [ - 'nodesDeleted' - ] - - ?? - - 0 - , - - - - propertiesSet - : - - $countersData - [ - 'propertiesSet' - ] - - ?? - - 0 - , - - - - relationshipsCreated - : - - $countersData - [ - 'relationshipsCreated' - ] - - ?? - - 0 - , - - - - relationshipsDeleted - : - - $countersData - [ - 'relationshipsDeleted' - ] - - ?? - - 0 - , - - - - labelsAdded - : - - $countersData - [ - 'labelsAdded' - ] - - ?? - - 0 - , - - - - labelsRemoved - : - - $countersData - [ - 'labelsRemoved' - ] - - ?? - - 0 - , - - - - indexesAdded - : - - $countersData - [ - 'indexesAdded' - ] - - ?? - - 0 - , - - - - indexesRemoved - : - - $countersData - [ - 'indexesRemoved' - ] - - ?? - - 0 - , - - - - constraintsAdded - : - - $countersData - [ - 'constraintsAdded' - ] - - ?? - - 0 - , - - - - constraintsRemoved - : - - $countersData - [ - 'constraintsRemoved' - ] - - ?? - - 0 - , - - - - systemUpdates - : - - $countersData - [ - 'systemUpdates' - ] - - ?? - - 0 - , - - - - ) - ; - - - - } - - - - - private - - function - - buildBookmarks - ( - array - - $bookmarksData - ) - : - - Bookmarks - - - - { - - - - return - - new - - Bookmarks - ( - $bookmarksData - ) - ; - - - - } - - - - - private - - function - - getAccessMode - ( - string - - $accessModeData - ) - : - - AccessMode - - - - { - - - - return - - AccessMode - :: - tryFrom - ( - $accessModeData - ) - - ?? - - AccessMode - :: - WRITE - ; - - - - } - - - - - private - - function - - buildProfiledQueryPlan - ( - mixed - - $queryPlanData - ) - : - - ? - ProfiledQueryPlan - - - - { - - - - if - - ( - ! - - is_array - ( - $queryPlanData - ) - ) - - { - - - - return - - null - ; - - - - } - - - - - /** @var array<array-key, mixed> $mappedArguments */ - - - - $mappedArguments - - = - - array_map - ( - function - - ( - mixed - - $value - ) - : - - mixed - - { - - - - if - - ( - is_array - ( - $value - ) - - && - - array_key_exists - ( - '$type' - , - - $value - ) - - && - - array_key_exists - ( - '_value' - , - - $value - ) - ) - - { - - - - return - - $this - -> - ogm - -> - map - ( - $value - ) - ; - - - - } - - - - return - - $value - ; - - - - } - , - - $queryPlanData - [ - 'arguments' - ] - - ?? - - [ - ] - ) - ; - - - - - $queryArguments - - = - - new - - ProfiledQueryPlanArguments - ( - - - - globalMemory - : - - $mappedArguments - [ - 'GlobalMemory' - ] - - ?? - - null - , - - - - plannerImpl - : - - $mappedArguments - [ - 'planner-impl' - ] - - ?? - - null - , - - - - memory - : - - $mappedArguments - [ - 'Memory' - ] - - ?? - - null - , - - - - stringRepresentation - : - - $mappedArguments - [ - 'string-representation' - ] - - ?? - - null - , - - - - runtime - : - - $mappedArguments - [ - 'runtime' - ] - - ?? - - null - , - - - - time - : - - $mappedArguments - [ - 'Time' - ] - - ?? - - null - , - - - - pageCacheMisses - : - - $mappedArguments - [ - 'PageCacheMisses' - ] - - ?? - - null - , - - - - pageCacheHits - : - - $mappedArguments - [ - 'PageCacheHits' - ] - - ?? - - null - , - - - - runtimeImpl - : - - $mappedArguments - [ - 'runtime-impl' - ] - - ?? - - null - , - - - - version - : - - $mappedArguments - [ - 'version' - ] - - ?? - - null - , - - - - dbHits - : - - $mappedArguments - [ - 'DbHits' - ] - - ?? - - null - , - - - - batchSize - : - - $mappedArguments - [ - 'batch-size' - ] - - ?? - - null - , - - - - details - : - - $mappedArguments - [ - 'Details' - ] - - ?? - - null - , - - - - plannerVersion - : - - $mappedArguments - [ - 'planner-version' - ] - - ?? - - null - , - - - - pipelineInfo - : - - $mappedArguments - [ - 'PipelineInfo' - ] - - ?? - - null - , - - - - runtimeVersion - : - - $mappedArguments - [ - 'runtime-version' - ] - - ?? - - null - , - - - - id - : - - $mappedArguments - [ - 'Id' - ] - - ?? - - null - , - - - - estimatedRows - : - - $mappedArguments - [ - 'EstimatedRows' - ] - - ?? - - null - , - - - - planner - : - - $mappedArguments - [ - 'planner' - ] - - ?? - - null - , - - - - rows - : - - $mappedArguments - [ - 'Rows' - ] - - ?? - - null - - - - ) - ; - - - - $children - - = - - array_map - ( - fn - - ( - mixed - - $child - ) - : - - ? - ProfiledQueryPlan - - => - - $this - -> - buildProfiledQueryPlan - ( - $child - ) - , - - $queryPlanData - [ - 'children' - ] - - ?? - - [ - ] - ) - ; - - - - - return - - new - - ProfiledQueryPlan - ( - - - - $queryArguments - , - - - - $queryPlanData - [ - 'dbHits' - ] - - ?? - - 0 - , - - - - $queryPlanData - [ - 'records' - ] - - ?? - - 0 - , - - - - $queryPlanData - [ - 'hasPageCacheStats' - ] - - ?? - - false - , - - - - $queryPlanData - [ - 'pageCacheHits' - ] - - ?? - - 0 - , - - - - $queryPlanData - [ - 'pageCacheMisses' - ] - - ?? - - 0 - , - - - - $queryPlanData - [ - 'pageCacheHitRatio' - ] - - ?? - - 0.0 - , - - - - $queryPlanData - [ - 'time' - ] - - ?? - - 0 - , - - - - $queryPlanData - [ - 'operatorType' - ] - - ?? - - '' - , - - - - $children - , - - - - $queryPlanData - [ - 'identifiers' - ] - - ?? - - [ - ] - - - - ) - ; - - - - - } - - - } - - - - - diff --git a/xml-coverage/Results/ResultRow.php.xml b/xml-coverage/Results/ResultRow.php.xml deleted file mode 100644 index 242fc842..00000000 --- a/xml-coverage/Results/ResultRow.php.xml +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Results - ; - - - - use - - ArrayIterator - ; - - - use - - BadMethodCallException - ; - - - use - - Countable - ; - - - use - - IteratorAggregate - ; - - - use - - OutOfBoundsException - ; - - - use - - ArrayAccess - ; - - - use - - Traversable - ; - - - - /** - - - * @template TValue - - - * @implements ArrayAccess<string, TValue> - - - * @implements IteratorAggregate<string, TValue> - - - */ - - - - class - - ResultRow - - implements - - ArrayAccess - , - - Countable - , - - IteratorAggregate - - - { - - - - /** @var array<string, TValue> */ - - - - private - - array - - $data - ; - - - - - public - - function - - __construct - ( - array - - $data - ) - - - - { - - - - $this - -> - data - - = - - $data - ; - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - offsetGet - ( - mixed - - $offset - ) - : - - mixed - - - - { - - - - if - - ( - ! - $this - -> - offsetExists - ( - $offset - ) - ) - - { - - - - throw - - new - - OutOfBoundsException - ( - " - Column - { - $offset - } - not found. - " - ) - ; - - - - } - - - - return - - $this - -> - data - [ - $offset - ] - ; - - - - } - - - - - - #[ - \Override - ] - - - - public - - function - - offsetExists - ( - $offset - ) - : - - bool - - - - { - - - - return - - isset - ( - $this - -> - data - [ - $offset - ] - ) - ; - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - offsetSet - ( - $offset - , - - $value - ) - : - - void - - - - { - - - - throw - - new - - BadMethodCallException - ( - " - You can't set the value of column - { - $offset - } - . - " - ) - ; - - - - } - - - - #[ - \Override - ] - - - - public - - function - - offsetUnset - ( - $offset - ) - : - - void - - - - { - - - - throw - - new - - BadMethodCallException - ( - " - You can't Unset - { - $offset - } - . - " - ) - ; - - - - - } - - - - public - - function - - get - ( - string - - $row - ) - : - - mixed - - - - { - - - - return - - $this - -> - offsetGet - ( - $row - ) - ; - - - - } - - - - #[ - \Override - ] - - - - public - - function - - count - ( - ) - : - - int - - - - { - - - - return - - count - ( - $this - -> - data - ) - ; - - - - } - - - - - #[ - \Override - ] - - - - public - - function - - getIterator - ( - ) - : - - Traversable - - - - { - - - - return - - new - - ArrayIterator - ( - $this - -> - data - ) - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/Results/ResultSet.php.xml b/xml-coverage/Results/ResultSet.php.xml deleted file mode 100644 index c27eceab..00000000 --- a/xml-coverage/Results/ResultSet.php.xml +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI\Results - ; - - - - use - - ArrayIterator - ; - - - use - - Countable - ; - - - use - - IteratorAggregate - ; - - - use - - Neo4j\QueryAPI\Enums\AccessMode - ; - - - use - - Neo4j\QueryAPI\Objects\Bookmarks - ; - - - use - - Neo4j\QueryAPI\Objects\ProfiledQueryPlan - ; - - - use - - Neo4j\QueryAPI\Objects\ResultCounters - ; - - - use - - Traversable - ; - - - - /** - - - * @template TValue - - - * @implements IteratorAggregate<int, ResultRow> - - - */ - - - - class - - ResultSet - - implements - - IteratorAggregate - , - - Countable - - - { - - - - /** - - - * @param list<ResultRow> $rows - - - */ - - - - public - - function - - __construct - ( - - - - public - - array - - $rows - , - - - - public - - Bookmarks - - $bookmarks - , - - - - public - - AccessMode - - $accessMode - , - - - - public - - ? - ResultCounters - - $counters - - = - - null - , - - - - public - - ? - ProfiledQueryPlan - - $profiledQueryPlan - - = - - null - - - - ) - - { - - - - } - - - - - /** - - - * @return Traversable<int, ResultRow> - - - */ - - - - #[ - \Override - ] - - - - public - - function - - getIterator - ( - ) - : - - Traversable - - - - { - - - - return - - new - - ArrayIterator - ( - $this - -> - rows - ) - ; - - - - } - - - - - - #[ - \Override - ] - - - - public - - function - - count - ( - ) - : - - int - - - - { - - - - return - - count - ( - $this - -> - rows - ) - ; - - - - } - - - - } - - - - - diff --git a/xml-coverage/Transaction.php.xml b/xml-coverage/Transaction.php.xml deleted file mode 100644 index daf00895..00000000 --- a/xml-coverage/Transaction.php.xml +++ /dev/null @@ -1,666 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?php - - - - namespace - - Neo4j\QueryAPI - ; - - - - use - - Neo4j\QueryAPI\Exception\Neo4jException - ; - - - use - - Neo4j\QueryAPI\Results\ResultSet - ; - - - use - - Psr\Http\Client\ClientInterface - ; - - - use - - Psr\Http\Client\RequestExceptionInterface - ; - - - use - - Psr\Http\Message\ResponseInterface - ; - - - use - - stdClass - ; - - - - - class - - Transaction - - - { - - - - public - - function - - __construct - ( - - - - private - - ClientInterface - - $client - , - - - - private - - ResponseParser - - $responseParser - , - - - - private - - Neo4jRequestFactory - - $requestFactory - , - - - - private - - string - - $clusterAffinity - , - - - - private - - string - - $transactionId - - - - ) - - { - - - - } - - - - - /** - - - * Execute a Cypher query within the transaction. - - - * - - - * @param string $query The Cypher query to be executed. - - - * @param array $parameters Parameters for the query. - - - * @return ResultSet The result rows in ResultSet format. - - - * @throws Neo4jException If the response structure is invalid. - - - */ - - - - public - - function - - run - ( - string - - $query - , - - array - - $parameters - ) - : - - ResultSet - - - - { - - - - $request - - = - - $this - -> - requestFactory - -> - buildTransactionRunRequest - ( - $query - , - - $parameters - , - - $this - -> - transactionId - , - - $this - -> - clusterAffinity - ) - ; - - - - - $response - - = - - null - ; - - - - - try - - { - - - - $response - - = - - $this - -> - client - -> - sendRequest - ( - $request - ) - ; - - - - } - - catch - - ( - RequestExceptionInterface - - $e - ) - - { - - - - $this - -> - handleRequestException - ( - $e - ) - ; - - - - } - - - - - if - - ( - ! - $response - - instanceof - - ResponseInterface - ) - - { - - - - throw - - new - - Neo4jException - ( - [ - 'message' - - => - - 'Failed to receive a valid response from Neo4j' - ] - , - - 500 - ) - ; - - - - } - - - - - return - - $this - -> - responseParser - -> - parseRunQueryResponse - ( - $response - ) - ; - - - - } - - - - - public - - function - - commit - ( - ) - : - - void - - - - { - - - - $request - - = - - $this - -> - requestFactory - -> - buildCommitRequest - ( - $this - -> - transactionId - , - - $this - -> - clusterAffinity - ) - ; - - - - $this - -> - client - -> - sendRequest - ( - $request - ) - ; - - - - } - - - - - public - - function - - rollback - ( - ) - : - - void - - - - { - - - - $request - - = - - $this - -> - requestFactory - -> - buildRollbackRequest - ( - $this - -> - transactionId - , - - $this - -> - clusterAffinity - ) - ; - - - - $this - -> - client - -> - sendRequest - ( - $request - ) - ; - - - - } - - - - - /** - - - * Handles request exceptions by parsing error details and throwing a Neo4jException. - - - * - - - * @throws Neo4jException - - - */ - - - - private - - function - - handleRequestException - ( - RequestExceptionInterface - - $e - ) - : - - void - - - - { - - - - $response - - = - - method_exists - ( - $e - , - - 'getResponse' - ) - - ? - - $e - -> - getResponse - ( - ) - - : - - null - ; - - - - - if - - ( - $response - - instanceof - - ResponseInterface - ) - - { - - - - $errorResponse - - = - - json_decode - ( - (string) - $response - -> - getBody - ( - ) - , - - true - ) - ; - - - - throw - - Neo4jException - :: - fromNeo4jResponse - ( - $errorResponse - , - - $e - ) - ; - - - - } - - - - - throw - - new - - Neo4jException - ( - [ - 'message' - - => - - $e - -> - getMessage - ( - ) - ] - , - - 500 - , - - $e - ) - ; - - - - } - - - } - - - - - diff --git a/xml-coverage/index.xml b/xml-coverage/index.xml deleted file mode 100644 index 530565d8..00000000 --- a/xml-coverage/index.xml +++ /dev/null @@ -1,392 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -