Skip to content

Commit 8d9f510

Browse files
committed
Merge branch 'develop' into feature/neomerx-upgrade
2 parents ceb0834 + 31ffd82 commit 8d9f510

File tree

7 files changed

+109
-107
lines changed

7 files changed

+109
-107
lines changed

.github/workflows/tests.yml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,12 @@ jobs:
1414
strategy:
1515
fail-fast: true
1616
matrix:
17-
php: [7.4, '8.0', 8.1]
18-
laravel: [8.76, 9]
19-
exclude:
20-
- php: 7.4
21-
laravel: 9
17+
php: ['8.0', 8.1, 8.2]
18+
laravel: [9]
2219

2320
steps:
2421
- name: Checkout Code
25-
uses: actions/checkout@v2
22+
uses: actions/checkout@v3
2623

2724
- name: Setup PHP
2825
uses: shivammathur/setup-php@v2
@@ -37,7 +34,7 @@ jobs:
3734
run: composer require "laravel/framework:^${{ matrix.laravel }}" --no-update
3835

3936
- name: Install dependencies
40-
uses: nick-invision/retry@v1
37+
uses: nick-fields/retry@v2
4138
with:
4239
timeout_minutes: 5
4340
max_attempts: 5

CHANGELOG.md

Lines changed: 98 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ All notable changes to this project will be documented in this file. This projec
1111
`laravel-json-api/neomerx-json-api`. Refer to the [Upgrade Guide](./docs/upgrade.md) for details of the required
1212
changes.
1313

14+
## [4.1.0] - 2023-01-19
15+
16+
### Changed
17+
18+
- Drop support for PHP `7.4` - minimum PHP version is now `8.0`.
19+
- Drop support for Laravel 8.
20+
- Upgraded `laravel-json-api/neomerx-json-api` dependency to `^1.2`. This allows v1, v2 and v3 of the PSR log
21+
dependency, whereas previously only v1 was allowed.
22+
1423
## [4.0.1] - 2022-04-24
1524

1625
### Fixed
@@ -31,12 +40,12 @@ All notable changes to this project will be documented in this file. This projec
3140
- Package now depends on our fork of the Neomerx JSON:API package - `laravel-json-api/neomerx-json-api`. This is a
3241
non-breaking change.
3342
- **BREAKING** Added return types to internal methods, to remove deprecation notices in PHP 8.1. This will affect your
34-
implementation if you have extended any of our classes and overloaded a method that now has a return type.
43+
implementation if you have extended any of our classes and overloaded a method that now has a return type.
3544

3645
### Removed
3746

