Skip to content

Commit 6925d40

Browse files
added tests
1 parent 98ebb14 commit 6925d40

File tree

8 files changed

+230
-2
lines changed

8 files changed

+230
-2
lines changed

src/LaravelRequestDocs.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,15 @@ public function getControllersInfo(): array
8686
}
8787
}
8888

89+
$middlewares = [];
90+
if (!empty($route->action['middleware'])) {
91+
$middlewares = !is_array($route->action['middleware']) ? [$route->action['middleware']] : $route->action['middleware'];
92+
}
93+
8994
$controllersInfo[] = [
9095
'uri' => $route->uri,
9196
'methods' => $route->methods,
92-
'middlewares' => !is_array($route->action['middleware']) ? [$route->action['middleware']] : $route->action['middleware'],
97+
'middlewares' => $middlewares,
9398
'controller' => $controllerName,
9499
'controller_full_path' => $controllerFullPath,
95100
'method' => $method,

tests/LRDTest.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Rakutentech\LaravelRequestDocs\Tests;
4+
use Route;
5+
6+
class LRDTest extends TestCase
7+
{
8+
public function testDocsCount()
9+
{
10+
$docs = $this->lrd->getDocs();
11+
$routes = collect(Route::getRoutes());
12+
13+
$this->assertSame($routes->count(), count($docs));
14+
}
15+
16+
public function testDocsCanFetchAllMethods()
17+
{
18+
$docs = $this->lrd->getDocs();
19+
$methods = [];
20+
foreach ($docs as $doc) {
21+
$methods = array_merge($methods, $doc['methods']);
22+
}
23+
$methods = array_unique($methods);
24+
sort($methods);
25+
$this->assertSame(['DELETE', 'GET', 'HEAD', 'POST', 'PUT'], $methods);
26+
}
27+
28+
public function testDocsCanFetchInfo()
29+
{
30+
$docs = $this->lrd->getDocs();
31+
foreach ($docs as $doc) {
32+
$this->assertNotEmpty($doc['rules']);
33+
$this->assertNotEmpty($doc['methods']);
34+
// $this->assertNotEmpty($doc['middlewares']); //todo: add middlewares to test
35+
$this->assertNotEmpty($doc['controller']);
36+
$this->assertNotEmpty($doc['controller_full_path']);
37+
$this->assertNotEmpty($doc['method']);
38+
$this->assertNotEmpty($doc['httpMethod']);
39+
$this->assertNotEmpty($doc['rules']);
40+
}
41+
}
42+
}

tests/TestCase.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,20 @@
22

33
namespace Rakutentech\LaravelRequestDocs\Tests;
44

5-
use Illuminate\Database\Eloquent\Factories\Factory;
65
use Orchestra\Testbench\TestCase as Orchestra;
76
use Rakutentech\LaravelRequestDocs\LaravelRequestDocsServiceProvider;
7+
use Rakutentech\LaravelRequestDocs\LaravelRequestDocs;
8+
use Illuminate\Support\Facades\Route;
9+
use Rakutentech\LaravelRequestDocs\Tests\TestControllers;
810

911
class TestCase extends Orchestra
1012
{
13+
protected LaravelRequestDocs $lrd;
1114
public function setUp(): void
1215
{
1316
parent::setUp();
17+
$this->lrd = new LaravelRequestDocs();
18+
$this->registerRoutes();
1419
}
1520

1621
protected function getPackageProviders($app)
@@ -24,4 +29,12 @@ public function getEnvironmentSetUp($app)
2429
{
2530
config()->set('database.default', 'testing');
2631
}
32+
33+
public function registerRoutes() {
34+
Route::get('/', [TestControllers\WelcomeController::class, 'index']);
35+
Route::get('welcome', [TestControllers\WelcomeController::class, 'index']);
36+
Route::post('welcome', [TestControllers\WelcomeController::class, 'store']);
37+
Route::put('welcome', [TestControllers\WelcomeController::class, 'edit']);
38+
Route::delete('welcome', [TestControllers\WelcomeController::class, 'destroy']);
39+
}
2740
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace Rakutentech\LaravelRequestDocs\Tests\TestControllers;
4+
5+
use Rakutentech\LaravelRequestDocs\Tests\TestRequests\WelcomeIndexRequest;
6+
use Rakutentech\LaravelRequestDocs\Tests\TestRequests\WelcomeEditRequest;
7+
use Rakutentech\LaravelRequestDocs\Tests\TestRequests\WelcomeStoreRequest;
8+
use Rakutentech\LaravelRequestDocs\Tests\TestRequests\WelcomeDeleteRequest;
9+
10+
class WelcomeController
11+
{
12+
public function index(WelcomeIndexRequest $request)
13+
{
14+
return 1;
15+
}
16+
17+
public function edit(WelcomeEditRequest $request)
18+
{
19+
return 1;
20+
}
21+
22+
public function store(WelcomeStoreRequest $request)
23+
{
24+
return 1;
25+
}
26+
27+
public function destroy(WelcomeDeleteRequest $request)
28+
{
29+
return 1;
30+
}
31+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Rakutentech\LaravelRequestDocs\Tests\TestRequests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class WelcomeDeleteRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*
12+
* @return bool
13+
*/
14+
public function authorize()
15+
{
16+
return true;
17+
}
18+
19+
protected function prepareForValidation()
20+
{
21+
}
22+
23+
/**
24+
* Get the validation rules that apply to the request.
25+
*
26+
* @return array
27+
*/
28+
public function rules()
29+
{
30+
return [
31+
'message_param' => 'nullable|string',
32+
];
33+
}
34+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Rakutentech\LaravelRequestDocs\Tests\TestRequests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class WelcomeEditRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*
12+
* @return bool
13+
*/
14+
public function authorize()
15+
{
16+
return true;
17+
}
18+
19+
protected function prepareForValidation()
20+
{
21+
}
22+
23+
/**
24+
* Get the validation rules that apply to the request.
25+
*
26+
* @return array
27+
*/
28+
public function rules()
29+
{
30+
return [
31+
'message_param' => 'nullable|string',
32+
];
33+
}
34+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace Rakutentech\LaravelRequestDocs\Tests\TestRequests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class WelcomeIndexRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*
12+
* @return bool
13+
*/
14+
public function authorize()
15+
{
16+
return true;
17+
}
18+
19+
protected function prepareForValidation()
20+
{
21+
}
22+
23+
/**
24+
* Get the validation rules that apply to the request.
25+
*
26+
* @return array
27+
*/
28+
public function rules()
29+
{
30+
return [
31+
'page' => 'nullable|integer|min:1',
32+
'per_page' => 'nullable|integer|min:1|max:100',
33+
];
34+
}
35+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Rakutentech\LaravelRequestDocs\Tests\TestRequests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class WelcomeStoreRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*
12+
* @return bool
13+
*/
14+
public function authorize()
15+
{
16+
return true;
17+
}
18+
19+
protected function prepareForValidation()
20+
{
21+
}
22+
23+
/**
24+
* Get the validation rules that apply to the request.
25+
*
26+
* @return array
27+
*/
28+
public function rules()
29+
{
30+
return [
31+
'message_param' => 'nullable|string',
32+
];
33+
}
34+
}

0 commit comments

Comments
 (0)