|
18 | 18 |
|
19 | 19 | use Cake\Event\EventList; |
20 | 20 | use Cake\Log\Engine\ArrayLog; |
| 21 | +use Cake\Log\Log; |
21 | 22 | use Cake\Queue\Job\Message; |
22 | 23 | use Cake\Queue\Queue\Processor; |
23 | 24 | use Cake\TestSuite\TestCase; |
@@ -84,11 +85,16 @@ public function testProcess($jobMethod, $expected, $logMessage, $dispatchedEvent |
84 | 85 | $this->assertSame('Processor.message.seen', $events[0]->getName()); |
85 | 86 | $this->assertEquals(['queueMessage' => $queueMessage], $events[0]->getData()); |
86 | 87 |
|
| 88 | + // Events should contain a message with the same payload. |
87 | 89 | $this->assertSame('Processor.message.start', $events[1]->getName()); |
88 | | - $this->assertEquals(['message' => $message], $events[1]->getData()); |
| 90 | + $data = $events[1]->getData(); |
| 91 | + $this->assertArrayHasKey('message', $data); |
| 92 | + $this->assertSame($message->jsonSerialize(), $data['message']->jsonSerialize()); |
89 | 93 |
|
90 | 94 | $this->assertSame($dispatchedEvent, $events[2]->getName()); |
91 | | - $this->assertEquals(['message' => $message], $events[2]->getData()); |
| 95 | + $data = $events[2]->getData(); |
| 96 | + $this->assertArrayHasKey('message', $data); |
| 97 | + $this->assertSame($message->jsonSerialize(), $data['message']->jsonSerialize()); |
92 | 98 | } |
93 | 99 |
|
94 | 100 | /** |
@@ -163,6 +169,39 @@ public function testProcessWillRequeueOnException() |
163 | 169 | $this->assertSame($expected, $actual); |
164 | 170 | } |
165 | 171 |
|
| 172 | + /** |
| 173 | + * Test processJobMessage method. |
| 174 | + * |
| 175 | + * @return void |
| 176 | + */ |
| 177 | + public function testProcessJobObject() |
| 178 | + { |
| 179 | + Log::setConfig('debug', [ |
| 180 | + 'className' => 'Array', |
| 181 | + 'levels' => ['notice', 'info', 'debug'], |
| 182 | + ]); |
| 183 | + |
| 184 | + $messageBody = [ |
| 185 | + 'queue' => 'default', |
| 186 | + 'class' => ['TestApp\WelcomeMailer', 'welcome'], |
| 187 | + 'args' => [], |
| 188 | + ]; |
| 189 | + $connectionFactory = new NullConnectionFactory(); |
| 190 | + $context = $connectionFactory->createContext(); |
| 191 | + $queueMessage = new NullMessage(json_encode($messageBody)); |
| 192 | + $processor = new Processor(); |
| 193 | + |
| 194 | + $actual = $processor->process($queueMessage, $context); |
| 195 | + $logs = Log::engine('debug')->read(); |
| 196 | + Log::drop('debug'); |
| 197 | + |
| 198 | + $this->assertCount(1, $logs); |
| 199 | + $this->assertStringContainsString('Welcome mail sent', $logs[0]); |
| 200 | + |
| 201 | + $expected = InteropProcessor::ACK; |
| 202 | + $this->assertSame($expected, $actual); |
| 203 | + } |
| 204 | + |
166 | 205 | /** |
167 | 206 | * Test processMessage method. |
168 | 207 | * |
@@ -190,7 +229,7 @@ public function testProcessMessage() |
190 | 229 | /** |
191 | 230 | * Job to be used in test testProcessMessageCallableIsString |
192 | 231 | * |
193 | | - * @param Message $message The message to process |
| 232 | + * @param \Cake\Queue\Job\Message $message The message to process |
194 | 233 | * @return null |
195 | 234 | */ |
196 | 235 | public static function processReturnNull(Message $message) |
|
0 commit comments