38-
- **BREAKING** Removed the following classes from the `CloudCreativity\LaravelJsonApi\Testing` namespace. You must
39-
use classes (with the same names) from the `LaravelJsonApi\Testing` namespace, after installing the
47+
- **BREAKING** Removed the following classes from the `CloudCreativity\LaravelJsonApi\Testing` namespace. You must
48+
use classes (with the same names) from the `LaravelJsonApi\Testing` namespace, after installing the
4049
`laravel-json-api/testing` package as a dev dependency. Refer to the upgrade guide for details. Classes/traits removed
4150
are:
4251
- `MakesJsonApiRequests`
@@ -214,43 +223,43 @@ All notable changes to this project will be documented in this file. This projec
214223
the [documented validation implementation](./docs/basics/validators.md) instead.
215224
- The deprecated `json_api_request()` helper was removed.
216225
- The following methods were removed from the JSON API service (and are therefore no longer available via the facade):
217-
- `request()`: use `currentRoute()` instead.
218-
- `defaultApi()`: set the default API via `LaravelJsonApi::defaultApi()` instead.
226+
- `request()`: use `currentRoute()` instead.
227+
- `defaultApi()`: set the default API via `LaravelJsonApi::defaultApi()` instead.
219228
- All deprecated methods on the `Testing\MakesJsonApiRequests` trait and `Testing\TestResponse` class were removed.
220229
- Removed the `Http\Requests\ValidatedRequest::validate()` method, as Laravel replaced it with
221230
`validateResolved()`. This affects all JSON API request classes.
222231
- Additionally, the following deprecated interfaces, classes and traits were removed:
223-
- `Api\ResourceProvider` - extend `Api\AbstractProvider` instead.
224-
- `Contracts\Document\MutableErrorInterface`
225-
- `Contracts\Exceptions\ErrorIdAllocatorInterface`
226-
- `Contracts\Factories\FactoryInterface`
227-
- `Contracts\Http\Responses\ErrorResponseInterface`
228-
- `Contracts\Object\*` - all interfaces in this namespace.
229-
- `Contracts\Repositories\ErrorRepositoryInterface`
230-
- `Contracts\Utils\ErrorReporterInterface`
231-
- `Contracts\Utils\ErrorsAwareInterface`
232-
- `Contracts\Utils\ReplacerInterface`
233-
- `Document\Error` - use `Document\Error\Error` instead.
234-
- `Eloquent\AbstractSchema` - extend the `neomerx/json-api` schema instead.
235-
- `Eloquent\Concerns\SerializesModels` trait.
236-
- `Exceptions\MutableErrorCollection`
237-
- `Exceptions\NotFoundException`
238-
- `Exceptions\RecordNotFoundException` - use `Exceptions\ResourceNotFoundException` instead.
239-
- `Http\Query\ChecksQueryParameters` trait.
240-
- `Http\Requests\JsonApiRequest`
241-
- `Http\Responses\ErrorResponse`
242-
- `Object\*` - all classes in this namespace.
243-
- `Repositories\ErrorRepository`
244-
- `Schema\AbstractSchema` - extend the `neomerx/json-api` schema instead.
245-
- `Schema\CreatesEloquentIdentities` trait.
246-
- `Schema\CreatesLinks` trait.
247-
- `Schema\EloquentSchema` - extend the `neomerx/json-api` schema instead.
248-
- `Utils\AbstractErrorBag`
249-
- `Utils\ErrorBag`
250-
- `Utils\ErrorCreatorTrait`
251-
- `Utils\ErrorsAwareTrait`
252-
- `Utils\Pointer`
253-
- `Utils\Replacer`
232+
- `Api\ResourceProvider` - extend `Api\AbstractProvider` instead.
233+
- `Contracts\Document\MutableErrorInterface`
234+
- `Contracts\Exceptions\ErrorIdAllocatorInterface`
235+
- `Contracts\Factories\FactoryInterface`
236+
- `Contracts\Http\Responses\ErrorResponseInterface`
237+
- `Contracts\Object\*` - all interfaces in this namespace.
238+
- `Contracts\Repositories\ErrorRepositoryInterface`
239+
- `Contracts\Utils\ErrorReporterInterface`
240+
- `Contracts\Utils\ErrorsAwareInterface`
241+
- `Contracts\Utils\ReplacerInterface`
242+
- `Document\Error` - use `Document\Error\Error` instead.
243+
- `Eloquent\AbstractSchema` - extend the `neomerx/json-api` schema instead.
244+
- `Eloquent\Concerns\SerializesModels` trait.
245+
- `Exceptions\MutableErrorCollection`
246+
- `Exceptions\NotFoundException`
247+
- `Exceptions\RecordNotFoundException` - use `Exceptions\ResourceNotFoundException` instead.
248+
- `Http\Query\ChecksQueryParameters` trait.
249+
- `Http\Requests\JsonApiRequest`
250+
- `Http\Responses\ErrorResponse`
251+
- `Object\*` - all classes in this namespace.
252+
- `Repositories\ErrorRepository`
253+
- `Schema\AbstractSchema` - extend the `neomerx/json-api` schema instead.
254+
- `Schema\CreatesEloquentIdentities` trait.
255+
- `Schema\CreatesLinks` trait.
256+
- `Schema\EloquentSchema` - extend the `neomerx/json-api` schema instead.
257+
- `Utils\AbstractErrorBag`
258+
- `Utils\ErrorBag`
259+
- `Utils\ErrorCreatorTrait`
260+
- `Utils\ErrorsAwareTrait`
261+
- `Utils\Pointer`
262+
- `Utils\Replacer`
254263

