Task 9 - your own validation rule

This commit is contained in:
PovilasKorop
2021-11-29 16:06:54 +02:00
parent 254985ac99
commit 28c2dd8d60
6 changed files with 80 additions and 0 deletions
+8
View File
@@ -96,3 +96,11 @@ Test method `test_custom_error_message()`.
---
## Task 9. Your Own Validation Rule.
In `app/Http/Controllers/ArticleController.php` file, in `store` method, the code uses `Uppercase` validation rule that you need to create with Artisan command, and fill in with the rule of "title" having first letter as uppercase.
Test method `test_custom_validation_rule()`.
---
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use App\Rules\Uppercase;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$request->validate([
// TASK: create your own validation rule called Uppercase
// It should check whether title's first letter is uppercase
'title' => ['required', new Uppercase()]
]);
Article::create(['title' => $request->title]);
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
use HasFactory;
protected $fillable = ['title'];
}
@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateArticlesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles');
}
}
+1
View File
@@ -21,6 +21,7 @@ Route::resource('teams', \App\Http\Controllers\TeamController::class);
Route::resource('items', \App\Http\Controllers\ItemController::class);
Route::put('users/{user}', [\App\Http\Controllers\UserController::class, 'update']);
Route::resource('buildings', \App\Http\Controllers\BuildingController::class);
Route::resource('articles', \App\Http\Controllers\ArticleController::class);
Route::get('/', function () {
return view('welcome');
+5
View File
@@ -104,4 +104,9 @@ class ValidationTest extends TestCase
$response->assertSee('Please enter the name');
}
public function test_custom_validation_rule()
{
$response = $this->post('articles', ['title' => 'lowercase']);
$response->assertSessionHasErrors('title')->assertStatus(302);
}
}