/**
  * Create a pending version for a versionable entity
  *
  * @param object      $versionable
  * @param string      $author
  * @param array       $changeset
  * @param string|null $context
  *
  * @return Version
  */
 public function createPendingVersion($versionable, $author, array $changeset, $context = null)
 {
     $resourceName = ClassUtils::getClass($versionable);
     $version = new Version($resourceName, $versionable->getId(), $author, $context);
     $version->setChangeset($changeset);
     return $version;
 }
 function it_builds_pending_versions_for_a_given_entity(ProductInterface $product, $builder, $versionRepository)
 {
     $product->getId()->willReturn(1);
     $pending1 = new Version('Product', 1, 'julia');
     $pending1->setChangeset(['foo' => 'bar']);
     $pending2 = new Version('Product', 1, 'julia');
     $pending2->setChangeset(['foo' => 'fubar']);
     $versionRepository->findBy(Argument::cetera())->willReturn([$pending1, $pending2]);
     $builder->buildPendingVersion($pending1, null)->willReturn($pending1)->shouldBeCalled();
     $builder->buildPendingVersion($pending2, $pending1)->willReturn($pending2)->shouldBeCalled();
     $versions = $this->buildPendingVersions($product);
     $versions->shouldHaveCount(2);
 }
 function it_builds_pending_versions_when_versioning_an_entity(AbstractProduct $product, $builder, $repo)
 {
     $product->getId()->willReturn(1);
     $pending1 = new Version('Product', 1, 'julia');
     $pending1->setChangeset(['foo' => 'bar']);
     $pending2 = new Version('Product', 1, 'julia');
     $pending2->setChangeset(['foo' => 'fubar']);
     $repo->findBy(Argument::cetera())->willReturn([$pending1, $pending2]);
     $builder->buildPendingVersion($pending1, null)->willReturn($pending1);
     $builder->buildPendingVersion($pending2, $pending1)->willReturn($pending2);
     $builder->buildVersion(Argument::cetera())->willReturn(new Version('Product', 1, 'julia'));
     $versions = $this->buildVersion($product);
     $versions->shouldHaveCount(3);
 }
 /**
  * {@inheritDoc}
  */
 public function setChangeset(array $changeset)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setChangeset', array($changeset));
     return parent::setChangeset($changeset);
 }