255264
## [1.7.0] - 2020-04-13
256265

@@ -458,30 +467,30 @@ $ composer require --dev cloudcreativity/json-api-testing:^2.0
458467

459468
- The following classes in the `Validation` namespace were removed as the `Validation\Validator`
460469
class can be used instead, or validators can be constructed via the factory instead:
461-
- `AbstractValidator`
462-
- `ResourceValidator`
463-
- `QueryValidator`
470+
- `AbstractValidator`
471+
- `ResourceValidator`
472+
- `QueryValidator`
464473
- The deprecated `EloquentController` was removed - extend `JsonApiController` directly.
465474
- The `Store\EloquentAdapter` was removed - extend `Eloquent\AbstractAdapter` directly.
466475
- The following previously deprecated methods/properties were removed from the `EloquentAdapter`:
467-
- public method `queryRelation()`: renamed `queryToMany()`.
468-
- protected property `$with`: renamed `$defaultWith`.
469-
- protected method `keyForAttribute()`: renamed `modelKeyForField()`.
470-
- protected method `columnForField()`: renamed `getSortColumn()`.
471-
- protected method `all()`: renamed `searchAll()`.
472-
- protected method `extractIncludePaths()`: overload the `getQueryParameters()` method instead.
473-
- protected method `extractFilters()`: overload the `getQueryParameters()` method instead.
474-
- protected method `extractPagination()`: overload the `getQueryParameters()` method instead.
476+
- public method `queryRelation()`: renamed `queryToMany()`.
477+
- protected property `$with`: renamed `$defaultWith`.
478+
- protected method `keyForAttribute()`: renamed `modelKeyForField()`.
479+
- protected method `columnForField()`: renamed `getSortColumn()`.
480+
- protected method `all()`: renamed `searchAll()`.
481+
- protected method `extractIncludePaths()`: overload the `getQueryParameters()` method instead.
482+
- protected method `extractFilters()`: overload the `getQueryParameters()` method instead.
483+
- protected method `extractPagination()`: overload the `getQueryParameters()` method instead.
475484
- The previously deprecated `Eloquent\Concerns\AbstractRelation` class was removed.
476485
Extend `Adapter\AbstractRelationshipAdapter` and use the `Eloquent\Concerns\QueriesRelations` trait.
477486
- Removed the deprecated `Contracts\Utils\ConfigurableInterface` as this has not been in use for some time.
478487
- Removed the deprecated `createResourceDocumentValidator()` method from the factory.
479488
- Removed the following previously deprecated methods from the `TestResponse` class:
480-
- `assertJsonApiResponse()`: use `jsonApi()`.
481-
- `normalizeIds()` and `normalizeId()` as these are not in use by the refactored test implementation.
489+
- `assertJsonApiResponse()`: use `jsonApi()`.
490+
- `normalizeIds()` and `normalizeId()` as these are not in use by the refactored test implementation.
482491
- Removed the following previously deprecated methods from the JSON API service/facade:
483-
- `report()`: no longer supported for access via the service.
484-
- `requestOrFail()`: no longer required.
492+
- `report()`: no longer supported for access via the service.
493+
- `requestOrFail()`: no longer required.
485494
- Removed the previously deprecated `Schema\ExtractsAttributesTrait` as it has not been used for some time.
486495

