From 5a04505414178df1dcabcb775e37c93d8ae8351b Mon Sep 17 00:00:00 2001 From: Septian Hari <5935057+LIQRGV@users.noreply.github.com> Date: Wed, 30 Nov 2022 12:23:35 +0700 Subject: [PATCH] Create test for include eager load --- tests/RequestParserIncludeEagerLoadTest.php | 33 ++++++++++++++++++++ tests/RequestParserRelationTest.php | 34 ++++++++++----------- tests/TestCase.php | 2 +- 3 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 tests/RequestParserIncludeEagerLoadTest.php diff --git a/tests/RequestParserIncludeEagerLoadTest.php b/tests/RequestParserIncludeEagerLoadTest.php new file mode 100644 index 0000000..53dde26 --- /dev/null +++ b/tests/RequestParserIncludeEagerLoadTest.php @@ -0,0 +1,33 @@ + "mockModel", + ]); + $requestParserOptions = [ + ]; + + $request = $this->createControllerRequest($uri, $controllerClass, $query, $requestParserOptions); + + $requestParser = new RequestParser($request); + $requestParser->setModel(MockModelWithRelationOne::class); + $builder = $requestParser->getBuilder(); + + $query = $builder->getQuery(); + $this->assertEquals("mock_model_with_relation_ones", $query->from); + $this->assertArrayHasKey("mockModel", $builder->getEagerLoads()); + } +} diff --git a/tests/RequestParserRelationTest.php b/tests/RequestParserRelationTest.php index 76552a4..47dfd45 100644 --- a/tests/RequestParserRelationTest.php +++ b/tests/RequestParserRelationTest.php @@ -3,11 +3,6 @@ namespace Tests\LIQRGV\QueryFilter; use Illuminate\Database\Query\Builder; -use Illuminate\Http\Request; -use Illuminate\Routing\Route; -use Illuminate\Support\Facades\Config; -use LIQRGV\QueryFilter\Exception\ModelNotFoundException; -use LIQRGV\QueryFilter\Exception\NotModelException; use LIQRGV\QueryFilter\Mocks\MockModelController; use LIQRGV\QueryFilter\Mocks\RelationMocks\MockModelWithRelationOne; use LIQRGV\QueryFilter\RequestParser; @@ -39,18 +34,20 @@ function testFilterRelationOne() $this->assertEquals("mock_model_with_relation_ones", $query->from); // assert relation first - $this->assertEquals("Column", $builder->getQuery()->wheres[0]["query"]->wheres[0]["type"]); - $this->assertEquals("mock_model_with_relation_ones.id", $builder->getQuery()->wheres[0]["query"]->wheres[0]["first"]); - $this->assertEquals("=", $builder->getQuery()->wheres[0]["query"]->wheres[0]["operator"]); - $this->assertEquals("mock_models.mock_model_with_relation_one_id", $builder->getQuery()->wheres[0]["query"]->wheres[0]["second"]); - $this->assertEquals("and", $builder->getQuery()->wheres[0]["query"]->wheres[0]["boolean"]); + $firstQueryWhere = $builder->getQuery()->wheres[0]["query"]->wheres[0]; + $this->assertEquals("Column", $firstQueryWhere["type"]); + $this->assertEquals("mock_model_with_relation_ones.id", $firstQueryWhere["first"]); + $this->assertEquals("=", $firstQueryWhere["operator"]); + $this->assertEquals("mock_models.mock_model_with_relation_one_id", $firstQueryWhere["second"]); + $this->assertEquals("and", $firstQueryWhere["boolean"]); // assert relation query - $this->assertEquals("Basic", $builder->getQuery()->wheres[0]["query"]->wheres[1]["type"]); - $this->assertEquals("mock_models.id", $builder->getQuery()->wheres[0]["query"]->wheres[1]["column"]); - $this->assertEquals("=", $builder->getQuery()->wheres[0]["query"]->wheres[1]["operator"]); - $this->assertEquals("2", $builder->getQuery()->wheres[0]["query"]->wheres[1]["value"]); - $this->assertEquals("and", $builder->getQuery()->wheres[0]["query"]->wheres[1]["boolean"]); + $secondQueryWhere = $builder->getQuery()->wheres[0]["query"]->wheres[1]; + $this->assertEquals("Basic", $secondQueryWhere["type"]); + $this->assertEquals("mock_models.id", $secondQueryWhere["column"]); + $this->assertEquals("=", $secondQueryWhere["operator"]); + $this->assertEquals("2", $secondQueryWhere["value"]); + $this->assertEquals("and", $secondQueryWhere["boolean"]); } function testFilterOrRelationOne() @@ -76,11 +73,12 @@ function testFilterOrRelationOne() $this->assertEquals("mock_model_with_relation_ones", $query->from); // assert nested query - $this->assertEquals("Nested", $builder->getQuery()->wheres[0]["type"]); - $this->assertEquals("and", $builder->getQuery()->wheres[0]["boolean"]); + $firstQueryWhere = $builder->getQuery()->wheres[0]; + $this->assertEquals("Nested", $firstQueryWhere["type"]); + $this->assertEquals("and", $firstQueryWhere["boolean"]); /** @var Builder $nestedQuery */ - $nestedQuery = $builder->getQuery()->wheres[0]["query"]; + $nestedQuery = $firstQueryWhere["query"]; $this->assertEquals("Exists", $nestedQuery->wheres[0]["type"]); $this->assertEquals("Exists", $nestedQuery->wheres[1]["type"]); diff --git a/tests/TestCase.php b/tests/TestCase.php index fbd11ba..d94a9a9 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -12,7 +12,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { - protected function setUp() + protected function setUp(): void { parent::setUp();