Skip to content

Commit bd99225

Browse files
committed
Add Laravel 11 support
1 parent 60686cc commit bd99225

File tree

68 files changed

+1155
-789
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1155
-789
lines changed

.github/workflows/code-style.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
- name: Install php and composer
1313
uses: shivammathur/setup-php@v2
1414
with:
15-
php-version: 8.1
15+
php-version: 8.2
1616
coverage: none
1717
tools: composer:v2
1818

.github/workflows/static-analysis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
- name: Install php and composer
1313
uses: shivammathur/setup-php@v2
1414
with:
15-
php-version: 8.1
15+
php-version: 8.2
1616
coverage: none
1717
tools: composer:v2
1818

.github/workflows/test.yml

+4-16
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,12 @@ jobs:
77
runs-on: ubuntu-latest
88
strategy:
99
matrix:
10-
php: [7.4, 8.0, 8.1]
10+
php: [8.2]
1111
include:
12-
- php: 7.4
13-
scout: 8.0
14-
testbench: 6.0
15-
phpunit: 9.5
16-
elastic-search: 8.0.0
17-
18-
- php: 8.0
19-
scout: 9.0
20-
testbench: 7.0
21-
phpunit: 9.5
22-
elastic-search: 8.4.0
23-
24-
- php: 8.1
12+
- php: 8.2
2513
scout: 10.0
26-
testbench: 8.0
27-
phpunit: 9.5
14+
testbench: 9.0
15+
phpunit: 11.0
2816
elastic-search: 8.6.2
2917
steps:
3018
- name: Checkout code

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ MYSQL_USER := test
1212
MYSQL_PASSWORD := test
1313

1414
## elasticsearch config
15-
ES_VERSION ?= 8.2.0
15+
ES_VERSION ?= 8.6.0
1616
ES_CONTAINER_IMAGE := elasticsearch:${ES_VERSION}
1717
ES_CONTAINER_NAME := elastic-scout-driver-plus-elasticsearch
1818
ES_HOST_PORT := 29200

README.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ Elastic Scout Driver Plus supports:
5050

5151
The current version of Elastic Scout Driver Plus has been tested with the following configuration:
5252

53-
* PHP 7.4-8.x
53+
* PHP 8.2
5454
* Elasticsearch 8.x
55-
* Laravel 7.x-10.x
56-
* Laravel Scout 7.x-10.x
55+
* Laravel 11.x
56+
* Laravel Scout 10.x
57+
58+
If your project uses older Laravel (or PHP) version check [the previous major version](https://github.com/babenkoivan/elastic-scout-driver-plus/tree/v4.7.0#compatibility) of the package.
5759

5860
## Installation
5961

composer.json

+8-6
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@
3939
},
4040
"require": {
4141
"php": "^7.4 || ^8.0",
42-
"babenkoivan/elastic-scout-driver": "^3.1",
43-
"babenkoivan/elastic-adapter": "^3.4"
42+
"babenkoivan/elastic-scout-driver": "v4.x-dev",
43+
"babenkoivan/elastic-adapter": "v4.x-dev"
4444
},
4545
"require-dev": {
46-
"phpunit/phpunit": "^9.5",
47-
"orchestra/testbench": "^8.0",
48-
"babenkoivan/elastic-migrations": "^3.3",
46+
"phpunit/phpunit": "^11.0",
47+
"orchestra/testbench": "^9.0",
48+
"babenkoivan/elastic-migrations": "v4.x-dev",
4949
"laravel/scout": "^10.0",
5050
"friendsofphp/php-cs-fixer": "^3.14",
5151
"phpstan/phpstan": "^1.10",
@@ -63,5 +63,7 @@
6363
"Elastic\\ScoutDriverPlus\\ServiceProvider"
6464
]
6565
}
66-
}
66+
},
67+
"minimum-stability": "dev",
68+
"prefer-stable" : true
6769
}

