Skip to content

Commit 08169cd

Browse files
committed
tests: add PHPStan type tests
1 parent 2ab2259 commit 08169cd

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"guzzlehttp/guzzle": "^7.3",
1919
"laravel/pint": "^1.5",
2020
"php-http/mock-client": "^1.2",
21+
"phpstan/phpstan": "^2.1",
2122
"phpunit/phpunit": "^9.5"
2223
},
2324
"suggest": {

phpstan.types.neon.dist

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
parameters:
2+
level: max
3+
paths:
4+
- tests\_mocks
5+
- types

types/Item.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
use Swis\JsonApi\Client\Tests\Mocks\Items\ParentItem;
4+
5+
use function PHPStan\Testing\assertType;
6+
7+
$item = new ParentItem;
8+
9+
assertType('Swis\JsonApi\Client\Tests\Mocks\Items\ChildItem|null', $item->child()->getData());
10+
assertType('Swis\JsonApi\Client\Collection<(int|string), Swis\JsonApi\Client\Tests\Mocks\Items\ChildItem>|null', $item->children()->getData());
11+
12+
assertType('Swis\JsonApi\Client\Interfaces\ItemInterface|null', $item->morph()->getData());
13+
assertType('Swis\JsonApi\Client\Collection<(int|string), Swis\JsonApi\Client\Interfaces\ItemInterface>|null', $item->morphmany()->getData());

types/Repository.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
use Swis\JsonApi\Client\DocumentClient;
4+
use Swis\JsonApi\Client\DocumentFactory;
5+
use Swis\JsonApi\Client\Tests\Mocks\Items\ChildItem;
6+
use Swis\JsonApi\Client\Tests\Mocks\MockRepository;
7+
8+
use function PHPStan\Testing\assertType;
9+
10+
$repository = new MockRepository(DocumentClient::create(), new DocumentFactory);
11+
12+
assertType('Swis\JsonApi\Client\Interfaces\CollectionDocumentInterface<Swis\JsonApi\Client\Tests\Mocks\Items\ChildItem>', $repository->all());
13+
assertType('Swis\JsonApi\Client\Interfaces\ItemDocumentInterface<Swis\JsonApi\Client\Tests\Mocks\Items\ChildItem>', $repository->find('foo'));
14+
assertType('Swis\JsonApi\Client\Interfaces\ItemDocumentInterface<Swis\JsonApi\Client\Tests\Mocks\Items\ChildItem>', $repository->save(new ChildItem));

0 commit comments

Comments
 (0)