This repository is a test for you: perform a set of tasks listed below, and fix the PHPUnit tests, which are currently intentionally failing.
To test if all the functions work correctly, there are PHPUnit tests in tests/Feature/ValidationTest.php
file.
In the very beginning, if you run php artisan test
, or vendor/bin/phpunit
, all tests fail.
Your task is to make those tests pass.
If you want to submit your solution, you should make a Pull Request to the main
branch.
It will automatically run the tests via GitHub Actions and will show you/me if the test pass.
If you don't know how to make a Pull Request, here's my video with instructions.
This task is mostly self-served, so I'm not planning review or merge the Pull Requests. This test is for yourselves to assess your skills, the automated tests will be your answer if you passed the test :)
If you're struggling with some tasks, or you have suggestions how to improve the task, create a GitHub Issue.
Good luck!
In app/Http/Controllers/PostController.php
file, the store()
method need validation rules: title should be required and unique.
Test method test_simple_validation_rules()
.
Imagine your form has fields as an array:
<input name="profile[name]" ... />
<input name="profile[email]" ... />
In app/Http/Controllers/ProfileController.php
file, the update()
method need validation rules: profile[name] and profile[email] fields should be required.
Test method test_array_validation()
.
In resources/views/projects/create.blade.php
file, show the validation errors, for "name" => "required", "description" => "required"
rules. Use whatever HTML structure you want, like <ul><li>error</li><li>error 2</li></ul>
. No design needed, the test will just check if the error messages are present.
Test method test_validation_errors_shown_in_blade()
.
In resources/views/products/create.blade.php
file, show the validation error for "name" => "required"
, using a specific Blade directive to show one specific error.
Test method test_validation_specific_error_shown_in_blade()
.
In resources/views/teams/create.blade.php
file, the value of "name" field should remain in the form, after failed validation. Change the Blade file so that it would show old value.
Test method test_old_value_stays_in_form_after_validation_error()
.
In app/Http/Controllers/ItemController.php
file, validation is performed via class StoreItemRequest, but that class doesn't exist, intentionally. Your task is to create it, with parameters of authorized true, and validation rules of name/description as required fields.
Test method test_form_request_validation()
.
In app/Http/Controllers/UserController.php
file, in update
method, the code updates all the fields. But users.is_admin should not be updated, even if it's passed via the request. Change the line with $request->all()
to avoid this security issue of updating the admin.
Test method test_update_forbidden_field()
.
In app/Http/Controllers/BuildingController.php
file, in store
method, the code uses StoreBuildingRequest
Form Request class. Change that class to customize the validation rule for "name" field as "required", to show message "Please enter the name" instead of the default "The field name is required".
Test method test_custom_error_message()
.
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 with the error message "The title does not start with an uppercased letter".
Test method test_custom_validation_rule()
.