public function testfindOrCreateComponentWithExistingComponent()
 {
     $resolve = new ResolveComponentModelIdentifier('user', 1);
     $resolvedComponentData = new ResolvedComponentData('user', 1);
     $this->and($this->mockGenerator->orphanize('__construct'))->and($this->mockGenerator->shuntParentClassCalls())->and($entityRepository = new \mock\Doctrine\ORM\EntityRepository())->and($objectManager = new \mock\Doctrine\Common\Persistence\ObjectManager())->and($resultBuilder = new \mock\Spy\Timeline\ResultBuilder\ResultBuilderInterface())->and($componentDataResolver = new \mock\Spy\Timeline\ResolveComponent\ComponentDataResolverInterface())->and($queryBuilder = new \mock\Doctrine\Orm\QueryBuilder())->and($this->mockGenerator->orphanize('__construct'))->and($this->mockGenerator->shuntParentClassCalls())->and($query = new \mock\Doctrine\ORM\AbstractQuery())->and($component = new \mock\Spy\Timeline\Model\Component())->and($this->calling($componentDataResolver)->resolveComponentData = function () use($resolvedComponentData) {
         return $resolvedComponentData;
     })->and($this->calling($objectManager)->getRepository = function () use($entityRepository) {
         return $entityRepository;
     })->and($this->calling($entityRepository)->createQueryBuilder = function () use($queryBuilder) {
         return $queryBuilder;
     })->and($this->calling($query)->getOneOrNullResult = function () use($component) {
         return $component;
     })->and($this->calling($queryBuilder)->where = function () use($queryBuilder) {
         return $queryBuilder;
     })->and($this->calling($queryBuilder)->andWhere = function () use($queryBuilder) {
         return $queryBuilder;
     })->and($this->calling($queryBuilder)->setParameter = function () use($queryBuilder) {
         return $queryBuilder;
     })->and($this->calling($queryBuilder)->getQuery = function () use($query) {
         return $query;
     })->and($actionClass = 'Spy\\Timeline\\Model\\Action')->and($componentClass = 'Spy\\Timeline\\Model\\Component')->and($actionComponentClass = 'Spy\\Timeline\\Model\\ActionComponent')->and($actionManager = new TestedModel($objectManager, $resultBuilder, $actionClass, $componentClass, $actionComponentClass))->and($actionManager->setComponentDataResolver($componentDataResolver))->and($this->calling($componentDataResolver)->resolveComponentData = function () {
         return new ResolvedComponentData('user', '1');
     })->when($result = $actionManager->findOrCreateComponent('user', 1))->mock($componentDataResolver)->call('resolveComponentData')->withArguments($resolve)->exactly(1)->mock($queryBuilder)->call('where')->withArguments('c.model = :model')->exactly(1)->mock($queryBuilder)->call('andWhere')->withArguments('c.identifier = :identifier')->exactly(1)->mock($queryBuilder)->call('setParameter')->withArguments('model', $resolvedComponentData->getModel())->exactly(1)->mock($queryBuilder)->call('setParameter')->withArguments('identifier', serialize($resolvedComponentData->getIdentifier()))->exactly(1)->object($result)->isEqualTo($component);
 }
 /**
  * Creates a new component object from the resolved data.
  *
  * @param ResolvedComponentData $resolved The resolved component data
  *
  * @return ComponentInterface The newly created and populated component
  */
 protected function getComponentFromResolvedComponentData(ResolvedComponentData $resolved)
 {
     /** @var $component ComponentInterface */
     $component = new $this->componentClass();
     $component->setModel($resolved->getModel());
     $component->setData($resolved->getData());
     $component->setIdentifier($resolved->getIdentifier());
     return $component;
 }
 public function testIdentifierCanBeZero()
 {
     $this->if($action = new TestedModel('user', '0'))->string($action->getIdentifier())->isEqualTo('0');
 }