/**
* @test
*/
public function thatHandles()
{
$messages = array(new Message(self::DUMMY_MESSAGE_UNIQUE_ID, self::DUMMY_MESSAGE_ID, self::DUMMY_MESSAGE_SUBJECT, self::DUMMY_MESSAGE_CONTENT, $this->getDummyFrom(), self::DUMMY_MESSAGE_TO, self::DUMMY_MESSAGE_REFERENCE));
$strategies = array($this->strategy);
$this->provider->expects($this->once())->method('fetchMessagesToProcess')->will($this->returnValue($messages));
$this->strategyHolder->expects($this->once())->method('getStrategies')->will($this->returnValue($strategies));
$this->context->expects($this->exactly(count($strategies)))->method('setStrategy')->with($this->isInstanceOf('\\Diamante\\EmailProcessingBundle\\Model\\Processing\\Strategy'));
$this->context->expects($this->exactly(count($messages) * count($strategies)))->method('execute')->with($this->isInstanceOf('Diamante\\EmailProcessingBundle\\Model\\Message'));
$this->provider->expects($this->once())->method('markMessagesAsProcessed')->with($this->logicalAnd($this->isType(\PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY), $this->countOf(count($messages)), $this->callback(function ($other) {
$result = true;
foreach ($other as $message) {
$constraint = \PHPUnit_Framework_Assert::isInstanceOf('Diamante\\EmailProcessingBundle\\Model\\Message');
try {
\PHPUnit_Framework_Assert::assertThat($message, $constraint);
} catch (\PHPUnit_Framework_ExpectationFailedException $e) {
$result = false;
}
}
return $result;
})));
$this->manager->handle($this->provider);
}