mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 09:02:12 +00:00
New version using the resource bundle
This commit is contained in:
parent
58b545a546
commit
dace097e76
32 changed files with 60 additions and 1330 deletions
|
|
@ -1,7 +1,5 @@
|
|||
phpunit.xml
|
||||
Tests/autoload.php
|
||||
|
||||
vendor/
|
||||
bin/
|
||||
|
||||
composer.phar
|
||||
composer.lock
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ php:
|
|||
- 5.3
|
||||
- 5.4
|
||||
|
||||
before_script:
|
||||
- wget http://getcomposer.org/composer.phar
|
||||
- php composer.phar install --dev
|
||||
before_script: composer install --dev
|
||||
|
||||
script: php bin/phpspec run
|
||||
|
||||
notifications:
|
||||
email:
|
||||
- travis-ci@sylius.org
|
||||
irc: "irc.freenode.org#sylius-dev"
|
||||
email: travis-ci@sylius.org
|
||||
|
|
|
|||
|
|
@ -1,177 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Controller\Backend;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\EventDispatcher\Event\FilterAddressEvent;
|
||||
use Sylius\Bundle\AddressingBundle\EventDispatcher\SyliusAddressingEvents;
|
||||
use Symfony\Component\DependencyInjection\ContainerAware;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
* Backend address controller.
|
||||
* All administrator related actions are here.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@sylius.pl>
|
||||
*/
|
||||
class AddressController extends ContainerAware
|
||||
{
|
||||
/**
|
||||
* Show all paginated addresses.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function listAction(Request $request)
|
||||
{
|
||||
$addressManager = $this->container->get('sylius_addressing.manager.address');
|
||||
$addressSorter = $this->container->get('sylius_addressing.sorter.address');
|
||||
|
||||
$paginator = $addressManager->createPaginator($addressSorter);
|
||||
$paginator->setCurrentPage($request->query->get('page', 1), true, true);
|
||||
|
||||
$addresses = $paginator->getCurrentPageResults();
|
||||
|
||||
return $this->container->get('templating')->renderResponse('SyliusAddressingBundle:Backend/Address:list.html.'.$this->getEngine(), array(
|
||||
'addresses' => $addresses,
|
||||
'paginator' => $paginator,
|
||||
'sorter' => $addressSorter
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows one address.
|
||||
*
|
||||
* @param mixed $id The address identifier
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function showAction($id)
|
||||
{
|
||||
$address = $this->findAddressOr404($id);
|
||||
|
||||
return $this->container->get('templating')->renderResponse('SyliusAddressingBundle:Backend/Address:show.html.'.$this->getEngine(), array(
|
||||
'address' => $address
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creating an address.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function createAction(Request $request)
|
||||
{
|
||||
$address = $this->container->get('sylius_addressing.manager.address')->createAddress();
|
||||
$form = $this->container->get('form.factory')->create('sylius_addressing_address', $address);
|
||||
|
||||
if ('POST' === $request->getMethod()) {
|
||||
$form->bindRequest($request);
|
||||
|
||||
if ($form->isValid()) {
|
||||
$this->container->get('event_dispatcher')->dispatch(SyliusAddressingEvents::ADDRESS_CREATE, new FilterAddressEvent($address));
|
||||
$this->container->get('sylius_addressing.manipulator.address')->create($address);
|
||||
|
||||
return new RedirectResponse($this->container->get('router')->generate('sylius_addressing_backend_address_show', array(
|
||||
'id' => $address->getId()
|
||||
)));
|
||||
}
|
||||
}
|
||||
|
||||
return $this->container->get('templating')->renderResponse('SyliusAddressingBundle:Backend/Address:create.html.'.$this->getEngine(), array(
|
||||
'form' => $form->createView()
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Updating an address.
|
||||
*
|
||||
* @param Request $request
|
||||
* @param mixed $id The address identifier
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function updateAction(Request $request, $id)
|
||||
{
|
||||
$address = $this->findAddressOr404($id);
|
||||
$form = $this->container->get('form.factory')->create('sylius_addressing_address', $address);
|
||||
|
||||
if ('POST' === $request->getMethod()) {
|
||||
$form->bindRequest($request);
|
||||
|
||||
if ($form->isValid()) {
|
||||
$this->container->get('event_dispatcher')->dispatch(SyliusAddressingEvents::ADDRESS_UPDATE, new FilterAddressEvent($address));
|
||||
$this->container->get('sylius_addressing.manipulator.address')->update($address);
|
||||
|
||||
return new RedirectResponse($this->container->get('router')->generate('sylius_addressing_backend_address_show', array(
|
||||
'id' => $address->getId()
|
||||
)));
|
||||
}
|
||||
}
|
||||
|
||||
return $this->container->get('templating')->renderResponse('SyliusAddressingBundle:Backend/Address:update.html.'.$this->getEngine(), array(
|
||||
'form' => $form->createView(),
|
||||
'address' => $address
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes address.
|
||||
*
|
||||
* @param mixed $id The address identifier
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function deleteAction($id)
|
||||
{
|
||||
$address = $this->findAddressOr404($id);
|
||||
|
||||
$this->container->get('event_dispatcher')->dispatch(SyliusAddressingEvents::ADDRESS_DELETE, new FilterAddressEvent($address));
|
||||
$this->container->get('sylius_addressing.manipulator.address')->delete($address);
|
||||
|
||||
return new RedirectResponse($this->container->get('router')->generate('sylius_addressing_backend_address_list'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to find address with given id.
|
||||
* Throws special 404 exception when unsuccessful.
|
||||
*
|
||||
* @param mixed $id The address identifier
|
||||
*
|
||||
* @return AddressInterface
|
||||
*
|
||||
* @throws NotFoundHttpException
|
||||
*/
|
||||
protected function findAddressOr404($id)
|
||||
{
|
||||
if (!$address = $this->container->get('sylius_addressing.manager.address')->findAddress($id)) {
|
||||
throw new NotFoundHttpException('Requested address does not exist');
|
||||
}
|
||||
|
||||
return $address;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get engine.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getEngine()
|
||||
{
|
||||
return $this->container->getParameter('sylius_addressing.engine');
|
||||
}
|
||||
}
|
||||
|
|
@ -67,18 +67,7 @@ class Configuration implements ConfigurationInterface
|
|||
->arrayNode('controller')
|
||||
->addDefaultsIfNotSet()
|
||||
->children()
|
||||
->arrayNode('backend')
|
||||
->addDefaultsIfNotSet()
|
||||
->children()
|
||||
->scalarNode('address')->defaultValue('Sylius\\Bundle\\AddressingBundle\\Controller\\Backend\\AddressController')->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->arrayNode('manipulator')
|
||||
->addDefaultsIfNotSet()
|
||||
->children()
|
||||
->scalarNode('address')->defaultValue('Sylius\\Bundle\\AddressingBundle\\Manipulator\\AddressManipulator')->end()
|
||||
->scalarNode('address')->defaultValue('Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController')->end()
|
||||
->end()
|
||||
->end()
|
||||
->arrayNode('form')
|
||||
|
|
|
|||
|
|
@ -45,74 +45,10 @@ class SyliusAddressingExtension extends Extension
|
|||
$container->setParameter('sylius_addressing.driver', $config['driver']);
|
||||
$container->setParameter('sylius_addressing.engine', $config['engine']);
|
||||
|
||||
$configurations = array(
|
||||
'controllers',
|
||||
'forms',
|
||||
'manipulators'
|
||||
);
|
||||
$container->setParameter('sylius_addressing.model.address.class', $config['classes']['model']['address']);
|
||||
$container->setParameter('sylius_addressing.controller.address.class', $config['classes']['controller']['address']);
|
||||
$container->setParameter('sylius_addressing.form.type.address.class', $config['classes']['form']['type']['address']);
|
||||
|
||||
foreach($configurations as $basename) {
|
||||
$loader->load(sprintf('%s.xml', $basename));
|
||||
}
|
||||
|
||||
$this->remapParametersNamespaces($config['classes'], $container, array(
|
||||
'manipulator' => 'sylius_addressing.manipulator.%s.class',
|
||||
'model' => 'sylius_addressing.model.%s.class'
|
||||
));
|
||||
|
||||
$this->remapParametersNamespaces($config['classes']['form'], $container, array(
|
||||
'type' => 'sylius_addressing.form.type.%s.class',
|
||||
));
|
||||
|
||||
$this->remapParametersNamespaces($config['classes']['controller'], $container, array(
|
||||
'backend' => 'sylius_addressing.controller.backend.%s.class',
|
||||
'frontend' => 'sylius_addressing.controller.frontend.%s.class'
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remap parameters.
|
||||
*
|
||||
* @param array $config
|
||||
* @param ContainerBuilder $container
|
||||
* @param array $map
|
||||
*/
|
||||
protected function remapParameters(array $config, ContainerBuilder $container, array $map)
|
||||
{
|
||||
foreach ($map as $name => $paramName) {
|
||||
if (isset($config[$name])) {
|
||||
$container->setParameter($paramName, $config[$name]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remap parameter namespaces.
|
||||
*
|
||||
* @param array $config
|
||||
* @param ContainerBuilder $container
|
||||
* @param array $namespaceConfig
|
||||
*/
|
||||
protected function remapParametersNamespaces(array $config, ContainerBuilder $container, array $namespaces)
|
||||
{
|
||||
foreach ($namespaces as $ns => $map) {
|
||||
if ($ns) {
|
||||
if (!isset($config[$ns])) {
|
||||
continue;
|
||||
}
|
||||
$namespaceConfig = $config[$ns];
|
||||
} else {
|
||||
$namespaceConfig = $config;
|
||||
}
|
||||
if (is_array($map)) {
|
||||
$this->remapParameters($namespaceConfig, $container, $map);
|
||||
} else {
|
||||
foreach ($namespaceConfig as $name => $value) {
|
||||
if (null !== $value) {
|
||||
$container->setParameter(sprintf($map, $name), $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$loader->load('services.xml');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,133 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Entity;
|
||||
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Pagerfanta\Adapter\DoctrineORMAdapter;
|
||||
use Pagerfanta\Pagerfanta;
|
||||
use Sylius\Bundle\AddressingBundle\Model\AddressInterface;
|
||||
use Sylius\Bundle\AddressingBundle\Model\AddressManager as BaseAddressManager;
|
||||
use Sylius\Bundle\AddressingBundle\Sorting\SorterInterface;
|
||||
|
||||
/**
|
||||
* Address entity manager.
|
||||
* Doctrine ORM driver implementation.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@sylius.pl>
|
||||
*/
|
||||
class AddressManager extends BaseAddressManager
|
||||
{
|
||||
/**
|
||||
* Entity manager.
|
||||
*
|
||||
* @var EntityManager
|
||||
*/
|
||||
protected $entityManager;
|
||||
|
||||
/**
|
||||
* Address repository.
|
||||
*
|
||||
* @var EntityRepository
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param EntityManager $entityManager
|
||||
* @param string $class
|
||||
*/
|
||||
public function __construct(EntityManager $entityManager, $class)
|
||||
{
|
||||
parent::__construct($class);
|
||||
|
||||
$this->entityManager = $entityManager;
|
||||
$this->repository = $entityManager->getRepository($class);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function createAddress()
|
||||
{
|
||||
$class = $this->getClass();
|
||||
|
||||
return new $class;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function createPaginator(SorterInterface $sorter = null)
|
||||
{
|
||||
$queryBuilder = $this->repository->createQueryBuilder('a')
|
||||
->orderBy('a.createdAt', 'DESC')
|
||||
;
|
||||
|
||||
if (null !== $sorter) {
|
||||
$sorter->sort($queryBuilder);
|
||||
}
|
||||
|
||||
return new Pagerfanta(new DoctrineORMAdapter($queryBuilder->getQuery()));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function persistAddress(AddressInterface $address)
|
||||
{
|
||||
$this->entityManager->persist($address);
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function removeAddress(AddressInterface $address)
|
||||
{
|
||||
$this->entityManager->remove($address);
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function findAddress($id)
|
||||
{
|
||||
return $this->repository->find($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function findAddressBy(array $criteria)
|
||||
{
|
||||
return $this->repository->findOneBy($criteria);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function findAddresses()
|
||||
{
|
||||
return $this->repository->findAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function findAddressesBy(array $criteria)
|
||||
{
|
||||
return $this->repository->findBy($criteria);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\EventDispatcher\Event;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\Model\AddressInterface;
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
|
||||
/**
|
||||
* Filter address event.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
class FilterAddressEvent extends Event
|
||||
{
|
||||
/**
|
||||
* Address.
|
||||
*
|
||||
* @var AddressInterface
|
||||
*/
|
||||
private $address;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param AddressInterface $address
|
||||
*/
|
||||
public function __construct(AddressInterface $address)
|
||||
{
|
||||
$this->address = $address;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get address.
|
||||
*
|
||||
* @return AddressInterface
|
||||
*/
|
||||
public function getAddress()
|
||||
{
|
||||
return $this->address;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\EventDispatcher;
|
||||
|
||||
/**
|
||||
* Events.
|
||||
*
|
||||
* @author Paweł Jędrzejwski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
final class SyliusAddressingEvents
|
||||
{
|
||||
const ADDRESS_CREATE = 'sylius_addressing.event.address.create';
|
||||
const ADDRESS_UPDATE = 'sylius_addressing.event.address.update';
|
||||
const ADDRESS_DELETE = 'sylius_addressing.event.address.delete';
|
||||
}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Manipulator;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\Model\AddressInterface;
|
||||
use Sylius\Bundle\AddressingBundle\Model\AddressManagerInterface;
|
||||
|
||||
/**
|
||||
* Address manipulator.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@sylius.pl>
|
||||
*/
|
||||
class AddressManipulator implements AddressManipulatorInterface
|
||||
{
|
||||
/**
|
||||
* Address manager.
|
||||
*
|
||||
* @var AddressManagerInterface
|
||||
*/
|
||||
protected $addressManager;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param $addressManager AddressManagerInterface
|
||||
*/
|
||||
public function __construct(AddressManagerInterface $addressManager)
|
||||
{
|
||||
$this->addressManager = $addressManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function create(AddressInterface $address)
|
||||
{
|
||||
$this->addressManager->persistAddress($address);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function update(AddressInterface $address)
|
||||
{
|
||||
$this->addressManager->persistAddress($address);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function delete(AddressInterface $address)
|
||||
{
|
||||
$this->addressManager->removeAddress($address);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Manipulator;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\Model\AddressInterface;
|
||||
|
||||
/**
|
||||
* Address manipulator interface.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@sylius.pl>
|
||||
*/
|
||||
interface AddressManipulatorInterface
|
||||
{
|
||||
/**
|
||||
* Creates a address.
|
||||
*
|
||||
* @param AddressInterface $address
|
||||
*/
|
||||
function create(AddressInterface $address);
|
||||
|
||||
/**
|
||||
* Updates a address.
|
||||
*
|
||||
* @param AddressInterface $address
|
||||
*/
|
||||
function update(AddressInterface $address);
|
||||
|
||||
/**
|
||||
* Deletes a address.
|
||||
*
|
||||
* @param AddressInterface $address
|
||||
*/
|
||||
function delete(AddressInterface $address);
|
||||
}
|
||||
|
|
@ -47,14 +47,6 @@ abstract class Address implements AddressInterface
|
|||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11,27 +11,15 @@
|
|||
|
||||
namespace Sylius\Bundle\AddressingBundle\Model;
|
||||
|
||||
use Sylius\Bundle\ResourceBundle\Model\ResourceInterface;
|
||||
|
||||
/**
|
||||
* Address model interface.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@sylius.pl>
|
||||
*/
|
||||
interface AddressInterface
|
||||
interface AddressInterface extends ResourceInterface
|
||||
{
|
||||
/**
|
||||
* Returns address id.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
function getId();
|
||||
|
||||
/**
|
||||
* Set id.
|
||||
*
|
||||
* @param mixed $id
|
||||
*/
|
||||
function setId($id);
|
||||
|
||||
/**
|
||||
* Get creation time.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,45 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Model;
|
||||
|
||||
/**
|
||||
* Address manager model.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@sylius.pl>
|
||||
*/
|
||||
abstract class AddressManager implements AddressManagerInterface
|
||||
{
|
||||
/**
|
||||
* Address model class.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $class;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $class The address model class
|
||||
*/
|
||||
public function __construct($class)
|
||||
{
|
||||
$this->class = $class;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getClass()
|
||||
{
|
||||
return $this->class;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Model;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\Sorting\SorterInterface;
|
||||
|
||||
/**
|
||||
* Address manager interface.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@sylius.pl>
|
||||
*/
|
||||
interface AddressManagerInterface
|
||||
{
|
||||
/**
|
||||
* Creates address model.
|
||||
*
|
||||
* @return AddressInterface
|
||||
*/
|
||||
function createAddress();
|
||||
|
||||
/**
|
||||
* Creates paginator.
|
||||
*
|
||||
* @param SorterInterface $sorter
|
||||
*/
|
||||
function createPaginator(SorterInterface $sorter = null);
|
||||
|
||||
/**
|
||||
* Persists address model.
|
||||
*
|
||||
* @param AddressInterface $address
|
||||
*/
|
||||
function persistAddress(AddressInterface $address);
|
||||
|
||||
/**
|
||||
* Removes address model.
|
||||
*
|
||||
* @param AddressInterface $address
|
||||
*/
|
||||
function removeAddress(AddressInterface $address);
|
||||
|
||||
/**
|
||||
* Finds address by id.
|
||||
*
|
||||
* @param integer $id The address id
|
||||
*/
|
||||
function findAddress($id);
|
||||
|
||||
/**
|
||||
* Finds address by criteria.
|
||||
*
|
||||
* @param array $criteria The criteria
|
||||
*/
|
||||
function findAddressBy(array $criteria);
|
||||
|
||||
/**
|
||||
* Finds all adresses.
|
||||
*
|
||||
* @return array The adressess
|
||||
*/
|
||||
function findAddresses();
|
||||
|
||||
/**
|
||||
* Finds addresses by criteria.
|
||||
*
|
||||
* @param array $criteria The criteria
|
||||
*/
|
||||
function findAddressesBy(array $criteria);
|
||||
|
||||
/**
|
||||
* Returns address model class.
|
||||
*
|
||||
* @return string The address model class
|
||||
*/
|
||||
function getClass();
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<!--
|
||||
|
||||
This file is part of the Sylius package.
|
||||
|
||||
(c) Paweł Jędrzejewski
|
||||
|
||||
For the full copyright and license information, please view the LICENSE
|
||||
file that was distributed with this source code.
|
||||
|
||||
-->
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services
|
||||
http://symfony.com/schema/dic/services/services-1.0.xsd"
|
||||
>
|
||||
|
||||
<services>
|
||||
<service id="sylius_addressing.controller.backend.address" class="%sylius_addressing.controller.backend.address.class%">
|
||||
<call method="setContainer">
|
||||
<argument type="service" id="service_container" />
|
||||
</call>
|
||||
</service>
|
||||
</services>
|
||||
|
||||
</container>
|
||||
|
|
@ -18,24 +18,27 @@
|
|||
>
|
||||
|
||||
<parameters>
|
||||
<parameter key="sylius_addressing.manager.address.class">Sylius\Bundle\AddressingBundle\Entity\AddressManager</parameter>
|
||||
<parameter key="sylius_addressing.sorter.address.class">Sylius\Bundle\AddressingBundle\Sorting\ORM\AddressSorter</parameter>
|
||||
<parameter key="sylius_addressing.manager.address.class">Sylius\Bundle\ResourceBundle\Doctrine\ResourceManager</parameter>
|
||||
<parameter key="sylius_addressing.repository.address.class">Sylius\Bundle\ResourceBundle\Doctrine\ORM\ResourceRepository</parameter>
|
||||
</parameters>
|
||||
|
||||
<services>
|
||||
<!-- managers... -->
|
||||
<service id="sylius_addressing.doctrine.repository.address"
|
||||
factory-service="doctrine.orm.default_entity_manager"
|
||||
factory-method="getRepository"
|
||||
class="Doctrine\ORM\EntityRepository"
|
||||
public="false"
|
||||
>
|
||||
<argument>%sylius_addressing.model.address.class%</argument>
|
||||
</service>
|
||||
<service id="sylius_addressing.repository.address" class="%sylius_addressing.repository.address.class%">
|
||||
<argument type="service" id="sylius_addressing.doctrine.repository.address" />
|
||||
<argument>%sylius_addressing.model.address.class%</argument>
|
||||
</service>
|
||||
<service id="sylius_addressing.manager.address" class="%sylius_addressing.manager.address.class%">
|
||||
<argument type="service" id="doctrine.orm.default_entity_manager" />
|
||||
<argument>%sylius_addressing.model.address.class%</argument>
|
||||
</service>
|
||||
|
||||
<!-- sorters... -->
|
||||
<service id="sylius_addressing.sorter.address" class="%sylius_addressing.sorter.address.class%">
|
||||
<call method="setContainer">
|
||||
<argument type="service" id="service_container" />
|
||||
</call>
|
||||
</service>
|
||||
|
||||
</services>
|
||||
|
||||
</container>
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
|
||||
This file is part of the Sylius package.
|
||||
|
||||
(c) Paweł Jędrzejewski
|
||||
|
||||
For the full copyright and license information, please view the LICENSE
|
||||
file that was distributed with this source code.
|
||||
|
||||
-->
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services
|
||||
http://symfony.com/schema/dic/services/services-1.0.xsd"
|
||||
>
|
||||
|
||||
<services>
|
||||
<service id="sylius_addressing.manipulator.address" class="%sylius_addressing.manipulator.address.class%">
|
||||
<argument type="service" id="sylius_addressing.manager.address" />
|
||||
</service>
|
||||
</services>
|
||||
|
||||
</container>
|
||||
|
|
@ -18,12 +18,19 @@
|
|||
>
|
||||
|
||||
<services>
|
||||
<service id="sylius_addressing.controller.address" class="%sylius_addressing.controller.address.class%">
|
||||
<argument>sylius_addressing</argument>
|
||||
<argument>address</argument>
|
||||
<argument>SyliusAddressingBundle:Address</argument>
|
||||
<call method="setContainer">
|
||||
<argument type="service" id="service_container" />
|
||||
</call>
|
||||
</service>
|
||||
|
||||
<service id="sylius_addressing.form.type.address" class="%sylius_addressing.form.type.address.class%">
|
||||
<argument>%sylius_addressing.model.address.class%</argument>
|
||||
<tag name="form.type" alias="sylius_addressing_address" />
|
||||
</service>
|
||||
|
||||
</services>
|
||||
|
||||
</container>
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# This file is part of the Sylius package.
|
||||
# (c) Paweł Jędrzejewski
|
||||
|
||||
sylius_addressing_backend_address_create:
|
||||
pattern: /create
|
||||
defaults: { _controller: sylius_addressing.controller.backend.address:createAction }
|
||||
|
||||
sylius_addressing_backend_address_update:
|
||||
pattern: /{id}/update
|
||||
defaults: { _controller: sylius_addressing.controller.backend.address:updateAction }
|
||||
|
||||
sylius_addressing_backend_address_delete:
|
||||
pattern: /{id}/delete
|
||||
defaults: { _controller: sylius_addressing.controller.backend.address:deleteAction }
|
||||
|
||||
sylius_addressing_backend_address_list:
|
||||
pattern: /list
|
||||
defaults: { _controller: sylius_addressing.controller.backend.address:listAction }
|
||||
|
||||
sylius_addressing_backend_address_show:
|
||||
pattern: /{id}
|
||||
defaults: { _controller: sylius_addressing.controller.backend.address:showAction }
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
|
||||
|
|
@ -14,8 +14,7 @@
|
|||
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping
|
||||
http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd"
|
||||
>
|
||||
http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd">
|
||||
|
||||
<class name="Sylius\Bundle\AddressingBundle\Model\CommonAddress">
|
||||
<property name="firstname">
|
||||
|
|
|
|||
|
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Sorting\ORM;
|
||||
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Sylius\Bundle\AddressingBundle\Sorting\SorterInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerAware;
|
||||
|
||||
/**
|
||||
* Default ORM sorter.
|
||||
* Sorts address entities.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
class AddressSorter extends ContainerAware implements SorterInterface
|
||||
{
|
||||
public function sort($sortable)
|
||||
{
|
||||
if (!$sortable instanceof QueryBuilder) {
|
||||
throw new InvalidArgumentException('Default sorter supports only "Doctrine\\ORM\\QueryBuilder" as sortable argument.');
|
||||
}
|
||||
|
||||
$request = $this->container->get('request');
|
||||
|
||||
if (null === $sortProperty = $request->query->get('sort', null)) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$sortOrder = $request->query->get('order', 'ASC');
|
||||
|
||||
if (!in_array($sortOrder, array('ASC', 'DESC'))) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$addressClass = $this->container->getParameter('sylius_addressing.model.address.class');
|
||||
$reflectionClass = new \ReflectionClass($addressClass);
|
||||
|
||||
if (!in_array($sortProperty, array_keys($reflectionClass->getDefaultProperties()))) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var QueryBuilder */
|
||||
$sortable->orderBy('a.' . $sortProperty, $sortOrder);
|
||||
}
|
||||
|
||||
public function getOrder()
|
||||
{
|
||||
$sortOrder = $this->container->get('request')->query->get('order', 'ASC');
|
||||
|
||||
if (!in_array($sortOrder, array('ASC', 'DESC'))) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
return ($sortOrder == 'ASC') ? 'DESC' : 'ASC';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Sorting;
|
||||
|
||||
/**
|
||||
* Interface for sorter.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
interface SorterInterface
|
||||
{
|
||||
function sort($sortable);
|
||||
function getOrder();
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
namespace Sylius\Bundle\AddressingBundle;
|
||||
|
||||
use Sylius\Bundle\ResourceBundle\SyliusResourceBundle;
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle;
|
||||
|
||||
/**
|
||||
|
|
@ -22,13 +23,6 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
|
|||
*/
|
||||
class SyliusAddressingBundle extends Bundle
|
||||
{
|
||||
// Bundle driver list.
|
||||
const DRIVER_DOCTRINE_ORM = 'doctrine/orm';
|
||||
const DRIVER_DOCTRINE_MONGODB_ODM = 'doctrine/mongodb-odm';
|
||||
const DRIVER_DOCTRINE_COUCHDB_ODM = 'doctrine/couchdb-odm';
|
||||
const DRIVER_PROPEL = 'propel';
|
||||
const DRIVER_PROPEL2 = 'propel2';
|
||||
|
||||
/**
|
||||
* Return array of currently supported drivers.
|
||||
*
|
||||
|
|
@ -37,7 +31,7 @@ class SyliusAddressingBundle extends Bundle
|
|||
static public function getSupportedDrivers()
|
||||
{
|
||||
return array(
|
||||
self::DRIVER_DOCTRINE_ORM
|
||||
SyliusResourceBundle::DRIVER_DOCTRINE_ORM
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,86 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Tests\DependencyInjection;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\DependencyInjection\SyliusAddressingExtension;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\Yaml\Parser;
|
||||
|
||||
/**
|
||||
* Dependency injection extension test.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
class SyliusAddressingExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
|
||||
*/
|
||||
public function testLoadThrowsExceptionUnlessDriverSet()
|
||||
{
|
||||
$loader = new SyliusAddressingExtension();
|
||||
$config = $this->getEmptyConfig();
|
||||
unset($config['driver']);
|
||||
$loader->load(array($config), new ContainerBuilder());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testLoadThrowsExceptionUnlessDriverIsValid()
|
||||
{
|
||||
$loader = new SyliusAddressingExtension();
|
||||
$config = $this->getEmptyConfig();
|
||||
$config['driver'] = 'foo';
|
||||
$loader->load(array($config), new ContainerBuilder());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testLoadThrowsExceptionUnlessEngineIsValid()
|
||||
{
|
||||
$loader = new SyliusAddressingExtension();
|
||||
$config = $this->getEmptyConfig();
|
||||
$config['engine'] = 'foo';
|
||||
$loader->load(array($config), new ContainerBuilder());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
|
||||
*/
|
||||
public function testLoadThrowsExceptionUnlessaddressModelClassSet()
|
||||
{
|
||||
$loader = new SyliusAddressingExtension();
|
||||
$config = $this->getEmptyConfig();
|
||||
unset($config['classes']['model']['address']);
|
||||
$loader->load(array($config), new ContainerBuilder());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get empty config for tests.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getEmptyConfig()
|
||||
{
|
||||
$yaml = <<<EOF
|
||||
driver: ORM
|
||||
classes:
|
||||
model:
|
||||
address: Sylius\Bundle\AddressingBundle\Entity\Address
|
||||
EOF;
|
||||
$parser = new Parser();
|
||||
|
||||
return $parser->parse($yaml);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Tests\Entity;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\Entity\AddressManager;
|
||||
|
||||
/**
|
||||
* Address manager test.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
class AddressManagerTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testPersistAddress()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
|
||||
$entityManager = $this->getMockEntityManager();
|
||||
$entityManager->expects($this->once())
|
||||
->method('persist')
|
||||
->with($this->equalTo($address))
|
||||
;
|
||||
$entityManager->expects($this->once())
|
||||
->method('flush')
|
||||
;
|
||||
|
||||
$addressManager = new AddressManager($entityManager, 'Foo\\Bar');
|
||||
$addressManager->persistAddress($address);
|
||||
}
|
||||
|
||||
public function testRemoveAddress()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
|
||||
$entityManager = $this->getMockEntityManager();
|
||||
$entityManager->expects($this->once())
|
||||
->method('remove')
|
||||
->with($this->equalTo($address))
|
||||
;
|
||||
$entityManager->expects($this->once())
|
||||
->method('flush')
|
||||
;
|
||||
|
||||
$addressManager = new AddressManager($entityManager, 'Foo\\Bar');
|
||||
$addressManager->removeAddress($address);
|
||||
}
|
||||
|
||||
public function testFindAddress()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
|
||||
$repository = $this->getMockEntityRepository('find', 3, $address);
|
||||
$entityManager = $this->getMockEntityManager($repository);
|
||||
|
||||
$addressManager = new AddressManager($entityManager, 'Foo\\Bar');
|
||||
|
||||
$this->assertEquals($address, $addressManager->findAddress(3));
|
||||
}
|
||||
|
||||
public function testFindAddressBy()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
|
||||
$repository = $this->getMockEntityRepository('findOneBy', array('firstname' => 'Paweł'), $address);
|
||||
$entityManager = $this->getMockEntityManager($repository);
|
||||
|
||||
$addressManager = new AddressManager($entityManager, 'Foo\\Bar');
|
||||
|
||||
$this->assertEquals($address, $addressManager->findAddressBy(array('firstname' => 'Paweł')));
|
||||
}
|
||||
|
||||
public function testFindAddresses()
|
||||
{
|
||||
$result = array(
|
||||
$this->getMockAddress(),
|
||||
$this->getMockAddress(),
|
||||
$this->getMockAddress()
|
||||
);
|
||||
|
||||
$repository = $this->getMockEntityRepository('findAll', null, $result);
|
||||
$entityManager = $this->getMockEntityManager($repository);
|
||||
|
||||
$addressManager = new AddressManager($entityManager, 'Foo\\Bar');
|
||||
|
||||
$this->assertEquals($result, $addressManager->findAddresses());
|
||||
}
|
||||
|
||||
public function testFindAddressesBy()
|
||||
{
|
||||
$result = array(
|
||||
$this->getMockAddress()
|
||||
);
|
||||
|
||||
$repository = $this->getMockEntityRepository('findBy', array('firstname' => 'Paweł'), $result);
|
||||
$entityManager = $this->getMockEntityManager($repository);
|
||||
|
||||
$addressManager = new AddressManager($entityManager, 'Foo\\Bar');
|
||||
|
||||
$this->assertEquals($result, $addressManager->findAddressesBy(array('firstname' => 'Paweł')));
|
||||
}
|
||||
|
||||
private function getMockAddress()
|
||||
{
|
||||
return $this->getMock('Sylius\Bundle\AddressingBundle\Model\AddressInterface');
|
||||
}
|
||||
|
||||
private function getMockEntityManager($repository = null)
|
||||
{
|
||||
$entityManager = $this->getMockBuilder('Doctrine\ORM\EntityManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock()
|
||||
;
|
||||
|
||||
if (null !== $repository) {
|
||||
$entityManager->expects($this->once())
|
||||
->method('getRepository')
|
||||
->will($this->returnValue($repository))
|
||||
;
|
||||
}
|
||||
|
||||
return $entityManager;
|
||||
}
|
||||
|
||||
private function getMockEntityRepository($method, $criteria, $result)
|
||||
{
|
||||
$repository = $this->getMockBuilder('Doctrine\ORM\EntityRepository')
|
||||
->disableOriginalConstructor()
|
||||
->getMock()
|
||||
;
|
||||
|
||||
if (null !== $criteria) {
|
||||
$repository->expects($this->once())
|
||||
->method($method)
|
||||
->with($this->equalTo($criteria))
|
||||
->will($this->returnValue($result))
|
||||
;
|
||||
} else {
|
||||
$repository->expects($this->once())
|
||||
->method($method)
|
||||
->will($this->returnValue($result))
|
||||
;
|
||||
}
|
||||
|
||||
return $repository;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Tests\EventDispatcher\Event;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\EventDispatcher\Event\FilterAddressEvent;
|
||||
|
||||
/**
|
||||
* Filter address event test.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
class FilterAddressEventTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
$event = new FilterAddressEvent($address);
|
||||
$this->assertEquals($address, $event->getAddress());
|
||||
}
|
||||
|
||||
private function getMockAddress()
|
||||
{
|
||||
return $this->getMock('Sylius\Bundle\AddressingBundle\Model\AddressInterface');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Sylius\Bundle\AddressingBundle\Tests\Manipulator;
|
||||
|
||||
use Sylius\Bundle\AddressingBundle\Manipulator\AddressManipulator;
|
||||
|
||||
/**
|
||||
* Address manipulator test.
|
||||
*
|
||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||
*/
|
||||
class AddressManipulatorTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testCreatePersistsAddress()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
|
||||
$addressManager = $this->getMockAddressManager();
|
||||
$addressManager->expects($this->once())
|
||||
->method('persistAddress')
|
||||
->with($this->equalTo($address))
|
||||
;
|
||||
|
||||
$manipulator = new AddressManipulator($addressManager);
|
||||
$manipulator->create($address);
|
||||
}
|
||||
|
||||
public function testUpdatePersistsAddress()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
|
||||
$addressManager = $this->getMockAddressManager();
|
||||
$addressManager->expects($this->once())
|
||||
->method('persistAddress')
|
||||
->with($this->equalTo($address))
|
||||
;
|
||||
|
||||
$manipulator = new AddressManipulator($addressManager);
|
||||
$manipulator->update($address);
|
||||
}
|
||||
|
||||
public function testDeleteRemovesAddress()
|
||||
{
|
||||
$address = $this->getMockAddress();
|
||||
|
||||
$addressManager = $this->getMockAddressManager();
|
||||
$addressManager->expects($this->once())
|
||||
->method('removeAddress')
|
||||
->with($this->equalTo($address))
|
||||
;
|
||||
|
||||
$manipulator = new AddressManipulator($addressManager);
|
||||
$manipulator->delete($address);
|
||||
}
|
||||
|
||||
private function getMockAddress()
|
||||
{
|
||||
return $this->getMock('Sylius\Bundle\AddressingBundle\Model\AddressInterface');
|
||||
}
|
||||
|
||||
private function getMockAddressManager()
|
||||
{
|
||||
$addressManager = $this->getMockBuilder('Sylius\Bundle\AddressingBundle\Model\AddressManagerInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock()
|
||||
;
|
||||
|
||||
return $addressManager;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
if (!file_exists($file = __DIR__.'/../vendor/autoload.php')) {
|
||||
die("Please install dev dependencies using Composer to run the test suite. \n");
|
||||
} else {
|
||||
require_once $file;
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Sylius package.
|
||||
*
|
||||
* (c) Paweł Jędrzejewski
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
if (file_exists($file = __DIR__.'/autoload.php')) {
|
||||
require_once $file;
|
||||
} elseif (file_exists($file = __DIR__.'/autoload.php.dist')) {
|
||||
require_once $file;
|
||||
}
|
||||
|
|
@ -16,15 +16,20 @@
|
|||
"homepage": "https://github.com/Sylius/SyliusAddressingBundle/contributors"
|
||||
}
|
||||
],
|
||||
"minimum-stability": "dev",
|
||||
"require": {
|
||||
"php": ">=5.3.2",
|
||||
|
||||
"symfony/symfony": "2.1.*",
|
||||
"symfony/framework-bundle": "~2.1",
|
||||
"sylius/resource-bundle": "*",
|
||||
"stof/doctrine-extensions-bundle": "*",
|
||||
"white-october/pagerfanta-bundle": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/orm": "*"
|
||||
"phpspec/phpspec2": "*"
|
||||
},
|
||||
"config": {
|
||||
"bin-dir": "bin"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Sylius\\Bundle\\AddressingBundle": "" }
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<phpunit bootstrap="./Tests/bootstrap.php" colors="true">
|
||||
<testsuites>
|
||||
<testsuite name="SyliusAddressingBundle test suite">
|
||||
<directory suffix="Test.php">./Tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<filter>
|
||||
<whitelist>
|
||||
<directory>./</directory>
|
||||
<exclude>
|
||||
<directory>./Resources</directory>
|
||||
<directory>./Tests</directory>
|
||||
<directory>./vendor</directory>
|
||||
</exclude>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</phpunit>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace spec\Sylius\Bundle\AddressingBundle\Model;
|
||||
|
||||
use PHPSpec2\ObjectBehavior;
|
||||
|
||||
class CommonAddress extends ObjectBehavior
|
||||
{
|
||||
function it_should_be_initializable()
|
||||
{
|
||||
$this->shouldHaveType('Sylius\Bundle\AddressingBundle\Model\CommonAddress');
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue