Skip to content

Commit 4df1c8f

Browse files
Merge pull request #6 from deniskorbakov/5-add-fixture-controllers
5 add fixture controllers
2 parents d4d75a3 + fded051 commit 4df1c8f

File tree

4 files changed

+96
-41
lines changed

4 files changed

+96
-41
lines changed

rector.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Rector\DeadCode\Rector\ClassMethod\RemoveEmptyClassMethodRector;
1616
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPrivateMethodRector;
1717
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPromotedPropertyRector;
18+
use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPublicMethodParameterRector;
1819
use Rector\DeadCode\Rector\Node\RemoveNonExistingVarAnnotationRector;
1920
use Rector\DeadCode\Rector\Property\RemoveUnusedPrivatePropertyRector;
2021
use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector;
@@ -66,6 +67,7 @@
6667
CompactToVariablesRector::class,
6768
RemoveEmptyClassMethodRector::class,
6869
RemoveNonExistingVarAnnotationRector::class,
70+
RemoveUnusedPublicMethodParameterRector::class,
6971
]);
7072

7173
$rectorConfig->sets([
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tests\Fixtures\Controllers;
6+
7+
use Tests\Fixtures\LaravelData\AttributeRules;
8+
use Tests\Fixtures\LaravelData\CustomAttributeRules;
9+
use Tests\Fixtures\LaravelData\ManualRules;
10+
use Tests\Fixtures\LaravelData\NoRules;
11+
use Tests\Fixtures\ParentClasses\ParentClassLaravelData;
12+
use Tests\Fixtures\ParentClasses\WithoutParentClassLaravelData;
13+
use Tests\Fixtures\Requests\RequestRules;
14+
15+
final class LaravelDataController
16+
{
17+
public function attributeRules(AttributeRules $attributeRules): void
18+
{
19+
}
20+
21+
public function customAttributeRules(CustomAttributeRules $customAttributeRules): void
22+
{
23+
}
24+
25+
public function manualRules(ManualRules $manualRules): void
26+
{
27+
}
28+
29+
public function noRules(NoRules $noRules): void
30+
{
31+
}
32+
33+
public function withoutLaravelData(WithoutParentClassLaravelData $withoutParentClassLaravelData): void
34+
{
35+
}
36+
37+
public function emptyLaravelData(ParentClassLaravelData $parentClassLaravelData): void
38+
{
39+
}
40+
41+
public function emptyMethod(): void
42+
{
43+
}
44+
45+
public function moreParameters(string $id, int $number, float $price): void
46+
{
47+
}
48+
49+
public function requestRules(RequestRules $requestRules): void
50+
{
51+
}
52+
53+
public function requestAndLaravelData(RequestRules $requestRules, AttributeRules $attributeRules): void
54+
{
55+
}
56+
57+
public function requestAndEmptyLaravelData(RequestRules $requestRules, ParentClassLaravelData $parentClassLaravelData): void
58+
{
59+
}
60+
}

tests/Unit/Extractors/ParametersExtractor/ExtractTest.php

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,13 @@
77
use DenisKorbakov\LaravelDataScribe\Extractors\ParametersExtractor;
88
use Illuminate\Routing\Route;
99
use Knuckles\Camel\Extraction\ExtractedEndpointData;
10+
use Tests\Fixtures\Controllers\LaravelDataController;
1011
use Tests\Fixtures\ParentClasses\ParentClassLaravelData;
11-
use Tests\Fixtures\ParentClasses\WithoutParentClassLaravelData;
12-
use Tests\Fixtures\Requests\RequestRules;
1312

1413
mutates(ParametersExtractor::class);
1514

16-
test('extract class laravel data from param ParentClassLaravelData', function (): void {
17-
$route = new Route('', '', fn(ParentClassLaravelData $parentClassLaravelData): null => null);
15+
test('extract class laravel data from emptyLaravelData', function (): void {
16+
$route = new Route('', '', [LaravelDataController::class, 'emptyLaravelData']);
1817
$extractMethod = ExtractedEndpointData::fromRoute($route);
1918

2019
$laravelDataExtractor = new ParametersExtractor($extractMethod->method->getParameters());
@@ -24,8 +23,8 @@
2423
expect($result)->toBe(ParentClassLaravelData::class);
2524
});
2625

27-
test('extract class laravel data from param from WithoutParentClassLaravelData', function (): void {
28-
$route = new Route('', '', fn(WithoutParentClassLaravelData $parentClassLaravelData): null => null);
26+
test('extract class laravel data from withoutLaravelData', function (): void {
27+
$route = new Route('', '', [LaravelDataController::class, 'withoutLaravelData']);
2928
$extractMethod = ExtractedEndpointData::fromRoute($route);
3029

3130
$laravelDataExtractor = new ParametersExtractor($extractMethod->method->getParameters());
@@ -35,8 +34,8 @@
3534
expect($result)->toBeEmpty();
3635
});
3736

38-
test('extract class laravel data from param from empty arg route', function (): void {
39-
$route = new Route('', '', fn(): null => null);
37+
test('extract class laravel data from emptyMethod', function (): void {
38+
$route = new Route('', '', [LaravelDataController::class, 'emptyMethod']);
4039
$extractMethod = ExtractedEndpointData::fromRoute($route);
4140

4241
$laravelDataExtractor = new ParametersExtractor($extractMethod->method->getParameters());
@@ -46,8 +45,8 @@
4645
expect($result)->toBeEmpty();
4746
});
4847

49-
test('extract class laravel data from param from more type', function (): void {
50-
$route = new Route('', '', fn(string $id, int $number, float $price): null => null);
48+
test('extract class laravel data from moreParameters', function (): void {
49+
$route = new Route('', '', [LaravelDataController::class, 'moreParameters']);
5150
$extractMethod = ExtractedEndpointData::fromRoute($route);
5251

5352
$laravelDataExtractor = new ParametersExtractor($extractMethod->method->getParameters());
@@ -57,8 +56,8 @@
5756
expect($result)->toBeEmpty();
5857
});
5958

60-
test('extract class laravel data from param from RequestRules', function (): void {
61-
$route = new Route('', '', fn(RequestRules $request): null => null);
59+
test('extract class laravel data from requestRules', function (): void {
60+
$route = new Route('', '', [LaravelDataController::class, 'requestRules']);
6261
$extractMethod = ExtractedEndpointData::fromRoute($route);
6362

6463
$laravelDataExtractor = new ParametersExtractor($extractMethod->method->getParameters());
@@ -68,8 +67,8 @@
6867
expect($result)->toBeEmpty();
6968
});
7069

71-
test('extract class laravel data from param from RequestRules and ParentClassLaravelData', function (): void {
72-
$route = new Route('', '', fn(RequestRules $request, ParentClassLaravelData $parentClassLaravelData): null => null);
70+
test('extract class laravel data from requestAndEmptyLaravelData', function (): void {
71+
$route = new Route('', '', [LaravelDataController::class, 'requestAndEmptyLaravelData']);
7372
$extractMethod = ExtractedEndpointData::fromRoute($route);
7473

7574
$laravelDataExtractor = new ParametersExtractor($extractMethod->method->getParameters());

tests/Unit/LaravelDataBodyParamTest.php

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,12 @@
66
use Illuminate\Routing\Route;
77
use Knuckles\Camel\Extraction\ExtractedEndpointData;
88
use Knuckles\Scribe\Tools\DocumentationConfig;
9-
use Tests\Fixtures\LaravelData\AttributeRules;
10-
use Tests\Fixtures\LaravelData\CustomAttributeRules;
11-
use Tests\Fixtures\LaravelData\ManualRules;
12-
use Tests\Fixtures\LaravelData\NoRules;
13-
use Tests\Fixtures\ParentClasses\ParentClassLaravelData;
14-
use Tests\Fixtures\ParentClasses\WithoutParentClassLaravelData;
15-
use Tests\Fixtures\Requests\RequestRules;
9+
use Tests\Fixtures\Controllers\LaravelDataController;
1610

1711
mutates(LaravelDataBodyParam::class);
1812

19-
test('generate doc body params from method with AttributeRules', function (): void {
20-
$route = new Route('', '', fn(AttributeRules $attributeRules): null => null);
13+
test('generate doc body params from method with attributeRules', function (): void {
14+
$route = new Route('', '', [LaravelDataController::class, 'attributeRules']);
2115
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
2216

2317
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -28,8 +22,8 @@
2822
expect($result)->toEqual($this->getParamsAttributeRules());
2923
});
3024

31-
test('generate doc body params from method with CustomAttributeRules', function (): void {
32-
$route = new Route('', '', fn(CustomAttributeRules $attributeRules): null => null);
25+
test('generate doc body params from method with customAttributeRules', function (): void {
26+
$route = new Route('', '', [LaravelDataController::class, 'customAttributeRules']);
3327
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
3428

3529
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -40,8 +34,8 @@
4034
expect($result)->toEqual($this->getParamsCustomAttributeRules());
4135
});
4236

43-
test('generate doc body params from method with ManualRules', function (): void {
44-
$route = new Route('', '', fn(ManualRules $attributeRules): null => null);
37+
test('generate doc body params from method with manualRules', function (): void {
38+
$route = new Route('', '', [LaravelDataController::class, 'manualRules']);
4539
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
4640

4741
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -52,8 +46,8 @@
5246
expect($result)->toEqual($this->getParamsManualRules());
5347
});
5448

55-
test('generate doc body params from method with NoRules', function (): void {
56-
$route = new Route('', '', fn(NoRules $attributeRules): null => null);
49+
test('generate doc body params from method with noRules', function (): void {
50+
$route = new Route('', '', [LaravelDataController::class, 'noRules']);
5751
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
5852

5953
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -64,8 +58,8 @@
6458
expect($result)->toEqual($this->getParamsNoRules());
6559
});
6660

67-
test('generate doc body params from method with WithoutParentClassLaravelData', function (): void {
68-
$route = new Route('', '', fn(WithoutParentClassLaravelData $attributeRules): null => null);
61+
test('generate doc body params from method with withoutLaravelData', function (): void {
62+
$route = new Route('', '', [LaravelDataController::class, 'withoutLaravelData']);
6963
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
7064

7165
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -76,8 +70,8 @@
7670
expect($result)->toBeEmpty();
7771
});
7872

79-
test('generate doc body params from method with ParentClassLaravelData', function (): void {
80-
$route = new Route('', '', fn(ParentClassLaravelData $attributeRules): null => null);
73+
test('generate doc body params from method with emptyLaravelData', function (): void {
74+
$route = new Route('', '', [LaravelDataController::class, 'emptyLaravelData']);
8175
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
8276

8377
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -88,8 +82,8 @@
8882
expect($result)->toBeEmpty();
8983
});
9084

91-
test('generate doc body params from method with empty parameters', function (): void {
92-
$route = new Route('', '', fn(): null => null);
85+
test('generate doc body params from method with empty emptyMethod', function (): void {
86+
$route = new Route('', '', [LaravelDataController::class, 'emptyMethod']);
9387
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
9488

9589
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -100,8 +94,8 @@
10094
expect($result)->toBeEmpty();
10195
});
10296

103-
test('generate doc body params from method with more parameters', function (): void {
104-
$route = new Route('', '', fn(string $id, int $number, float $price): null => null);
97+
test('generate doc body params from method with more moreParameters', function (): void {
98+
$route = new Route('', '', [LaravelDataController::class, 'moreParameters']);
10599
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
106100

107101
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -112,8 +106,8 @@
112106
expect($result)->toBeEmpty();
113107
});
114108

115-
test('generate doc body params from method with RequestRules', function (): void {
116-
$route = new Route('', '', fn(RequestRules $requestRules): null => null);
109+
test('generate doc body params from method with requestRules', function (): void {
110+
$route = new Route('', '', [LaravelDataController::class, 'requestRules']);
117111
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
118112

119113
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));
@@ -124,8 +118,8 @@
124118
expect($result)->toBeEmpty();
125119
});
126120

127-
test('generate doc body params from method with RequestRules and AttributeRules', function (): void {
128-
$route = new Route('', '', fn(RequestRules $requestRules, AttributeRules $attributeRules): null => null);
121+
test('generate doc body params from method with requestAndLaravelData', function (): void {
122+
$route = new Route('', '', [LaravelDataController::class, 'requestAndLaravelData']);
129123
$laravelDataBodyParam = new LaravelDataBodyParam(new DocumentationConfig());
130124

131125
$result = $laravelDataBodyParam(ExtractedEndpointData::fromRoute($route));

0 commit comments

Comments
 (0)