487496
## [1.0.0-beta.6] - 2019-01-03
@@ -551,24 +560,24 @@ $ composer require --dev cloudcreativity/json-api-testing:^2.0
551560
were not in use.
552561
- The previously deprecated `InteractsWithModels` testing trait was removed.
553562
- The following (majority previously deprecated methods) on the `TestResponse` class were removed:
554-
- `assertDocument`
555-
- `assertResourceResponse`
556-
- `assertResourcesResponse`
557-
- `assertRelatedResourcesResponse`
558-
- `assertSearchResponse`
559-
- `assertSearchOneResponse`
560-
- `assertCreateResponse`
561-
- `assertReadResponse`
562-
- `assertUpdateResponse`
563-
- `assertDeleteResponse`
564-
- `assertRelatedResourceResponse`
565-
- `assertHasOneRelationshipResponse`
566-
- `assertDataCollection`
567-
- `assertDataResource`
568-
- `assertDataResourceIdentifier`
569-
- `assertSearchByIdResponse`
570-
- `assertSearchedPolymorphIds`
571-
- `assertReadPolymorphHasMany`
563+
- `assertDocument`
564+
- `assertResourceResponse`
565+
- `assertResourcesResponse`
566+
- `assertRelatedResourcesResponse`
567+
- `assertSearchResponse`
568+
- `assertSearchOneResponse`
569+
- `assertCreateResponse`
570+
- `assertReadResponse`
571+
- `assertUpdateResponse`
572+
- `assertDeleteResponse`
573+
- `assertRelatedResourceResponse`
574+
- `assertHasOneRelationshipResponse`
575+
- `assertDataCollection`
576+
- `assertDataResource`
577+
- `assertDataResourceIdentifier`
578+
- `assertSearchByIdResponse`
579+
- `assertSearchedPolymorphIds`
580+
- `assertReadPolymorphHasMany`
572581

573582
### Deprecated
574583

@@ -615,10 +624,10 @@ $ composer require --dev cloudcreativity/json-api-testing:^2.0
615624
- The `Document\Error` and `Contracts\Document\MutableErrorInterface` are deprecated and will be removed at `2.0`. You
616625
should use the error interface/class from the `neomerx/jsonapi` package instead.
617626
- The following utility classes/traits/interfaces are deprecated and will be removed at `2.0`:
618-
- `Utils/ErrorCreatorTrait`
619-
- `Utils/ErrorsAwareTrait` and `Contracts\Utils\ErrorsAwareInterface`
620-
- `Utils/Pointers`
621-
- `Utils/Replacer` and `Contracts\Utils\ReplacerInterface`
627+
- `Utils/ErrorCreatorTrait`
628+
- `Utils/ErrorsAwareTrait` and `Contracts\Utils\ErrorsAwareInterface`
629+
- `Utils/Pointers`
630+
- `Utils/Replacer` and `Contracts\Utils\ReplacerInterface`
622631
- The `Contracts\Factories\FactoryInterface` is deprecated and will be removed at `1.0`. You should
623632
type-hint `Factories\Factory` directly instead.
624633

@@ -650,10 +659,10 @@ $ composer require --dev cloudcreativity/json-api-testing:^2.0
650659
### Deprecated
651660

652661
- The following methods on the Eloquent adapter will be removed in `1.0.0` as they are no longer required:
653-
- `extractIncludePaths`
654-
- `extractFilters`
655-
- `extractPagination`
656-
- `columnForField`: use `getSortColumn` instead.
662+
- `extractIncludePaths`
663+
- `extractFilters`
664+
- `extractPagination`
665+
- `columnForField`: use `getSortColumn` instead.
657666

658667
## [1.0.0-beta.2] - 2018-08-25
659668

@@ -696,12 +705,12 @@ $ composer require --dev cloudcreativity/json-api-testing:^2.0
696705
### Removed
697706

698707
- The following deprecated methods have been removed from the Eloquent adapter:
699-
- `first`: use `searchOne` instead.
708+
- `first`: use `searchOne` instead.
700709

701710
### Deprecated
702711

703712
- The follow methods are deprecated on the Eloquent adapter and will be removed in `1.0.0`:
704-
- `queryRelation`: use `queryToMany` or `queryToOne` instead.
713+
- `queryRelation`: use `queryToMany` or `queryToOne` instead.
705714

706715
### Fixed
707716

