/**
  * @param object        $entity        entity
  * @param ObjectManager $entityManager entityManager
  * @param UnitOfWork    $uow           uow
  */
 private function computeViolations($entity, ObjectManager $entityManager, UnitOfWork $uow)
 {
     if (!($handlers = $this->handlerManager->fetch($entity))) {
         return null;
     }
     $list = $this->violationManager->getViolationListNotFixed($entity);
     $list->setFixed(true);
     foreach ($handlers as $handler) {
         $handler->validate($entity, $list);
     }
     $uow->computeChangeSets();
     foreach ($list as $violation) {
         $changeSet = $uow->getEntityChangeSet($violation);
         if (!empty($changeSet) || !$entityManager->contains($violation)) {
             $this->violations[spl_object_hash($violation)] = $violation;
         }
     }
 }
 public function testFetch()
 {
     $this->mockClass('Rezzza\\ModelViolationLoggerBundle\\Handler\\ViolationHandlerInterface', '\\Mock');
     $createHandler = function ($v) {
         $handler = new \mock\ViolationHandlerInterface();
         $handler->getMockController()->getModel = $v;
         return $handler;
     };
     $handler1 = $createHandler('\\stdClass');
     $handler2 = $createHandler('\\stdClass');
     $handler3 = $createHandler('\\stdClass');
     $handler4 = $createHandler('\\stdClass');
     $handler5 = $createHandler('\\ReflectionClass');
     $manager = new ManagerModel();
     $manager->add($handler1, 3);
     $manager->add($handler2, 2);
     $manager->add($handler3, 4);
     $manager->add($handler4, 1);
     $manager->add($handler5, 6);
     $handlers = $manager->fetch(new \stdClass());
     $this->integer(count($handlers))->isEqualTo(4)->object($handlers[0])->isIdenticalTo($handler4)->object($handlers[1])->isIdenticalTo($handler2)->object($handlers[2])->isIdenticalTo($handler1)->object($handlers[3])->isIdenticalTo($handler3);
 }