Skip to content

Commit 604a1c1

Browse files
committed
add requeue message spec.
1 parent aeedcfd commit 604a1c1

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

src/RequeueMessageSpec.php

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?php
2+
3+
namespace Interop\Queue\Spec;
4+
5+
use Interop\Queue\PsrContext;
6+
use Interop\Queue\PsrMessage;
7+
use Interop\Queue\PsrQueue;
8+
use Interop\Queue\PsrTopic;
9+
use PHPUnit\Framework\TestCase;
10+
11+
/**
12+
* @group functional
13+
*/
14+
abstract class RequeueMessageSpec extends TestCase
15+
{
16+
/**
17+
* @var PsrContext
18+
*/
19+
private $context;
20+
21+
protected function tearDown()
22+
{
23+
if ($this->context) {
24+
$this->context->close();
25+
}
26+
27+
parent::tearDown();
28+
}
29+
30+
public function test()
31+
{
32+
$this->context = $context = $this->createContext();
33+
$queue = $this->createQueue($context, 'requeue_message_spec');
34+
35+
$consumer = $context->createConsumer($queue);
36+
37+
// guard
38+
$this->assertNull($consumer->receiveNoWait());
39+
40+
$expectedBody = __CLASS__.time();
41+
42+
$context->createProducer()->send($queue, $context->createMessage($expectedBody));
43+
44+
$message = $consumer->receive(2000);
45+
$this->assertInstanceOf(PsrMessage::class, $message);
46+
$consumer->reject($message, true);
47+
48+
$requeuedMessage = $message = $consumer->receive(2000);
49+
$this->assertInstanceOf(PsrMessage::class, $requeuedMessage);
50+
$consumer->acknowledge($message);
51+
52+
$this->assertSame($expectedBody, $requeuedMessage->getBody());
53+
}
54+
55+
/**
56+
* @return PsrContext
57+
*/
58+
abstract protected function createContext();
59+
60+
/**
61+
* @param PsrContext $context
62+
* @param string $queueName
63+
*
64+
* @return PsrQueue
65+
*/
66+
protected function createQueue(PsrContext $context, $queueName)
67+
{
68+
return $context->createQueue($queueName);
69+
}
70+
71+
/**
72+
* @param PsrContext $context
73+
* @param string $topicName
74+
*
75+
* @return PsrTopic
76+
*/
77+
protected function createTopic(PsrContext $context, $topicName)
78+
{
79+
return $context->createTopic($topicName);
80+
}
81+
}

0 commit comments

Comments
 (0)