phpstan-baseline.neon

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
parameters:
22
ignoreErrors:
33
-
4-
message: "#^Method Elastic\\\\ScoutDriverPlus\\\\Builders\\\\SearchParametersBuilder\\:\\:resolveJoinedIndexName\\(\\) should return string but returns mixed\\.$#"
4+
message: "#^Method Elastic\\\\ScoutDriverPlus\\\\Builders\\\\SearchParametersBuilder\\:\\:resolveJoinedIndexName\\(\\) should return string but returns string\\|null\\.$#"
55
count: 1
66
path: src/Builders/SearchParametersBuilder.php
77

phpstan.neon.dist

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ includes:
33

44
parameters:
55
level: max
6-
checkMissingIterableValueType: false
7-
checkGenericClassInNonGenericObjectType: false
86
paths:
97
- src
108
ignoreErrors:
9+
- identifier: missingType.iterableValue
10+
- identifier: missingType.generics
1111
- '#Parameter .+? of method Illuminate\\Support\\Collection<.+?>::.+?\(\) expects .+? given#'
1212
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Model::(getScoutKey|getScoutKeyName|getScoutModelsByIds|queryScoutModelsByIds|searchableAs|searchableUsing|scoutMetadata|pushSoftDeleteMetadata|toSearchableArray|withTrashed|searchableRouting)\(\)#'
1313
- '#Call to an undefined method Illuminate\\Support\\Collection::withSearchableRelations\(\)#'

phpunit.xml.dist

+13-14
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.4/phpunit.xsd"
3+
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/11.1/phpunit.xsd"
44
bootstrap="vendor/autoload.php"
55
executionOrder="depends,defects"
6-
forceCoversAnnotation="true"
7-
beStrictAboutCoversAnnotation="true"
86
beStrictAboutOutputDuringTests="true"
9-
beStrictAboutTodoAnnotatedTests="true"
10-
verbose="true"
11-
colors="true">
12-
<coverage processUncoveredFiles="true">
13-
<include>
14-
<directory suffix=".php">src</directory>
15-
</include>
16-
<exclude>
17-
<file>src/ServiceProvider.php</file>
18-
</exclude>
19-
</coverage>
7+
colors="true"
8+
cacheDirectory=".phpunit.cache"
9+
requireCoverageMetadata="true"
10+
beStrictAboutCoverageMetadata="true">
2011
<testsuites>
2112
<testsuite name="unit">
2213
<directory suffix="Test.php">tests/Unit</directory>
@@ -35,4 +26,12 @@
3526
<env name="DB_PASSWORD" value="test"/>
3627
<env name="ELASTIC_HOST" value="127.0.0.1:29200"/>
3728
</php>
29+
<source>
30+
<include>
31+
<directory suffix=".php">src</directory>
32+
</include>
33+
<exclude>
34+
<file>src/ServiceProvider.php</file>
35+
</exclude>
36+
</source>
3837
</phpunit>

tests/Integration/Builders/BoolQueryBuilderTest.php

+28-17
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,40 @@
22

33
namespace Elastic\ScoutDriverPlus\Tests\Integration\Builders;
44

5+
use Elastic\ScoutDriverPlus\Builders\AbstractParameterizedQueryBuilder;
56
use Elastic\ScoutDriverPlus\Builders\BoolQueryBuilder;
7+
use Elastic\ScoutDriverPlus\Builders\MatchAllQueryBuilder;
8+
use Elastic\ScoutDriverPlus\Builders\TermQueryBuilder;
69
use Elastic\ScoutDriverPlus\Exceptions\QueryBuilderValidationException;
10+
use Elastic\ScoutDriverPlus\Factories\ParameterFactory;
11+
use Elastic\ScoutDriverPlus\QueryParameters\ParameterCollection;
12+
use Elastic\ScoutDriverPlus\QueryParameters\Shared\FieldParameter;
13+
use Elastic\ScoutDriverPlus\QueryParameters\Shared\ValueParameter;
14+
use Elastic\ScoutDriverPlus\QueryParameters\Transformers\FlatArrayTransformer;
15+
use Elastic\ScoutDriverPlus\QueryParameters\Transformers\GroupedArrayTransformer;
16+
use Elastic\ScoutDriverPlus\QueryParameters\Validators\AllOfValidator;
17+
use Elastic\ScoutDriverPlus\QueryParameters\Validators\OneOfValidator;
18+
use Elastic\ScoutDriverPlus\Support\Arr;
719
use Elastic\ScoutDriverPlus\Support\Query;
820
use Elastic\ScoutDriverPlus\Tests\Integration\TestCase;
21+
use PHPUnit\Framework\Attributes\CoversClass;
22+
use PHPUnit\Framework\Attributes\UsesClass;
923
use stdClass;
1024

