Skip to content

Commit

Permalink
Added EventHandlingMessageConsumer
Browse files Browse the repository at this point in the history
  • Loading branch information
frankdejonge committed Sep 3, 2019
1 parent d26b40d commit 322ca87
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/EventHandlingMessageConsumer.php
@@ -0,0 +1,22 @@
<?php

namespace EventSauce\EventSourcing;

use function end;
use function explode;
use function get_class;
use function method_exists;

class EventHandlingMessageConsumer implements Consumer
{
public function handle(Message $message)
{
$event = $message->event();
$parts = explode('\\', get_class($event));
$method = 'handle' . end($parts);

if (method_exists($this, $method)) {
$this->{$method}($event, $message);
}
}
}
26 changes: 26 additions & 0 deletions src/Integration/EventHandling/DummyEventHandler.php
@@ -0,0 +1,26 @@
<?php

namespace EventSauce\EventSourcing\Integration\EventHandling;

use EventSauce\EventSourcing\EventHandlingMessageConsumer;
use EventSauce\EventSourcing\Message;
use EventSauce\EventSourcing\PayloadStub;

class DummyEventHandler extends EventHandlingMessageConsumer
{
/**
* @var PayloadStub
*/
public $event;

/**
* @var Message
*/
public $message;

protected function handlePayloadStub(PayloadStub $event, Message $message)
{
$this->event = $event;
$this->message = $message;
}
}
23 changes: 23 additions & 0 deletions src/Integration/EventHandling/EventHandlingTest.php
@@ -0,0 +1,23 @@
<?php

namespace EventSauce\EventSourcing\Integration\EventHandling;

use EventSauce\EventSourcing\Message;
use EventSauce\EventSourcing\PayloadStub;
use PHPStan\Testing\TestCase;

class EventHandlingTest extends TestCase
{
/**
* @test
*/
public function handling_events_from_messages()
{
$handler = new DummyEventHandler();
$event = PayloadStub::create('value');
$message = new Message($event);
$handler->handle($message);
self::assertEquals($event, $handler->event);
self::assertEquals($message, $handler->message);
}
}

0 comments on commit 322ca87

Please sign in to comment.