Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1c18c3e

Browse files
committed
Add test
1 parent482f8da commit1c18c3e

File tree

7 files changed

+132
-27
lines changed

7 files changed

+132
-27
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespaceSymfony\Component\Messenger\Bridge\Redis\Tests\Fixtures;
4+
5+
class ExternalMessage
6+
{
7+
private$foo;
8+
private$bar = [];
9+
10+
publicfunction__construct(string$foo)
11+
{
12+
$this->foo =$foo;
13+
}
14+
15+
publicfunctiongetFoo():string
16+
{
17+
return$this->foo;
18+
}
19+
20+
publicfunctionsetBar(array$bar):self
21+
{
22+
$this->bar =$bar;
23+
24+
return$this;
25+
}
26+
27+
publicfunctiongetBar():array
28+
{
29+
return$this->bar;
30+
}
31+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespaceSymfony\Component\Messenger\Bridge\Redis\Tests\Fixtures;
4+
5+
useSymfony\Component\Messenger\Envelope;
6+
useSymfony\Component\Messenger\Transport\Serialization\SerializerInterface;
7+
8+
class ExternalMessageSerializerimplements SerializerInterface
9+
{
10+
publicfunctiondecode(array$encodedEnvelope):Envelope
11+
{
12+
$message =newExternalMessage($encodedEnvelope['foo']);
13+
$message->setBar($encodedEnvelope['bar']);
14+
15+
returnnewEnvelope($message);
16+
}
17+
18+
publicfunctionencode(Envelope$envelope):array
19+
{
20+
return [
21+
'body' =>$envelope->getMessage(),
22+
'headers' => [],
23+
];
24+
}
25+
}

‎src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,15 @@ public function testGetPendingMessageFirst()
292292
->willReturn(['queue' => [['message' =>'{"body":"1","headers":[]}']]]);
293293

294294
$connection = Connection::fromDsn('redis://localhost/queue', [],$redis);
295-
$connection->get();
295+
$message =$connection->get();
296+
297+
$this->assertSame([
298+
'id' =>0,
299+
'message' => [
300+
'body' =>1,
301+
'headers' => [],
302+
],
303+
],$message);
296304
}
297305

298306
publicfunctiontestClaimAbandonedMessageWithRaceCondition()

‎src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisReceiverTest.php‎

Lines changed: 61 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,64 +13,105 @@
1313

1414
usePHPUnit\Framework\TestCase;
1515
useSymfony\Component\Messenger\Bridge\Redis\Tests\Fixtures\DummyMessage;
16+
useSymfony\Component\Messenger\Bridge\Redis\Tests\Fixtures\ExternalMessage;
17+
useSymfony\Component\Messenger\Bridge\Redis\Tests\Fixtures\ExternalMessageSerializer;
1618
useSymfony\Component\Messenger\Bridge\Redis\Transport\Connection;
1719
useSymfony\Component\Messenger\Bridge\Redis\Transport\RedisReceiver;
1820
useSymfony\Component\Messenger\Exception\MessageDecodingFailedException;
1921
useSymfony\Component\Messenger\Transport\Serialization\PhpSerializer;
2022
useSymfony\Component\Messenger\Transport\Serialization\Serializer;
23+
useSymfony\Component\Messenger\Transport\Serialization\SerializerInterface;
2124
useSymfony\Component\SerializerasSerializerComponent;
2225
useSymfony\Component\Serializer\Encoder\JsonEncoder;
2326
useSymfony\Component\Serializer\Normalizer\ObjectNormalizer;
2427