11-
/**
12-
* @covers \Elastic\ScoutDriverPlus\Builders\AbstractParameterizedQueryBuilder
13-
* @covers \Elastic\ScoutDriverPlus\Builders\BoolQueryBuilder
14-
*
15-
* @uses \Elastic\ScoutDriverPlus\Builders\MatchAllQueryBuilder
16-
* @uses \Elastic\ScoutDriverPlus\Builders\TermQueryBuilder
17-
* @uses \Elastic\ScoutDriverPlus\Factories\ParameterFactory
18-
* @uses \Elastic\ScoutDriverPlus\QueryParameters\ParameterCollection
19-
* @uses \Elastic\ScoutDriverPlus\QueryParameters\Shared\FieldParameter
20-
* @uses \Elastic\ScoutDriverPlus\QueryParameters\Shared\ValueParameter
21-
* @uses \Elastic\ScoutDriverPlus\QueryParameters\Transformers\FlatArrayTransformer
22-
* @uses \Elastic\ScoutDriverPlus\QueryParameters\Transformers\GroupedArrayTransformer
23-
* @uses \Elastic\ScoutDriverPlus\QueryParameters\Validators\AllOfValidator
24-
* @uses \Elastic\ScoutDriverPlus\QueryParameters\Validators\OneOfValidator
25-
* @uses \Elastic\ScoutDriverPlus\Support\Arr
26-
* @uses \Elastic\ScoutDriverPlus\Support\Query
27-
*/
25+
#[CoversClass(AbstractParameterizedQueryBuilder::class)]
26+
#[CoversClass(BoolQueryBuilder::class)]
27+
#[UsesClass(MatchAllQueryBuilder::class)]
28+
#[UsesClass(TermQueryBuilder::class)]
29+
#[UsesClass(ParameterFactory::class)]
30+
#[UsesClass(ParameterCollection::class)]
31+
#[UsesClass(FieldParameter::class)]
32+
#[UsesClass(ValueParameter::class)]
33+
#[UsesClass(FlatArrayTransformer::class)]
34+
#[UsesClass(GroupedArrayTransformer::class)]
35+
#[UsesClass(AllOfValidator::class)]
36+
#[UsesClass(OneOfValidator::class)]
37+
#[UsesClass(Arr::class)]
38+
#[UsesClass(Query::class)]
2839
final class BoolQueryBuilderTest extends TestCase
2940
{
3041
private BoolQueryBuilder $builder;

tests/Integration/Builders/DatabaseQueryBuilderTest.php

+11-8
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@
33
namespace Elastic\ScoutDriverPlus\Tests\Integration\Builders;
44

55
use Elastic\ScoutDriverPlus\Builders\DatabaseQueryBuilder;
6+
use Elastic\ScoutDriverPlus\Engine;
7+
use Elastic\ScoutDriverPlus\Factories\DocumentFactory;
8+
use Elastic\ScoutDriverPlus\Factories\RoutingFactory;
9+
use Elastic\ScoutDriverPlus\Searchable;
610
use Elastic\ScoutDriverPlus\Tests\App\Author;
711
use Elastic\ScoutDriverPlus\Tests\App\Book;
812
use Elastic\ScoutDriverPlus\Tests\Integration\TestCase;
913
use Illuminate\Database\Eloquent\Builder;
14+
use PHPUnit\Framework\Attributes\CoversClass;
15+
use PHPUnit\Framework\Attributes\UsesClass;
1016

11-
/**
12-
* @covers \Elastic\ScoutDriverPlus\Builders\DatabaseQueryBuilder
13-
*
14-
* @uses \Elastic\ScoutDriverPlus\Engine
15-
* @uses \Elastic\ScoutDriverPlus\Factories\DocumentFactory
16-
* @uses \Elastic\ScoutDriverPlus\Factories\RoutingFactory
17-
* @uses \Elastic\ScoutDriverPlus\Searchable
18-
*/
17+
#[CoversClass(DatabaseQueryBuilder::class)]
18+
#[UsesClass(Engine::class)]
19+
#[UsesClass(DocumentFactory::class)]
20+
#[UsesClass(RoutingFactory::class)]
21+
#[UsesClass(Searchable::class)]
1922
final class DatabaseQueryBuilderTest extends TestCase
2023
{
2124
public function test_query_with_model_that_supports_soft_deletes(): void

tests/Integration/Builders/SearchParametersBuilderTest.php

+14-10
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,27 @@
33
namespace Elastic\ScoutDriverPlus\Tests\Integration\Builders;
44

55
use Elastic\Adapter\Search\SearchParameters;
6+
use Elastic\ScoutDriverPlus\Builders\DatabaseQueryBuilder;
67
use Elastic\ScoutDriverPlus\Builders\SearchParametersBuilder;
8+
use Elastic\ScoutDriverPlus\Engine;
79
use Elastic\ScoutDriverPlus\Exceptions\NotSearchableModelException;
10+
use Elastic\ScoutDriverPlus\Factories\ParameterFactory;
11+
use Elastic\ScoutDriverPlus\Searchable;
12+
use Elastic\ScoutDriverPlus\Support\Conditionable;
813
use Elastic\ScoutDriverPlus\Tests\App\Author;
914
use Elastic\ScoutDriverPlus\Tests\App\Book;
1015
use Elastic\ScoutDriverPlus\Tests\Integration\TestCase;
16+
use PHPUnit\Framework\Attributes\CoversClass;
17+
use PHPUnit\Framework\Attributes\UsesClass;
1118
use stdClass;
1219

13-
/**
14-
* @covers \Elastic\ScoutDriverPlus\Builders\SearchParametersBuilder
15-
* @covers \Elastic\ScoutDriverPlus\Exceptions\NotSearchableModelException
16-
* @covers \Elastic\ScoutDriverPlus\Support\Conditionable
17-
*
18-
* @uses \Elastic\ScoutDriverPlus\Builders\DatabaseQueryBuilder
19-
* @uses \Elastic\ScoutDriverPlus\Engine
20-
* @uses \Elastic\ScoutDriverPlus\Factories\ParameterFactory
21-
* @uses \Elastic\ScoutDriverPlus\Searchable
22-
*/
20+
#[CoversClass(SearchParametersBuilder::class)]
21+
#[CoversClass(NotSearchableModelException::class)]
22+
#[CoversClass(Conditionable::class)]
23+
#[UsesClass(DatabaseQueryBuilder::class)]
24+
#[UsesClass(Engine::class)]
25+
#[UsesClass(ParameterFactory::class)]
26+
#[UsesClass(Searchable::class)]
2327
final class SearchParametersBuilderTest extends TestCase
2428
{
2529
public function test_search_parameters_with_query_can_be_built(): void

tests/Integration/Decorators/HitTest.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
use Elastic\Adapter\Search\Hit as BaseHit;
66
use Elastic\ScoutDriverPlus\Decorators\Hit;
77
use Elastic\ScoutDriverPlus\Factories\LazyModelFactory;
8+
use Elastic\ScoutDriverPlus\Searchable;
89
use Elastic\ScoutDriverPlus\Tests\App\Book;
910
use Elastic\ScoutDriverPlus\Tests\Integration\TestCase;
1011
use Illuminate\Database\Eloquent\Model;
12+
use PHPUnit\Framework\Attributes\CoversClass;
13+
use PHPUnit\Framework\Attributes\UsesClass;
1114

12-
/**
13-
* @covers \Elastic\ScoutDriverPlus\Decorators\Hit
14-
*
15-
* @uses \Elastic\ScoutDriverPlus\Searchable
16-
*/
15+
#[CoversClass(Hit::class)]
16+
#[UsesClass(Searchable::class)]
1717
final class HitTest extends TestCase
1818
{
1919
private Hit $hit;

tests/Integration/Decorators/SearchResultTest.php

+11-9
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,22 @@
77
use Elastic\Adapter\Search\SearchResult as BaseSearchResult;
88
use Elastic\ScoutDriverPlus\Decorators\Hit;
99
use Elastic\ScoutDriverPlus\Decorators\SearchResult;
10+
use Elastic\ScoutDriverPlus\Decorators\Suggestion;
11+
use Elastic\ScoutDriverPlus\Factories\LazyModelFactory;
1012
use Elastic\ScoutDriverPlus\Factories\ModelFactory;
13+
use Elastic\ScoutDriverPlus\Searchable;
1114
use Elastic\ScoutDriverPlus\Tests\App\Book;
1215
use Elastic\ScoutDriverPlus\Tests\App\Model;
1316
use Elastic\ScoutDriverPlus\Tests\Integration\TestCase;
1417
use Illuminate\Database\Eloquent\Collection;
15-
16-
/**
17-
* @covers \Elastic\ScoutDriverPlus\Decorators\SearchResult
18-
*
19-
* @uses \Elastic\ScoutDriverPlus\Decorators\Hit
20-
* @uses \Elastic\ScoutDriverPlus\Decorators\Suggestion
21-
* @uses \Elastic\ScoutDriverPlus\Factories\LazyModelFactory
22-
* @uses \Elastic\ScoutDriverPlus\Searchable
23-
*/
18+
use PHPUnit\Framework\Attributes\CoversClass;
19+
use PHPUnit\Framework\Attributes\UsesClass;
20+
21+
#[CoversClass(SearchResult::class)]
22+
#[UsesClass(Hit::class)]
23+
#[UsesClass(Suggestion::class)]
24+
#[UsesClass(LazyModelFactory::class)]
25+
#[UsesClass(Searchable::class)]
2426
final class SearchResultTest extends TestCase
2527
{
2628
private SearchResult $searchResult;

tests/Integration/Decorators/SuggestionTest.php

+13-10
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,25 @@
55
use Elastic\Adapter\Search\Suggestion as BaseSuggestion;
66
use Elastic\ScoutDriverPlus\Builders\DatabaseQueryBuilder;
77
use Elastic\ScoutDriverPlus\Decorators\Suggestion;
8+
use Elastic\ScoutDriverPlus\Engine;
9+
use Elastic\ScoutDriverPlus\Factories\DocumentFactory;
810
use Elastic\ScoutDriverPlus\Factories\ModelFactory;
11+
use Elastic\ScoutDriverPlus\Factories\RoutingFactory;
12+
use Elastic\ScoutDriverPlus\Searchable;
913
use Elastic\ScoutDriverPlus\Tests\App\Author;
1014
use Elastic\ScoutDriverPlus\Tests\Integration\TestCase;
1115
use Illuminate\Database\Eloquent\Collection;
1216
use Illuminate\Database\Eloquent\Model;
17+
use PHPUnit\Framework\Attributes\CoversClass;
18+
use PHPUnit\Framework\Attributes\UsesClass;
1319

14-
/**
15-
* @covers \Elastic\ScoutDriverPlus\Decorators\Suggestion
16-
*
17-
* @uses \Elastic\ScoutDriverPlus\Builders\DatabaseQueryBuilder
18-
* @uses \Elastic\ScoutDriverPlus\Engine
19-
* @uses \Elastic\ScoutDriverPlus\Factories\DocumentFactory
20-
* @uses \Elastic\ScoutDriverPlus\Factories\ModelFactory
21-
* @uses \Elastic\ScoutDriverPlus\Factories\RoutingFactory
22-
* @uses \Elastic\ScoutDriverPlus\Searchable
23-
*/
20+
#[CoversClass(Suggestion::class)]
21+
#[UsesClass(DatabaseQueryBuilder::class)]
22+
#[UsesClass(Engine::class)]
23+
#[UsesClass(DocumentFactory::class)]
24+
#[UsesClass(ModelFactory::class)]
25+
#[UsesClass(RoutingFactory::class)]
26+
#[UsesClass(Searchable::class)]
2427
final class SuggestionTest extends TestCase
2528
{
2629
private Collection $models;

0 commit comments

Comments
 (0)