Skip to content

Commit a354c42

Browse files
committed
add a update route for a book
1 parent d52c6f1 commit a354c42

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

tests/Fixtures/Controllers/ValidationController.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Tempest\Router\Get;
1212
use Tempest\Router\Post;
1313
use Tests\Tempest\Fixtures\Modules\Books\Models\Book;
14+
use Tests\Tempest\Fixtures\Requests\BookRequest;
1415

1516
use function Tempest\uri;
1617

@@ -42,4 +43,23 @@ public function book(Book $book): Response
4243
],
4344
]);
4445
}
46+
47+
#[Post(uri: '/test-validation-responses-json/{book}')]
48+
public function updateBook(BookRequest $request, Book $book): Response
49+
{
50+
$book->load('author');
51+
52+
$book->update(title: $request->get('title'));
53+
54+
return new Json([
55+
'id' => $book->id->id,
56+
'title' => $book->title,
57+
'author' => [
58+
'id' => $book->author->id->id,
59+
'name' => $book->author->name,
60+
],
61+
'chapters' => $book->chapters,
62+
'isbn' => $book->isbn,
63+
]);
64+
}
4565
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tests\Tempest\Fixtures\Requests;
6+
7+
use Tempest\Http\IsRequest;
8+
use Tempest\Http\Request;
9+
use Tempest\Validation\Rules\Length;
10+
use Tests\Tempest\Fixtures\Modules\Books\Models\Author;
11+
use Tests\Tempest\Fixtures\Modules\Books\Models\Isbn;
12+
13+
final class BookRequest implements Request
14+
{
15+
use IsRequest;
16+
17+
#[Length(min: 1, max: 120)]
18+
public string $title;
19+
20+
public ?Author $author = null;
21+
22+
/** @var \Tests\Tempest\Fixtures\Modules\Books\Models\Chapter[] */
23+
public array $chapters = [];
24+
25+
public ?Isbn $isbn = null;
26+
}

0 commit comments

Comments
 (0)