Skip to content

Commit

Permalink
Laravel 11 support
Browse files Browse the repository at this point in the history
  • Loading branch information
henzeb committed Mar 11, 2024
1 parent 0a956e3 commit f164d93
Show file tree
Hide file tree
Showing 12 changed files with 74 additions and 56 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: true
matrix:
php: ['8.0','8.1','8.2']
php: ['8.1','8.2','8.3']
stability: [prefer-lowest, prefer-stable]

steps:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
.php_cs
.php_cs.cache
.phpunit.result.cache
.phpunit.cache
build
composer.lock
coverage
Expand Down
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
}
],
"require": {
"php": "^8.0"
"php": "^8.1"
},
"require-dev": {
"mockery/mockery": "^1.5",
"orchestra/testbench": "^7.0|^8.0",
"orchestra/testbench": "^8.0|^9.0",
"phpstan/phpstan": "^1.4",
"phpunit/phpunit": "^9.5.27"
"phpunit/phpunit": "^9.5.27|^10"
},
"autoload": {
"psr-4": {
Expand Down
48 changes: 22 additions & 26 deletions phpunit.xml
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
>
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./src</directory>
</include>
</coverage>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<!-- <server name="DB_CONNECTION" value="sqlite"/> -->
<!-- <server name="DB_DATABASE" value=":memory:"/> -->
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
</php>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" bootstrap="vendor/autoload.php" colors="true" cacheDirectory=".phpunit.cache">
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<!-- <server name="DB_CONNECTION" value="sqlite"/> -->
<!-- <server name="DB_DATABASE" value=":memory:"/> -->
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
</php>
<source>
<include>
<directory suffix=".php">./src</directory>
</include>
</source>
</phpunit>
8 changes: 4 additions & 4 deletions tests/Helpers/DataProviders.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@

trait DataProviders
{
public function providesOperators(): array
public static function providesOperators(): array
{
return [
'and' => ['and'],
'or' => ['or'],
];
}

public function providesFilterTestcases(): array
public static function providesFilterTestcases(): array
{
return [
'is' => ['method' => 'is', 'parameters' => ['key' => 'animal', 'value' => 'cat'], null],
Expand Down Expand Up @@ -72,10 +72,10 @@ public function providesFilterTestcases(): array
];
}

public function providesFilterWithQueryTestcases(): array
public static function providesFilterWithQueryTestcases(): array
{
return array_merge_recursive(
$this->providesFilterTestcases(),
static::providesFilterTestcases(),
[
'is' => ['query' => '`animal` = ?'],
'is-null' => ['query' => '`animal` is null'],
Expand Down
13 changes: 13 additions & 0 deletions tests/Helpers/Errors.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Henzeb\Query\Tests\Helpers;

use Error;

trait Errors
{
public function expectError(): void
{
$this->expectException(Error::class);
}
}
4 changes: 3 additions & 1 deletion tests/Unit/Filters/QueryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
use Henzeb\Query\Builders\Contracts\QueryBuilder;
use Henzeb\Query\Filters\Query;
use Henzeb\Query\Tests\Helpers\DataProviders;
use Henzeb\Query\Tests\Helpers\Errors;
use Mockery;
use Mockery\Adapter\Phpunit\MockeryTestCase;
use Mockery\Mock;

class QueryTest extends MockeryTestCase
{
use DataProviders;
use DataProviders, Errors;

public function getMock(bool $withGetFilters = true): Query|Mock
{
Expand All @@ -36,6 +37,7 @@ public function getMock(bool $withGetFilters = true): Query|Mock
/**
* @param string $method
* @param array $parameters
* @param string|null $expectedMethod
* @return void
*
* @dataProvider providesFilterTestcases
Expand Down
21 changes: 12 additions & 9 deletions tests/Unit/Illuminate/Builders/BuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Henzeb\Query\Tests\Unit\Illuminate\Builders;

use Henzeb\Query\Filters\Query;
use Henzeb\Query\Tests\Helpers\Errors;
use Orchestra\Testbench\TestCase;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Model;
Expand All @@ -16,11 +17,12 @@

class BuilderTest extends TestCase
{
use DataProviders;
use DataProviders, Errors;

/**
* @param string $method
* @param array $parameters
* @param string|null $expectedMethod
* @param string|array $query
* @param bool $noParameters
* @return void
Expand All @@ -29,7 +31,7 @@ class BuilderTest extends TestCase
*/
public function testShouldBuild(string $method, array $parameters, ?string $expectedMethod, string|array $query, bool $noParameters = false): void
{
$laravelBuilder = DB::query()->from('animals');
$laravelBuilder = DB::connection('mysql')->query()->from('animals');

$builder = new Builder($laravelBuilder);

Expand Down Expand Up @@ -61,7 +63,7 @@ public function testShouldBuild(string $method, array $parameters, ?string $expe
*/
public function testShouldBuildWithOr(string $method, array $parameters, ?string $expectedMethod, array|string $query, bool $noParameters = false): void
{
$illuminateBuilder = DB::query()->from('animals')->whereRaw('true');
$illuminateBuilder = DB::connection('mysql')->query()->from('animals')->whereRaw('true');

$builder = new Builder($illuminateBuilder);

Expand Down Expand Up @@ -95,7 +97,7 @@ public function testShouldBuildWithOr(string $method, array $parameters, ?string
*/
public function testShouldBuildWithNest(string $method, array $parameters, ?string $expectedMethod, array|string $query, bool $noParameters = false): void
{
$illuminateBuilder = DB::query()->from('animals')->whereRaw('true');
$illuminateBuilder = DB::connection('mysql')->query()->from('animals')->whereRaw('true');
$builder = new Builder($illuminateBuilder);

$method = $expectedMethod ?? $method;
Expand Down Expand Up @@ -127,7 +129,7 @@ public function testShouldBuildWithNest(string $method, array $parameters, ?stri
*/
public function testShouldBuildWithGroupOr(string $method, array $parameters, ?string $expectedMethod, array|string $query, bool $noParameters = false): void
{
$laravelBuilder = DB::query()->from('animals');
$laravelBuilder = DB::connection('mysql')->query()->from('animals');
$builder = new Builder($laravelBuilder);

$method = $expectedMethod ?? $method;
Expand Down Expand Up @@ -157,7 +159,7 @@ public function testAcceptsEloquentBuilderInstance()
protected $table = 'my_table';
};

$query = $model->where('alive', true);
$query = $model->setConnection('mysql')->where('alive', true);

$builder = new Builder($query);
$builder->is('animal', 'cat');
Expand All @@ -171,7 +173,7 @@ public function testAcceptsEloquentBuilderInstance()
public function testShouldNotAllowNonIlluminateFilters()
{

$laravelBuilder = DB::query()->from('animals');
$laravelBuilder = DB::connection('mysql')->query()->from('animals');

$myFilter = new class implements Filter {

Expand All @@ -185,7 +187,7 @@ public function testShouldNotAllowNonIlluminateFilters()
public function testShouldNotAllowNonIlluminateFiltersWhenOr()
{

$laravelBuilder = DB::query()->from('animals');
$laravelBuilder = DB::connection('mysql')->query()->from('animals');

$myFilter = new class implements Filter {

Expand All @@ -198,7 +200,7 @@ public function testShouldNotAllowNonIlluminateFiltersWhenOr()

public function testShouldBuildFilter()
{
$laravelBuilder = DB::query()->from('animals')->where('animal', 'dog');;
$laravelBuilder = DB::connection('mysql')->query()->from('animals')->where('animal', 'dog');;

$myFilter = new class implements IlluminateFilter {
public function build(EloquentBuilder|IlluminateBuilder $builder): void
Expand All @@ -218,6 +220,7 @@ public function build(EloquentBuilder|IlluminateBuilder $builder): void

public function testShouldBuildOrFilter()
{
DB::setDefaultConnection('mysql');
$laravelBuilder = DB::query()->from('animals')->where('animal', 'dog');

$myFilter = new class implements IlluminateFilter {
Expand Down
9 changes: 6 additions & 3 deletions tests/Unit/Illuminate/Mixins/Concerns/Mocks.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@
use Mockery;
use Mockery\MockInterface;
use Illuminate\Foundation\Http\FormRequest;
use Symfony\Component\HttpFoundation\FileBag;
use Symfony\Component\HttpFoundation\HeaderBag;
use Symfony\Component\HttpFoundation\InputBag;
use Henzeb\Query\Illuminate\Providers\QueryFilterServiceProvider;
use Symfony\Component\HttpFoundation\ServerBag;

trait Mocks
{
Expand All @@ -24,9 +27,9 @@ public function getFormRequest(): FormRequest|MockInterface
$partial->query = new InputBag();
$partial->request = new InputBag();

$partial->server = new InputBag();
$partial->files = new InputBag();
$partial->headers = new InputBag();
$partial->server = new ServerBag();
$partial->files = new FileBag();
$partial->headers = new HeaderBag();

return $partial;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ private function filters(Query $query): void
);
}

public function providesTestCasesForFilter(): array
public static function providesTestCasesForFilter(): array
{
return [
'basic' => [['filter' => ['animal' => 'dog']], 'animal', 'dog'],
Expand All @@ -41,7 +41,7 @@ public function providesTestCasesForFilter(): array
}


public function providesTestCasesForFilterArray(): array
public static function providesTestCasesForFilterArray(): array
{
return [
'basic' => [['filter' => ['animal' => 'dog']], 'animal', 'dog'],
Expand All @@ -57,7 +57,7 @@ public function providesTestCasesForFilterArray(): array
];
}

public function providesTestCasesForHasFilter(): array
public static function providesTestCasesForHasFilter(): array
{
return [
'basic' => [['filter' => ['animal' => 'dog']], 'animal', true],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class PaginationTest extends TestCase
use Mocks;


public function providesPaginationInputBags()
public static function providesPaginationInputBags(): array
{
return [
'different-default-limit' => [
Expand Down Expand Up @@ -141,7 +141,7 @@ public function testShouldAllowFormRequestOverrideManuallyAddedLimit()
);
}

public function providesValidationFailures(): array
public static function providesValidationFailures(): array
{
return [
'size-as-string' => [
Expand Down Expand Up @@ -228,7 +228,7 @@ public function testShouldIgnoreGetInstanceWithPagination()
Config::set('filter.pagination.auto', true);
}

public function providesEnablePaginationTestcases()
public static function providesEnablePaginationTestcases(): array
{
return [
'config-disabled-fq-enabled' => [false, true,(new Query())->limit(12)],
Expand Down
6 changes: 3 additions & 3 deletions tests/Unit/Illuminate/Mixins/FormRequestMxin/SortingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class SortingTest extends TestCase
{
use Mocks;

public function providesSortingSituations(): array
public static function providesSortingSituations(): array
{
return [
'asc' => ['input' => ['sort' => 'animal'], 'expected' => (new Query())->limit(50)->asc('animal')],
Expand Down Expand Up @@ -67,7 +67,7 @@ public function testShouldGetInstanceWithSorting(array $input, Query $expected,
);
}

public function provideSortingValidationFailures(): array
public static function provideSortingValidationFailures(): array
{
return [
'boolean' => [true],
Expand Down Expand Up @@ -103,7 +103,7 @@ public function testShouldFailWithIncorrectValues(mixed $input, string $member =
$formRequest->getFilter();
}

public function providesEnablePaginationTestcases()
public static function providesEnablePaginationTestcases(): array
{
return [
'config-disabled-fq-enabled' =>
Expand Down

0 comments on commit f164d93

Please sign in to comment.