From 4464bcbfae2e214586420b2ba469d92ac5ccec46 Mon Sep 17 00:00:00 2001 From: Paulo Pinto Date: Wed, 17 Apr 2024 15:45:27 +0100 Subject: [PATCH] Implement create capability --- includes/event/event-capabilities.php | 8 ++++++-- tests/event/event-capabilities.php | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/includes/event/event-capabilities.php b/includes/event/event-capabilities.php index 27b455ef4..4a6928ce5 100644 --- a/includes/event/event-capabilities.php +++ b/includes/event/event-capabilities.php @@ -2,6 +2,7 @@ namespace Wporg\TranslationEvents\Event; +use GP; use WP_User; class Event_Capabilities { @@ -21,8 +22,11 @@ private function has_cap( string $cap, array $args, WP_User $user ): bool { } private function has_create( WP_User $user ): bool { - // TODO. - return true; + return $this->has_gp_crud( $user ); + } + + private function has_gp_crud( WP_User $user ): bool { + return apply_filters( 'gp_translation_events_can_crud_event', GP::$permission->user_can( $user, 'admin' ) ); } public function register_hooks(): void { diff --git a/tests/event/event-capabilities.php b/tests/event/event-capabilities.php index 3896ced30..a2b09b52d 100644 --- a/tests/event/event-capabilities.php +++ b/tests/event/event-capabilities.php @@ -16,6 +16,22 @@ public function setUp(): void { $this->stats_factory = new Stats_Factory(); $this->attendee_repository = new Attendee_Repository(); $this->event_repository = new Event_Repository( $this->attendee_repository ); - $this->capilities = new Event_Capabilities(); + } + + public function test_cannot_create_if_no_crud_permission() { + $this->set_normal_user_as_current(); + + add_filter( 'gp_translation_events_can_crud_event', '__return_false' ); + + $this->assertFalse( current_user_can( 'create_translation_event' ) ); + } + + public function test_can_create_if_crud_permission() { + $this->set_normal_user_as_current(); + get_current_user_id(); + + add_filter( 'gp_translation_events_can_crud_event', '__return_true' ); + + $this->assertTrue( current_user_can( 'create_translation_event' ) ); } }