Skip to content

Commit 5a04505

Browse files
committed
Create test for include eager load
1 parent 194520c commit 5a04505

File tree

3 files changed

+50
-19
lines changed

3 files changed

+50
-19
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Tests\LIQRGV\QueryFilter;
4+
5+
use Illuminate\Database\Query\Builder;
6+
use LIQRGV\QueryFilter\Mocks\MockModelController;
7+
use LIQRGV\QueryFilter\Mocks\RelationMocks\MockModelWithRelationOne;
8+
use LIQRGV\QueryFilter\RequestParser;
9+
use Symfony\Component\HttpFoundation\ParameterBag;
10+
11+
class RequestParserIncludeEagerLoadTest extends TestCase
12+
{
13+
function testIncludeEagerLoadRelation()
14+
{
15+
$uri = 'some_model';
16+
$controllerClass = MockModelController::class;
17+
$query = new ParameterBag([
18+
"include" => "mockModel",
19+
]);
20+
$requestParserOptions = [
21+
];
22+
23+
$request = $this->createControllerRequest($uri, $controllerClass, $query, $requestParserOptions);
24+
25+
$requestParser = new RequestParser($request);
26+
$requestParser->setModel(MockModelWithRelationOne::class);
27+
$builder = $requestParser->getBuilder();
28+
29+
$query = $builder->getQuery();
30+
$this->assertEquals("mock_model_with_relation_ones", $query->from);
31+
$this->assertArrayHasKey("mockModel", $builder->getEagerLoads());
32+
}
33+
}

tests/RequestParserRelationTest.php

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@
33
namespace Tests\LIQRGV\QueryFilter;
44

55
use Illuminate\Database\Query\Builder;
6-
use Illuminate\Http\Request;
7-
use Illuminate\Routing\Route;
8-
use Illuminate\Support\Facades\Config;
9-
use LIQRGV\QueryFilter\Exception\ModelNotFoundException;
10-
use LIQRGV\QueryFilter\Exception\NotModelException;
116
use LIQRGV\QueryFilter\Mocks\MockModelController;
127
use LIQRGV\QueryFilter\Mocks\RelationMocks\MockModelWithRelationOne;
138
use LIQRGV\QueryFilter\RequestParser;
@@ -39,18 +34,20 @@ function testFilterRelationOne()
3934
$this->assertEquals("mock_model_with_relation_ones", $query->from);
4035

4136
// assert relation first
42-
$this->assertEquals("Column", $builder->getQuery()->wheres[0]["query"]->wheres[0]["type"]);
43-
$this->assertEquals("mock_model_with_relation_ones.id", $builder->getQuery()->wheres[0]["query"]->wheres[0]["first"]);
44-
$this->assertEquals("=", $builder->getQuery()->wheres[0]["query"]->wheres[0]["operator"]);
45-
$this->assertEquals("mock_models.mock_model_with_relation_one_id", $builder->getQuery()->wheres[0]["query"]->wheres[0]["second"]);
46-
$this->assertEquals("and", $builder->getQuery()->wheres[0]["query"]->wheres[0]["boolean"]);
37+
$firstQueryWhere = $builder->getQuery()->wheres[0]["query"]->wheres[0];
38+
$this->assertEquals("Column", $firstQueryWhere["type"]);
39+
$this->assertEquals("mock_model_with_relation_ones.id", $firstQueryWhere["first"]);
40+
$this->assertEquals("=", $firstQueryWhere["operator"]);
41+
$this->assertEquals("mock_models.mock_model_with_relation_one_id", $firstQueryWhere["second"]);
42+
$this->assertEquals("and", $firstQueryWhere["boolean"]);
4743

4844
// assert relation query
49-
$this->assertEquals("Basic", $builder->getQuery()->wheres[0]["query"]->wheres[1]["type"]);
50-
$this->assertEquals("mock_models.id", $builder->getQuery()->wheres[0]["query"]->wheres[1]["column"]);
51-
$this->assertEquals("=", $builder->getQuery()->wheres[0]["query"]->wheres[1]["operator"]);
52-
$this->assertEquals("2", $builder->getQuery()->wheres[0]["query"]->wheres[1]["value"]);
53-
$this->assertEquals("and", $builder->getQuery()->wheres[0]["query"]->wheres[1]["boolean"]);
45+
$secondQueryWhere = $builder->getQuery()->wheres[0]["query"]->wheres[1];
46+
$this->assertEquals("Basic", $secondQueryWhere["type"]);
47+
$this->assertEquals("mock_models.id", $secondQueryWhere["column"]);
48+
$this->assertEquals("=", $secondQueryWhere["operator"]);
49+
$this->assertEquals("2", $secondQueryWhere["value"]);
50+
$this->assertEquals("and", $secondQueryWhere["boolean"]);
5451
}
5552

5653
function testFilterOrRelationOne()
@@ -76,11 +73,12 @@ function testFilterOrRelationOne()
7673
$this->assertEquals("mock_model_with_relation_ones", $query->from);
7774

7875
// assert nested query
79-
$this->assertEquals("Nested", $builder->getQuery()->wheres[0]["type"]);
80-
$this->assertEquals("and", $builder->getQuery()->wheres[0]["boolean"]);
76+
$firstQueryWhere = $builder->getQuery()->wheres[0];
77+
$this->assertEquals("Nested", $firstQueryWhere["type"]);
78+
$this->assertEquals("and", $firstQueryWhere["boolean"]);
8179

8280
/** @var Builder $nestedQuery */
83-
$nestedQuery = $builder->getQuery()->wheres[0]["query"];
81+
$nestedQuery = $firstQueryWhere["query"];
8482

8583
$this->assertEquals("Exists", $nestedQuery->wheres[0]["type"]);
8684
$this->assertEquals("Exists", $nestedQuery->wheres[1]["type"]);

tests/TestCase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
abstract class TestCase extends \PHPUnit\Framework\TestCase
1414
{
15-
protected function setUp()
15+
protected function setUp(): void
1616
{
1717
parent::setUp();
1818

0 commit comments

Comments
 (0)