|
10 | 10 | use Enqueue\SnsQs\SnsQsQueue;
|
11 | 11 | use Enqueue\SnsQs\SnsQsTopic;
|
12 | 12 | use Enqueue\Sqs\SqsContext;
|
| 13 | +use Enqueue\Sqs\SqsMessage; |
13 | 14 | use Enqueue\Sqs\SqsProducer;
|
14 | 15 | use Enqueue\Test\ClassExtensionTrait;
|
15 | 16 | use Interop\Queue\Destination;
|
@@ -124,20 +125,71 @@ public function testShouldSendSnsTopicMessageWithAttributesToSnsProducer()
|
124 | 125 | $producer->send($destination, new SnsQsMessage('', [], [], ['foo' => 'bar']));
|
125 | 126 | }
|
126 | 127 |
|
| 128 | + public function testShouldSendToSnsTopicMessageWithGroupIdAndDeduplicationId() |
| 129 | + { |
| 130 | + $snsMock = $this->createSnsContextMock(); |
| 131 | + $snsMock->method('createMessage')->willReturn(new SnsMessage()); |
| 132 | + $destination = new SnsQsTopic(''); |
| 133 | + |
| 134 | + $snsProducerStub = $this->prophesize(SnsProducer::class); |
| 135 | + $snsProducerStub->send( |
| 136 | + $destination, |
| 137 | + Argument::that(function (SnsMessage $snsMessage) { |
| 138 | + return 'group-id' === $snsMessage->getMessageGroupId() |
| 139 | + && 'deduplication-id' === $snsMessage->getMessageDeduplicationId(); |
| 140 | + }) |
| 141 | + )->shouldBeCalledOnce(); |
| 142 | + |
| 143 | + $snsMock->method('createProducer')->willReturn($snsProducerStub->reveal()); |
| 144 | + |
| 145 | + $snsMessage = new SnsQsMessage(); |
| 146 | + $snsMessage->setMessageGroupId('group-id'); |
| 147 | + $snsMessage->setMessageDeduplicationId('deduplication-id'); |
| 148 | + |
| 149 | + $producer = new SnsQsProducer($snsMock, $this->createSqsContextMock()); |
| 150 | + $producer->send($destination, $snsMessage); |
| 151 | + } |
| 152 | + |
127 | 153 | public function testShouldSendSqsMessageToSqsProducer()
|
128 | 154 | {
|
129 | 155 | $sqsMock = $this->createSqsContextMock();
|
| 156 | + $sqsMock->method('createMessage')->willReturn(new SqsMessage()); |
130 | 157 | $destination = new SnsQsQueue('');
|
131 | 158 |
|
132 |
| - $snsProducerStub = $this->prophesize(SqsProducer::class); |
133 |
| - $snsProducerStub->send($destination, Argument::any())->shouldBeCalledOnce(); |
| 159 | + $sqsProducerStub = $this->prophesize(SqsProducer::class); |
| 160 | + $sqsProducerStub->send($destination, Argument::any())->shouldBeCalledOnce(); |
134 | 161 |
|
135 |
| - $sqsMock->method('createProducer')->willReturn($snsProducerStub->reveal()); |
| 162 | + $sqsMock->method('createProducer')->willReturn($sqsProducerStub->reveal()); |
136 | 163 |
|
137 | 164 | $producer = new SnsQsProducer($this->createSnsContextMock(), $sqsMock);
|
138 | 165 | $producer->send($destination, new SnsQsMessage());
|
139 | 166 | }
|
140 | 167 |
|
| 168 | + public function testShouldSendToSqsProducerMessageWithGroupIdAndDeduplicationId() |
| 169 | + { |
| 170 | + $sqsMock = $this->createSqsContextMock(); |
| 171 | + $sqsMock->method('createMessage')->willReturn(new SqsMessage()); |
| 172 | + $destination = new SnsQsQueue(''); |
| 173 | + |
| 174 | + $sqsProducerStub = $this->prophesize(SqsProducer::class); |
| 175 | + $sqsProducerStub->send( |
| 176 | + $destination, |
| 177 | + Argument::that(function (SqsMessage $sqsMessage) { |
| 178 | + return 'group-id' === $sqsMessage->getMessageGroupId() |
| 179 | + && 'deduplication-id' === $sqsMessage->getMessageDeduplicationId(); |
| 180 | + }) |
| 181 | + )->shouldBeCalledOnce(); |
| 182 | + |
| 183 | + $sqsMock->method('createProducer')->willReturn($sqsProducerStub->reveal()); |
| 184 | + |
| 185 | + $sqsMessage = new SnsQsMessage(); |
| 186 | + $sqsMessage->setMessageGroupId('group-id'); |
| 187 | + $sqsMessage->setMessageDeduplicationId('deduplication-id'); |
| 188 | + |
| 189 | + $producer = new SnsQsProducer($this->createSnsContextMock(), $sqsMock); |
| 190 | + $producer->send($destination, $sqsMessage); |
| 191 | + } |
| 192 | + |
141 | 193 | /**
|
142 | 194 | * @return \PHPUnit\Framework\MockObject\MockObject|SnsContext
|
143 | 195 | */
|
|
0 commit comments