forked from php-enqueue/enqueue-dev
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPhpSerializerEventTransformerTest.php
66 lines (52 loc) · 1.99 KB
/
PhpSerializerEventTransformerTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
namespace Enqueue\AsyncEventDispatcher\Tests;
use Enqueue\AsyncEventDispatcher\EventTransformer;
use Enqueue\AsyncEventDispatcher\PhpSerializerEventTransformer;
use Enqueue\Null\NullMessage;
use Enqueue\Test\ClassExtensionTrait;
use Interop\Queue\Context;
use Interop\Queue\Message;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Symfony\Component\EventDispatcher\GenericEvent;
class PhpSerializerEventTransformerTest extends TestCase
{
use ClassExtensionTrait;
public function testShouldImplementEventTransformerInterface()
{
$this->assertClassImplements(EventTransformer::class, PhpSerializerEventTransformer::class);
}
public function testShouldReturnMessageWithPhpSerializedEventAsBodyOnToMessage()
{
$transformer = new PhpSerializerEventTransformer($this->createContextStub());
$event = new GenericEvent('theSubject');
$expectedBody = serialize($event);
$message = $transformer->toMessage('fooEvent', $event);
$this->assertInstanceOf(Message::class, $message);
$this->assertEquals($expectedBody, $message->getBody());
}
public function testShouldReturnEventUnserializedFromMessageBodyOnToEvent()
{
$message = new NullMessage();
$message->setBody(serialize(new GenericEvent('theSubject')));
$transformer = new PhpSerializerEventTransformer($this->createContextStub());
$event = $transformer->toEvent('anEventName', $message);
$this->assertInstanceOf(GenericEvent::class, $event);
$this->assertEquals('theSubject', $event->getSubject());
}
/**
* @return MockObject|Context
*/
private function createContextStub()
{
$context = $this->createMock(Context::class);
$context
->expects($this->any())
->method('createMessage')
->willReturnCallback(function ($body) {
return new NullMessage($body);
})
;
return $context;
}
}