Skip to content

Commit

Permalink
Create test for include eager load
Browse files Browse the repository at this point in the history
  • Loading branch information
LIQRGV committed Nov 30, 2022
1 parent 194520c commit 5a04505
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 19 deletions.
33 changes: 33 additions & 0 deletions tests/RequestParserIncludeEagerLoadTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace Tests\LIQRGV\QueryFilter;

use Illuminate\Database\Query\Builder;
use LIQRGV\QueryFilter\Mocks\MockModelController;
use LIQRGV\QueryFilter\Mocks\RelationMocks\MockModelWithRelationOne;
use LIQRGV\QueryFilter\RequestParser;
use Symfony\Component\HttpFoundation\ParameterBag;

class RequestParserIncludeEagerLoadTest extends TestCase
{
function testIncludeEagerLoadRelation()
{
$uri = 'some_model';
$controllerClass = MockModelController::class;
$query = new ParameterBag([
"include" => "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());
}
}
34 changes: 16 additions & 18 deletions tests/RequestParserRelationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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()
Expand All @@ -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"]);
Expand Down
2 changes: 1 addition & 1 deletion tests/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

abstract class TestCase extends \PHPUnit\Framework\TestCase
{
protected function setUp()
protected function setUp(): void
{
parent::setUp();

Expand Down

0 comments on commit 5a04505

Please sign in to comment.