Files
Test-Eloquent-Relationships/README.md
T

102 lines
3.6 KiB
Markdown
Raw Normal View History

2021-11-22 07:17:56 +02:00
## Test Your Laravel Eloquent Relationships Skills
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
This repository is a test for you: perform a set of tasks listed below, and fix the PHPUnit tests, which are currently intentionally failing.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
To test if all the functions work correctly, there are PHPUnit tests in `tests/Feature/RelationshipsTest.php` file.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
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.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
## How to Submit Your Solution
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
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.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
If you don't know how to make a Pull Request, [here's my video with instructions](https://www.youtube.com/watch?v=vEcT6JIFji0).
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
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 :)
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
## Questions / Problems?
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
If you're struggling with some tasks, or you have suggestions how to improve the task, create a GitHub Issue.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
Good luck!
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
---
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
## Task 1. HasMany Defined Incorrectly.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
In `app/Models/User.php` file, the relationship is missing some parameter. Fix this.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
Test method `test_user_create_task()`.
2021-11-22 07:06:44 +02:00
2021-11-22 07:17:56 +02:00
---
2021-11-22 07:06:44 +02:00
2021-11-22 07:26:10 +02:00
## Task 2. BelongsTo with Empty Relationship.
2021-11-22 07:06:44 +02:00
2021-11-24 22:32:03 +02:00
In the route `/tasks`, the table is loading with error, if it can't find the user related to the task. Fix this: the table should load, still listing all the tasks, just showing an empty space where the user name should have been.
2021-11-22 07:06:44 +02:00
2021-11-22 07:26:10 +02:00
There are multiple ways how to fix this, choose whichever way works for you.
2021-11-22 07:06:44 +02:00
2021-11-22 07:26:10 +02:00
Test method `test_task_with_no_user()`.
2021-11-22 07:17:56 +02:00
---
2021-11-22 07:39:27 +02:00
## Task 3. Two-level Relationship.
In the route `/users/{user}`, the table should load the comments that are written on the task that belong to a user. Define the relationship from User to Comment in the User model, so that the Blade file users/show.blade.php would work.
Test method `test_show_users_comments()`.
---
2021-11-22 07:47:31 +02:00
## Task 4. BelongsToMany - Pivot Table Name.
In the route `/roles`, the table should load the roles with the number of users belonging to them. But the relationship in `app/Models/Role.php` model is defined incorrectly, fix that relationship definition.
Test method `test_show_roles_with_users()`.
---
2021-11-22 08:05:15 +02:00
## Task 5. BelongsToMany - Extra Fields in Pivot Table.
2021-11-27 14:56:25 +02:00
In the route `/teams`, the table should show the teams with users, each user with a few additional fields. Fix the relationship definition in `app/Models/Team.php` so that the Blade file `teams/index.blade.php` would show the correct data.
2021-11-22 08:05:15 +02:00
Test method `test_teams_with_users()`.
---
2021-11-22 08:20:49 +02:00
## Task 6. HasMany - Average from Field Value
In the route `/countries`, the table should show the countries with average team size. Fix the Controller to load the relationship number, as it is expected in the Blade.
Test method `test_countries_with_team_size()`.
---
2021-11-22 11:46:59 +02:00
## Task 7. Polymorphic Attachments
2021-11-22 10:30:12 +02:00
In the route `/attachments`, the table should show the filenames and the class names of Task and Comment models. Fix the `app/Models/Attachment.php` relationship to make it work.
Test method `test_attachments_polymorphic()`.
---
2021-11-22 11:46:59 +02:00
## Task 8. Add BelongsToMany Row
In the POST route `/projects`, the project should be saved for a logged-in user, with start_date field from $request. Write that sentence in the Controller.
Test method `test_belongstomany_add()`.
---
2021-11-22 12:05:31 +02:00
## Task 9. Filter BelongsToMany Rows
In the route `/users`, the list should show only the users with at least one project. Fix the Controller to add this filter.
Test method `test_filter_users()`.
---