From 6a1c83dc59142518d63d7f82ed7350124cfe63ed Mon Sep 17 00:00:00 2001 From: Romulus21 Date: Sun, 19 Jul 2020 13:03:32 +0200 Subject: [PATCH] =?UTF-8?q?add=20Event=20Cat=C3=A9gory=20bien=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/EventCategoryController.php | 13 ++++++-- app/Http/Controllers/EventController.php | 2 +- app/Http/Requests/EventCategoryRequest.php | 31 +++++++++++++++++ app/Http/Resources/EventCategory.php | 33 +++++++++++++++++++ routes/api.php | 1 + tests/Feature/EventsTest.php | 32 ++++++++++++++++++ 6 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 app/Http/Requests/EventCategoryRequest.php create mode 100644 app/Http/Resources/EventCategory.php diff --git a/app/Http/Controllers/EventCategoryController.php b/app/Http/Controllers/EventCategoryController.php index c6db2da..350a80e 100644 --- a/app/Http/Controllers/EventCategoryController.php +++ b/app/Http/Controllers/EventCategoryController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers; +use App\Http\Requests\EventCategoryRequest; +use App\Http\Resources\EventCategory as EventCategoryResource; use App\Models\EventCategory; use Illuminate\Http\Request; @@ -33,9 +35,16 @@ class EventCategoryController extends Controller * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(EventCategoryRequest $request) { - // + $validated = $request->validated(); + + $category = EventCategory::create($validated); + $category->save(); + + return (new EventCategoryResource($category)) + ->response() + ->setStatusCode(201); } /** diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php index c1f620a..4d01b98 100644 --- a/app/Http/Controllers/EventController.php +++ b/app/Http/Controllers/EventController.php @@ -41,7 +41,7 @@ class EventController extends Controller $event = $request->user()->events()->create($validated); $event->save(); - //dd($event, $validated); + return (new EventResource($event)) ->response() ->setStatusCode(201); diff --git a/app/Http/Requests/EventCategoryRequest.php b/app/Http/Requests/EventCategoryRequest.php new file mode 100644 index 0000000..d57440b --- /dev/null +++ b/app/Http/Requests/EventCategoryRequest.php @@ -0,0 +1,31 @@ +user()->isAdmin(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'name' => 'required', + 'description' => 'nullable|string', + ]; + } +} diff --git a/app/Http/Resources/EventCategory.php b/app/Http/Resources/EventCategory.php new file mode 100644 index 0000000..ae925eb --- /dev/null +++ b/app/Http/Resources/EventCategory.php @@ -0,0 +1,33 @@ + [ + 'type' => 'event categories', + 'event_category_id' => $this->id, + 'attributes' => [ + 'data' => [ + 'name' => $this->name, + 'description' => $this->description, + ] + ], + ], + 'links' => [ + 'self' => url('/events/categories/'.$this->id), + ] + ]; + } +} diff --git a/routes/api.php b/routes/api.php index a690ba9..2641233 100644 --- a/routes/api.php +++ b/routes/api.php @@ -26,6 +26,7 @@ Route::middleware('auth:api')->group(function () { '/meteo' => 'MeteoController', '/to-do-lists' => 'ToDoListController', '/to-do-lists/{toDoList}/to-do' => 'ToDoController', + '/events/categories' => 'EventCategoryController', '/events' => 'EventController', // '/users/{user}/posts' => 'UserPostController', // '/friend-request' => 'FriendRequestController', diff --git a/tests/Feature/EventsTest.php b/tests/Feature/EventsTest.php index ca588f3..ef85024 100644 --- a/tests/Feature/EventsTest.php +++ b/tests/Feature/EventsTest.php @@ -13,6 +13,38 @@ class EventsTest extends TestCase { use RefreshDatabase; + /** @test */ + public function an_admin_can_create_an_event_category() + { + $this->withoutExceptionHandling(); + $this->actingAs($user = factory(User::class)->create(['role' => 2]), 'api'); + + $response = $this->post('/api/events/categories', [ + 'name' => 'Test name event category', + 'description' => 'Test description event category', + ])->assertStatus(201); + + $category = EventCategory::first(); + + $this->assertEquals('Test name event category', $category->name); + $this->assertEquals('Test description event category', $category->description); + $response->assertJson([ + 'data' => [ + 'type' => 'event categories', + 'event_category_id' => $category->id, + 'attributes' => [ + 'data' => [ + 'name' => $category->name, + 'description' => $category->description, + ] + ], + ], + 'links' => [ + 'self' => url('/events/categories/'.$category->id), + ] + ]); + } + /** @test */ public function a_user_can_create_an_event() {