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); }
/** * @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; }
/** * @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; }