Example #1
0
 function it_tells_when_entity_was_registered(Registry $registry, Identifier $identifier)
 {
     $entity = new EntityFake();
     $registry->isRegistered($entity)->willReturn(true);
     $identifier->isEntity($entity)->willReturn(true);
     $registry->register($entity)->willReturn();
     $this->register($entity);
     $this->isRegistered($entity)->shouldReturn(true);
 }
 function let(Definition\Repository $definitions, Identifier $identifier)
 {
     $definitions->getDefinition(Argument::type(EntityFake::getClassName()))->willReturn($this->createEntityDefinition());
     $definitions->getDefinition(Argument::type(AssociatedEntityFake::getClassName()))->willReturn($this->createAssociatedEntityDefinition());
     $identifier->isPersisted(Argument::any())->will(function ($args) {
         return !is_null($args[0]->getId());
     });
     $identifier->getIdentity(Argument::any())->will(function ($args) {
         return $args[0]->getId();
     });
     $this->beConstructedWith($definitions, $identifier);
 }
Example #3
0
 /**
  * @param $traversableArray
  * @return array
  */
 private function toPersistedArray($traversableArray)
 {
     if (!$this->isTraversableArray($traversableArray)) {
         return [];
     }
     $result = [];
     foreach ($traversableArray as $valueElement) {
         $result[$this->identifier->getIdentity($valueElement)] = $valueElement;
     }
     return $result;
 }
Example #4
0
 /**
  * @param $entity
  * @return int
  * @throws InvalidArgumentException
  * @throws RuntimeException
  */
 private function getEntityState($entity)
 {
     if (!is_object($entity)) {
         throw new InvalidArgumentException("Only objects can be registered in Unit of Work.");
     }
     if (!$this->isRegistered($entity)) {
         throw new RuntimeException("Object need to be registered first in the Unit of Work.");
     }
     if ($this->registry->isRemoved($entity)) {
         return EntityStates::REMOVED_ENTITY;
     }
     if (!$this->identifier->isPersisted($entity)) {
         return EntityStates::NEW_ENTITY;
     }
     if ($this->isChanged($entity)) {
         return EntityStates::EDITED_ENTITY;
     }
     return EntityStates::PERSISTED_ENTITY;
 }