[Messenger] Ignore stamps in in-memory transport

This commit is contained in:
tien.xuan.vo 2019-11-21 16:23:19 +07:00
parent a7fe2b29d2
commit b435b1aab6
2 changed files with 17 additions and 3 deletions

View File

@ -13,6 +13,7 @@ namespace Symfony\Component\Messenger\Tests\Transport;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Tests\Fixtures\AnEnvelopeStamp;
use Symfony\Component\Messenger\Transport\InMemoryTransport;
/**
@ -50,6 +51,19 @@ class InMemoryTransportTest extends TestCase
$this->assertSame([], $this->transport->get());
}
public function testAcknowledgeSameMessageWithDifferentStamps()
{
$envelope1 = new Envelope(new \stdClass(), [new AnEnvelopeStamp()]);
$this->transport->send($envelope1);
$envelope2 = new Envelope(new \stdClass(), [new AnEnvelopeStamp()]);
$this->transport->send($envelope2);
$this->assertSame([$envelope1, $envelope2], $this->transport->get());
$this->transport->ack($envelope1->with(new AnEnvelopeStamp()));
$this->assertSame([$envelope2], $this->transport->get());
$this->transport->reject($envelope2->with(new AnEnvelopeStamp()));
$this->assertSame([], $this->transport->get());
}
public function testAck()
{
$envelope = new Envelope(new \stdClass());

View File

@ -55,7 +55,7 @@ class InMemoryTransport implements TransportInterface, ResetInterface
public function ack(Envelope $envelope): void
{
$this->acknowledged[] = $envelope;
$id = spl_object_hash($envelope);
$id = spl_object_hash($envelope->getMessage());
unset($this->queue[$id]);
}
@ -65,7 +65,7 @@ class InMemoryTransport implements TransportInterface, ResetInterface
public function reject(Envelope $envelope): void
{
$this->rejected[] = $envelope;
$id = spl_object_hash($envelope);
$id = spl_object_hash($envelope->getMessage());
unset($this->queue[$id]);
}
@ -75,7 +75,7 @@ class InMemoryTransport implements TransportInterface, ResetInterface
public function send(Envelope $envelope): Envelope
{
$this->sent[] = $envelope;
$id = spl_object_hash($envelope);
$id = spl_object_hash($envelope->getMessage());
$this->queue[$id] = $envelope;
return $envelope;