2528
class RedisReceiverTestextends TestCase
2629
{
27-
publicfunctiontestItReturnsTheDecodedMessageToTheHandler()
30+
/**
31+
* @dataProvider redisEnvelopeProvider
32+
*/
33+
publicfunctiontestItReturnsTheDecodedMessageToTheHandler(array$redisEnvelope,$expectedMessage,SerializerInterface$serializer)
2834
{
29-
$serializer =$this->createSerializer();
30-
31-
$redisEnvelop =$this->createRedisEnvelope();
3235
$connection =$this->createMock(Connection::class);
33-
$connection->method('get')->willReturn($redisEnvelop);
36+
$connection->method('get')->willReturn($redisEnvelope);
3437

3538
$receiver =newRedisReceiver($connection,$serializer);
3639
$actualEnvelopes =$receiver->get();
3740
$this->assertCount(1,$actualEnvelopes);
38-
$this->assertEquals(newDummyMessage('Hi'),$actualEnvelopes[0]->getMessage());
41+
$this->assertEquals($expectedMessage,$actualEnvelopes[0]->getMessage());
3942
}
4043

41-
publicfunctiontestItRejectTheMessageIfThereIsAMessageDecodingFailedException()
44+
/**
45+
* @dataProvider rejectedRedisEnvelopeProvider
46+
*/
47+
publicfunctiontestItRejectTheMessageIfThereIsAMessageDecodingFailedException(array$redisEnvelope)
4248
{
4349
$this->expectException(MessageDecodingFailedException::class);
4450

4551
$serializer =$this->createMock(PhpSerializer::class);
4652
$serializer->method('decode')->willThrowException(newMessageDecodingFailedException());
4753

48-
$redisEnvelop =$this->createRedisEnvelope();
4954
$connection =$this->createMock(Connection::class);
50-
$connection->method('get')->willReturn($redisEnvelop);
55+
$connection->method('get')->willReturn($redisEnvelope);
5156
$connection->expects($this->once())->method('reject');
5257

5358
$receiver =newRedisReceiver($connection,$serializer);
5459
$receiver->get();
5560
}
5661

57-
privatefunctioncreateRedisEnvelope():array
62+
publicfunctionredisEnvelopeProvider():\Generator
5863
{
59-
return [
60-
'id' =>1,
61-
'body' =>'{"message": "Hi"}',
62-
'headers' => [
63-
'type' => DummyMessage::class,
64+
yield [
65+
[
66+
'id' =>1,
67+
'message' =>json_encode([
68+
'body' =>'{"message": "Hi"}',
69+
'headers' => [
70+
'type' => DummyMessage::class,
71+
],
72+
]),
73+
],
74+
newDummyMessage('Hi'),
75+
newSerializer(
76+
newSerializerComponent\Serializer([newObjectNormalizer()], ['json' =>newJsonEncoder()])
77+
),
78+
];
79+
80+
yield [
81+
[
82+
'id' =>2,
83+
'foo' =>'fooValue',
84+
'bar' => [
85+
'baz' =>'bazValue',
86+
],
6487
],
88+
(newExternalMessage('fooValue'))->setBar(['baz' =>'bazValue']),
89+
newExternalMessageSerializer(),
6590
];
6691
}
6792

68-
privatefunctioncreateSerializer():Serializer
93+
publicfunctionrejectedRedisEnvelopeProvider():\Generator
6994
{
70-
$serializer =newSerializer(
71-
newSerializerComponent\Serializer([newObjectNormalizer()], ['json' =>newJsonEncoder()])
72-
);
95+
yield [
96+
[
97+
'id' =>1,
98+
'message' =>json_encode([
99+
'body' =>'{"message": "Hi"}',
100+
'headers' => [
101+
'type' => DummyMessage::class,
102+
],
103+
]),
104+
],
105+
];
73106

74-
return$serializer;
107+
yield [
108+
[
109+
'id' =>2,
110+
'foo' =>'fooValue',
111+
'bar' => [
112+
'baz' =>'bazValue',
113+
],
114+
],
115+
];
75116
}
76117
}

‎src/Symfony/Component/Messenger/Bridge/Redis/Transport/RedisReceiver.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public function get(): iterable
4040
{
4141
$message =$this->connection->get();
4242

43-
if (array_key_exists('message',$message)) {
43+
if (\array_key_exists('message',$message)) {
4444
$redisEnvelope =json_decode($message['message'],true);
4545
}else {
4646
$redisEnvelope =$message;
@@ -51,7 +51,7 @@ public function get(): iterable
5151
}
5252

5353
try {
54-
if (array_key_exists('body',$redisEnvelope) &&array_key_exists('headers',$redisEnvelope)) {
54+
if (\array_key_exists('body',$redisEnvelope) &&\array_key_exists('headers',$redisEnvelope)) {
5555
$envelope =$this->serializer->decode([
5656
'body' =>$redisEnvelope['body'],
5757
'headers' =>$redisEnvelope['headers'],

‎src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ class PhpSerializer implements SerializerInterface
2525
*/
2626
publicfunctiondecode(array$encodedEnvelope):Envelope
2727
{
28-
if (!array_key_exists('body',$encodedEnvelope)) {
29-
thrownewMessageDecodingFailedException(__CLASS__ .' only supports envelope with "body" index. Maybe you should implement your own serializer?');
28+
if (!\array_key_exists('body',$encodedEnvelope)) {
29+
thrownewMessageDecodingFailedException(__CLASS__.' only supports envelope with "body" index. Maybe you should implement your own serializer?');
3030
}
3131

3232
if (empty($encodedEnvelope['body'])) {

‎src/Symfony/Component/Messenger/Transport/Serialization/Serializer.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ public static function create(): self
6262
*/
6363
publicfunctiondecode(array$encodedEnvelope):Envelope
6464
{
65-
if (!array_key_exists('body',$encodedEnvelope) && !array_key_exists('headers',$encodedEnvelope)) {
66-
thrownewMessageDecodingFailedException(__CLASS__ .' only supports envelope with "body" and "headers" indices. Maybe you should implement your own serializer?');
65+
if (!\array_key_exists('body',$encodedEnvelope) && !\array_key_exists('headers',$encodedEnvelope)) {
66+
thrownewMessageDecodingFailedException(__CLASS__.' only supports envelope with "body" and "headers" indices. Maybe you should implement your own serializer?');
6767
}
6868

6969
if (empty($encodedEnvelope['body']) ||empty($encodedEnvelope['headers'])) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp