Skip to content

Commit

Permalink
Implement delete_event()
Browse files Browse the repository at this point in the history
  • Loading branch information
psrpinto committed Mar 18, 2024
1 parent a5e3c40 commit 9b2b89a
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 0 deletions.
5 changes: 5 additions & 0 deletions includes/event/event-repository-cached.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ public function update_event( Event $event ) {
return $event_id_or_error;
}

public function delete_event( Event $event ) {
parent::delete_event( $event );
$this->invalidate_cache();
}

public function get_current_events( int $page = -1, int $page_size = -1 ): Events_Query_Result {
$this->assert_pagination_arguments( $page, $page_size );

Expand Down
7 changes: 7 additions & 0 deletions includes/event/event-repository-interface.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@ public function insert_event( Event $event );
*/
public function update_event( Event $event );

/**
* @param Event $event Event to delete.
*
* @return Event|false Deleted event or false on error.
*/
public function delete_event( Event $event );

/**
* @throws EventNotFound
*/
Expand Down
12 changes: 12 additions & 0 deletions includes/event/event-repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use WP_Post;
use WP_Query;
use Wporg\TranslationEvents\Attendee_Repository;
use Wporg\TranslationEvents\Stats_Calculator;
use Wporg\TranslationEvents\Translation_Events;

class Event_Repository implements Event_Repository_Interface {
Expand Down Expand Up @@ -57,6 +58,17 @@ public function update_event( Event $event ) {
return $event->id();
}

public function delete_event( Event $event ) {
$result = wp_delete_post( $event->id() );
if ( ! $result ) {
return false;
}

// TODO: Delete stats for event.

return $event;
}

public function get_event( int $id ): Event {
$post = $this->get_event_post( $id );

Expand Down
9 changes: 9 additions & 0 deletions tests/event/event-repository-cached.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,13 @@ public function test_invalidates_cache_when_events_are_updated() {
$this->repository->update_event( $event );
$this->assertFalse( wp_cache_get( 'translation-events-active-events' ) );
}

public function test_invalidates_cache_when_events_are_deleted() {
$event_id = $this->event_factory->create_active();
$event = $this->repository->get_event( $event_id );

wp_cache_set( 'translation-events-active-events', 'foo' );
$this->repository->delete_event( $event );
$this->assertFalse( wp_cache_get( 'translation-events-active-events' ) );
}
}
13 changes: 13 additions & 0 deletions tests/event/event-repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,17 @@
use Wporg\TranslationEvents\Event\Event_Repository;
use Wporg\TranslationEvents\Event\EventNotFound;
use Wporg\TranslationEvents\Tests\Event_Factory;
use Wporg\TranslationEvents\Tests\Stats_Factory;

class Event_Repository_Test extends GP_UnitTestCase {
private Event_Factory $event_factory;
private Stats_Factory $stats_factory;
private Event_Repository $repository;

public function setUp(): void {
parent::setUp();
$this->event_factory = new Event_Factory();
$this->stats_factory = new Stats_Factory();
$this->repository = new Event_Repository( new Attendee_Repository() );

$this->set_normal_user_as_current();
Expand Down Expand Up @@ -111,6 +114,16 @@ public function test_update_event() {
$this->assertEquals( $updated_description, $updated_event->description() );
}

public function test_delete_event() {
$event_id = $this->event_factory->create_active();

$event = $this->repository->get_event( $event_id );
$this->repository->delete_event( $event );

$this->expectException( EventNotFound::class );
$this->repository->get_event( $event_id );
}

public function test_get_active_events() {
$now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
$event1_id = $this->event_factory->create_active( array(), $now );
Expand Down

0 comments on commit 9b2b89a

Please sign in to comment.