@@ -783,8 +792,8 @@ $ composer require --dev cloudcreativity/json-api-testing:^2.0
783792
- Can now generate authorizers using the `make:json-api:authorizer` command, or the `--auth` flag when generating a
784793
resource with `make:json-api:resource`.
785794
- The JSON API controller now has the following additional hooks:
786-
- `searching` for an *index* action.
787-
- `reading` for a *read* action.
795+
- `searching` for an *index* action.
796+
- `reading` for a *read* action.
788797
- [#163](https://github.com/cloudcreativity/laravel-json-api/issues/163)
789798
Added relationship hooks to the JSON API controller.
790799

@@ -797,20 +806,20 @@ $ composer require --dev cloudcreativity/json-api-testing:^2.0
797806
### Removed
798807

799808
- The previous authorizer implementation has been removed in favour of the new one. The following were deleted:
800-
- `Contract\Authorizer\AuthorizerInterface`
801-
- `Authorizer\AbstractAuthorizer`
802-
- `Authorizer\ReadOnlyAuthorizer`
803-
- `Exceptions\AuthorizationException`
809+
- `Contract\Authorizer\AuthorizerInterface`
810+
- `Authorizer\AbstractAuthorizer`
811+
- `Authorizer\ReadOnlyAuthorizer`
812+
- `Exceptions\AuthorizationException`
804813

805814
### Deprecated
806815

807816
- Eloquent schemas are now deprecated in favour of using generic schemas. This is because of the amount of processing
808817
involved without any benefit, as generic schemas are straight-forward to construct. The following classes/traits are
809818
deprecated:
810-
- `Eloquent\AbstractSchema`
811-
- `Eloquent\SerializesModels`
812-
- `Schema\CreatesLinks`
813-
- `Schema\EloquentSchema` (was deprecated in `1.0.0-alpha.1`).
819+
- `Eloquent\AbstractSchema`
820+
- `Eloquent\SerializesModels`
821+
- `Schema\CreatesLinks`
822+
- `Schema\EloquentSchema` (was deprecated in `1.0.0-alpha.1`).
814823

815824
## [1.0.0-alpha.1] - 2018-04-29
816825

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
}
2323
],
2424
"require": {
25-
"php": "^7.4|^8.0",
25+
"php": "^8.0",
2626
"ext-json": "*",
2727
"laravel-json-api/neomerx-json-api": "^5.0.1",
28-
"laravel/framework": "^8.76|^9.0",
28+
"laravel/framework": "^9.0",
2929
"nyholm/psr7": "^1.2",
30-
"ramsey/uuid": "^3.0|^4.0",
30+
"ramsey/uuid": "^4.0",
3131
"symfony/psr-http-message-bridge": "^2.0"
3232
},
3333
"require-dev": {

tests/dummy/database/factories/ModelFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
/** Image */
7171
$factory->define(DummyApp\Image::class, function (Faker $faker) {
7272
return [
73-
'url' => $faker->imageUrl(),
73+
'url' => $faker->url(),
7474
];
7575
});
7676

tests/lib/Integration/ErrorsTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ public function testCustomInvalidJson()
200200
* whatever error is generated by the application must be returned as a JSON API error
201201
* even if the error has not been generated from one of the configured APIs.
202202
*/
203-
public function testClientWantsJsonApiError()
203+
public function testClientWantsJsonApiError(): void
204204
{
205205
$expected = [
206206
'errors' => [
@@ -218,7 +218,7 @@ public function testClientWantsJsonApiError()
218218
$response
219219
->assertStatus(404)
220220
->assertHeader('Content-Type', 'application/vnd.api+json')
221-
->assertExactJson($expected);
221+
->assertJson($expected);
222222
}
223223

224224
/**

tests/lib/Integration/PackageTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,8 @@ public function testReadBlog()
5151
/**
5252
* Test that we can read a resource from the application.
5353
*/
54-
public function testReadPost()
54+
public function testReadPost(): void
5555
{
56-
$this->resourceType = 'posts';
57-
5856
/** @var Post $post */
5957
$post = factory(Post::class)->create();
6058

tests/lib/Integration/Validation/QueryValidationTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,6 @@ public function testSearch(array $params, string $param, string $detail)
117117
'source' => ['parameter' => $param],
118118
];
119119

120-
$this->resourceType = 'posts';
121-
122120
$response = $this
123121
->jsonApi('posts')
124122
->query($params)

0 commit comments

Comments
 (0)