Skip to content
This repository has been archived by the owner on Jul 22, 2022. It is now read-only.

Commit

Permalink
Merge pull request #485 from ElectricMaxxx/webtests
Browse files Browse the repository at this point in the history
Webtests
  • Loading branch information
ElectricMaxxx committed Aug 16, 2017
2 parents eb83f4d + 1ac1ea7 commit bb238e5
Show file tree
Hide file tree
Showing 59 changed files with 972 additions and 1,201 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -4,3 +4,5 @@
.php_cs.cache
composer.lock
phpunit.xml
tests/Resources/app/cache/
tests/Resources/app/logs/
11 changes: 6 additions & 5 deletions composer.json
Expand Up @@ -18,8 +18,8 @@
"require": {
"php": "^5.6 || ^7.0",
"doctrine/phpcr-bundle": "^1.1",
"doctrine/phpcr-odm": "^1.1 || ^2.0",
"sonata-project/admin-bundle": "^3.1",
"doctrine/phpcr-odm": "^1.3 || ^2.0",
"sonata-project/admin-bundle": "^3.21.0",
"sonata-project/block-bundle": "^3.0",
"symfony-cmf/resource-rest-bundle": "^1.0",
"symfony-cmf/tree-browser-bundle": "^2.0",
Expand All @@ -28,13 +28,14 @@
},
"require-dev": {
"dantleech/glob-finder": "1.*",
"jackalope/jackalope-jackrabbit": "^1.0",
"jackalope/jackalope-jackrabbit": "^1.3",
"matthiasnoback/symfony-dependency-injection-test": "^1.1",
"puli/repository": "@beta",
"sllh/php-cs-fixer-styleci-bridge": "^2.0",
"sonata-project/core-bundle": "@dev",
"symfony-cmf/resource": "@dev",
"symfony-cmf/resource-bundle": "@dev",
"symfony-cmf/resource": "^1.0",
"symfony-cmf/resource-bundle": "^1.0",
"symfony-cmf/testing": "^2.0",
"symfony/phpunit-bridge": "^2.8 || ^3.0",
"symfony/security-acl": "^2.8 || ^3.0"
},
Expand Down
18 changes: 15 additions & 3 deletions phpunit.xml.dist
Expand Up @@ -9,11 +9,20 @@
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
bootstrap="tests/bootstrap.php"
bootstrap="vendor/symfony-cmf/testing/bootstrap/bootstrap.php"
>
<php>
<server name="KERNEL_DIR" value="tests/Resources/app" />
</php>

<testsuites>
<testsuite name="PHPCR Util Test Suite">
<directory>./tests/</directory>
<testsuite name="SonataDoctrinePHPCRAdminBundle Unit Test Suite">
<directory>./tests/Unit</directory>
</testsuite>

<!-- SonataDoctrinePHPCRAdminBundle Integration Test Suite – The name has to be "phpcr" to trigger db listener.-->
<testsuite name="phpcr">
<directory>./tests/WebTest</directory>
</testsuite>
</testsuites>
<filter>
Expand All @@ -29,4 +38,7 @@
</whitelist>
</filter>

<listeners>
<listener class="Symfony\Cmf\Component\Testing\Phpunit\DatabaseTestListener" />
</listeners>
</phpunit>
7 changes: 6 additions & 1 deletion src/Builder/DatagridBuilder.php
Expand Up @@ -163,7 +163,12 @@ public function getBaseDatagrid(AdminInterface $admin, array $values = array())
$defaultOptions['csrf_protection'] = false;
}

$formBuilder = $this->formFactory->createNamedBuilder('filter', 'form', array(), $defaultOptions);
$formBuilder = $this->formFactory->createNamedBuilder(
'filter',
'Symfony\Component\Form\Extension\Core\Type\FormType',
array(),
$defaultOptions
);

return new Datagrid($admin->createQuery(), $admin->getList(), $this->getPager(), $formBuilder, $values);
}
Expand Down
22 changes: 16 additions & 6 deletions src/Builder/FormContractor.php
Expand Up @@ -58,7 +58,11 @@ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInter
}

if (!$fieldDescription->getType()) {
throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin)));
throw new \RuntimeException(sprintf(
'Please define a type for field `%s` in `%s`',
$fieldDescription->getName(),
get_class($admin)
));
}

$fieldDescription->setAdmin($admin);
Expand All @@ -68,7 +72,8 @@ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInter
ClassMetadata::MANY_TO_ONE,
ClassMetadata::MANY_TO_MANY,
'children',
'child', 'parent',
'child',
'parent',
'referrers',
);

Expand All @@ -90,7 +95,11 @@ public function getFormFactory()
*/
public function getFormBuilder($name, array $options = array())
{
return $this->getFormFactory()->createNamedBuilder($name, 'form', null, $options);
return $this->getFormFactory()->createNamedBuilder(
$name,
'Symfony\Component\Form\Extension\Core\Type\FormType',
null,
$options);
}

/**
Expand All @@ -111,11 +120,11 @@ public function getDefaultOptions($type, FieldDescriptionInterface $fieldDescrip
$options['model_manager'] = $fieldDescription->getAdmin()->getModelManager();

break;
case 'Sonata\AdminBundle\Form\Type\Modeltype':
case 'Sonata\AdminBundle\Form\Type\ModelType':
case 'sonata_type_model':
case 'Sonata\AdminBundle\Form\Type\ModelTypeList':
case 'sonata_type_model_list':
if (!$fieldDescription->getTargetEntity()) {
if ('child' !== $fieldDescription->getMappingType() && !$fieldDescription->getTargetEntity()) {
throw new \LogicException(sprintf(
'The field "%s" in class "%s" does not have a target model defined. Please specify the "targetDocument" attribute in the mapping for this class.',
$fieldDescription->getName(),
Expand Down Expand Up @@ -143,12 +152,13 @@ public function getDefaultOptions($type, FieldDescriptionInterface $fieldDescrip
throw $this->getAssociationAdminException($fieldDescription);
}

$options['type'] = 'sonata_type_admin';
$options['type'] = 'Sonata\AdminBundle\Form\Type\AdminType';
$options['modifiable'] = true;
$options['type_options'] = array(
'sonata_field_description' => $fieldDescription,
'data_class' => $fieldDescription->getAssociationAdmin()->getClass(),
);

break;
}

Expand Down
60 changes: 47 additions & 13 deletions src/Builder/ListBuilder.php
Expand Up @@ -86,8 +86,10 @@ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInter
}

$fieldDescription->setAdmin($admin);
$metadata = null;

if ($admin->getModelManager()->hasMetadata($admin->getClass())) {
/** @var ClassMetadata $metadata */
$metadata = $admin->getModelManager()->getMetadata($admin->getClass());

// TODO sort on parent associations or node name
Expand All @@ -106,9 +108,24 @@ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInter
if (isset($metadata->mappings[$fieldDescription->getName()])) {
$fieldDescription->setFieldMapping($metadata->mappings[$fieldDescription->getName()]);
if ($fieldDescription->getOption('sortable') !== false) {
$fieldDescription->setOption('sortable', $fieldDescription->getOption('sortable', $defaultSortable));
$fieldDescription->setOption('sort_parent_association_mappings', $fieldDescription->getOption('sort_parent_association_mappings', $fieldDescription->getParentAssociationMappings()));
$fieldDescription->setOption('sort_field_mapping', $fieldDescription->getOption('sort_field_mapping', $fieldDescription->getFieldMapping()));
$fieldDescription->setOption(
'sortable',
$fieldDescription->getOption('sortable', $defaultSortable)
);
$fieldDescription->setOption(
'sort_parent_association_mappings',
$fieldDescription->getOption(
'sort_parent_association_mappings',
$fieldDescription->getParentAssociationMappings()
)
);
$fieldDescription->setOption(
'sort_field_mapping',
$fieldDescription->getOption(
'sort_field_mapping',
$fieldDescription->getFieldMapping()
)
);
}
}

Expand All @@ -117,45 +134,62 @@ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInter
$fieldDescription->setAssociationMapping($metadata->associationMappings[$fieldDescription->getName()]);
}

$fieldDescription->setOption('_sort_order', $fieldDescription->getOption('_sort_order', 'ASC'));
$fieldDescription->setOption(
'_sort_order',
$fieldDescription->getOption('_sort_order', 'ASC')
);
}

if (!$fieldDescription->getType()) {
throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin)));
throw new \RuntimeException(sprintf(
'Please define a type for field `%s` in `%s`',
$fieldDescription->getName(),
get_class($admin)
));
}

$fieldDescription->setOption('code', $fieldDescription->getOption('code', $fieldDescription->getName()));
$fieldDescription->setOption('label', $fieldDescription->getOption('label', $fieldDescription->getName()));
$fieldDescription->setOption(
'code',
$fieldDescription->getOption('code', $fieldDescription->getName())
);
$fieldDescription->setOption(
'label',
$fieldDescription->getOption('label', $fieldDescription->getName())
);

if (!$fieldDescription->getTemplate()) {
$fieldDescription->setTemplate($this->getTemplate($fieldDescription->getType()));

if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_ONE) {
$fieldDescription->setTemplate('SonataDoctrinePHPCRAdminBundle:CRUD:list_phpcr_many_to_one.html.twig');
$fieldDescription->setTemplate('SonataAdminBundle:CRUD/Association:list_many_to_one.html.twig');
}

if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_MANY) {
$fieldDescription->setTemplate('SonataDoctrinePHPCRAdminBundle:CRUD:list_phpcr_many_to_many.html.twig');
$fieldDescription->setTemplate('SonataAdminBundle:CRUD/Association:list_many_to_many.html.twig');
}

if ($fieldDescription->getMappingType() == 'child' || $fieldDescription->getMappingType() == 'parent') {
$fieldDescription->setTemplate('SonataDoctrinePHPCRAdminBundle:CRUD:list_phpcr_one_to_one.html.twig');
$fieldDescription->setTemplate('SonataAdminBundle:CRUD/Association:list_one_to_one.html.twig');
}

if ($fieldDescription->getMappingType() == 'children' || $fieldDescription->getMappingType() == 'referrers') {
$fieldDescription->setTemplate('SonataDoctrinePHPCRAdminBundle:CRUD:list_phpcr_one_to_many.html.twig');
$fieldDescription->setTemplate('SonataAdminBundle:CRUD/Association:list_one_to_many.html.twig');
}
}

$mappingTypes = array(
ClassMetadata::MANY_TO_ONE,
ClassMetadata::MANY_TO_MANY,
'children',
'child', 'parent',
'child',
'parent',
'referrers',
);

if ($metadata && $metadata->hasAssociation($fieldDescription->getName()) && in_array($fieldDescription->getMappingType(), $mappingTypes)) {
if ($metadata
&& $metadata->hasAssociation($fieldDescription->getName())
&& in_array($fieldDescription->getMappingType(), $mappingTypes)
) {
$admin->attachAdminClass($fieldDescription);
}
}
Expand Down
30 changes: 19 additions & 11 deletions src/Builder/ShowBuilder.php
Expand Up @@ -77,17 +77,19 @@ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInter
{
$fieldDescription->setAdmin($admin);

$metadata = null;
if ($admin->getModelManager()->hasMetadata($admin->getClass())) {
/** @var ClassMetadata $metadata */
$metadata = $admin->getModelManager()->getMetadata($admin->getClass());

// set the default field mapping
if (isset($metadata->fieldMappings[$fieldDescription->getName()])) {
$fieldDescription->setFieldMapping($metadata->fieldMappings[$fieldDescription->getName()]);
if (isset($metadata->mappings[$fieldDescription->getName()])) {
$fieldDescription->setFieldMapping($metadata->mappings[$fieldDescription->getName()]);
}

// set the default association mapping
if (isset($metadata->associationMappings[$fieldDescription->getName()])) {
$fieldDescription->setAssociationMapping($metadata->associationMappings[$fieldDescription->getName()]);
if ($metadata->hasAssociation($fieldDescription->getName())) {
$fieldDescription->setAssociationMapping($metadata->getAssociation($fieldDescription->getName()));
}
}

Expand All @@ -102,19 +104,25 @@ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInter
$fieldDescription->setTemplate($this->getTemplate($fieldDescription->getType()));

if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_ONE) {
$fieldDescription->setTemplate('SonataDoctrinePhpcrAdminBundle:CRUD:show_phpcr_many_to_one.html.twig');
$fieldDescription->setTemplate('SonataAdminBundle:CRUD/Association:show_many_to_one.html.twig');
}

if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_MANY) {
$fieldDescription->setTemplate('SonataDoctrinePhpcrAdminBundle:CRUD:show_phpcr_many_to_many.html.twig');
$fieldDescription->setTemplate('SonataAdminBundle:CRUD/Association:show_many_to_many.html.twig');
}
}

switch ($fieldDescription->getMappingType()) {
case ClassMetadata::MANY_TO_ONE:
case ClassMetadata::MANY_TO_MANY:
$admin->attachAdminClass($fieldDescription);
break;
$mappingTypes = array(
ClassMetadata::MANY_TO_ONE,
ClassMetadata::MANY_TO_MANY,
'children',
'child',
'parent',
'referrers',
);

if ($metadata && $metadata->hasAssociation($fieldDescription->getName()) && in_array($fieldDescription->getMappingType(), $mappingTypes)) {
$admin->attachAdminClass($fieldDescription);
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/Datagrid/ProxyQuery.php
Expand Up @@ -134,9 +134,11 @@ public function execute(array $params = array(), $hydrationMode = null)
switch ($this->sortOrder) {
case 'DESC':
$this->qb->orderBy()->desc()->field($this->alias.'.'.$this->sortBy);

break;
case 'ASC':
$this->qb->orderBy()->asc()->field($this->alias.'.'.$this->sortBy);

break;
default:
throw new \Exception('Unsupported sort order direction: '.$this->sortOrder);
Expand Down
Expand Up @@ -60,6 +60,7 @@ protected function fixSettings(ContainerBuilder $container)
foreach ($methods as $pos => $calls) {
if ($calls[0] == '__hack_doctrine_phpcr__') {
$settings = $calls[1];

break;
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/DependencyInjection/SonataDoctrinePHPCRAdminExtension.php
Expand Up @@ -39,10 +39,10 @@ public function load(array $configs, ContainerBuilder $container)
'node' => 'SonataDoctrinePHPCRAdminBundle:CRUD:list_node.html.twig',
),
'show' => array(
'doctrine_phpcr_many_to_many' => 'SonataDoctrinePHPCRAdminBundle:CRUD:show_phpcr_many_to_many.html.twig',
'doctrine_phpcr_many_to_one' => 'SonataDoctrinePHPCRAdminBundle:CRUD:show_phpcr_many_to_one.html.twig',
'doctrine_phpcr_one_to_many' => 'SonataDoctrinePHPCRAdminBundle:CRUD:show_phpcr_one_to_many.html.twig',
'doctrine_phpcr_one_to_one' => 'SonataDoctrinePHPCRAdminBundle:CRUD:show_phpcr_one_to_one.html.twig',
'doctrine_phpcr_many_to_many' => 'SonataAdminBundle:CRUD/Association:show_many_to_many.html.twig',
'doctrine_phpcr_many_to_one' => 'SonataAdminBundle:CRUD/Association:show_many_to_one.html.twig',
'doctrine_phpcr_one_to_many' => 'SonataAdminBundle:CRUD/Association:show_one_to_many.html.twig',
'doctrine_phpcr_one_to_one' => 'SonataAdminBundle:CRUD/Association:show_one_to_one.html.twig',
),
),
),
Expand Down
6 changes: 6 additions & 0 deletions src/Filter/DateFilter.php
Expand Up @@ -35,21 +35,27 @@ public function filter(ProxyQueryInterface $proxyQuery, $alias, $field, $data)
switch ($data['type']) {
case DateType::TYPE_GREATER_EQUAL:
$where->gte()->field('a.'.$field)->literal($from);

break;
case DateType::TYPE_GREATER_THAN:
$where->gt()->field('a.'.$field)->literal($from);

break;
case DateType::TYPE_LESS_EQUAL:
$where->lte()->field('a.'.$field)->literal($from);

break;
case DateType::TYPE_LESS_THAN:
$where->lt()->field('a.'.$field)->literal($from);

break;
case DateType::TYPE_NULL:
$where->eq()->field('a.'.$field)->literal(null);

break;
case DateType::TYPE_NOT_NULL:
$where->neq()->field('a.'.$field)->literal(null);

break;
case DateType::TYPE_EQUAL:
default:
Expand Down
1 change: 1 addition & 0 deletions src/Filter/NodeNameFilter.php
Expand Up @@ -37,6 +37,7 @@ public function filter(ProxyQueryInterface $proxyQuery, $alias, $field, $data)
switch ($data['type']) {
case ChoiceType::TYPE_EQUAL:
$where->eq()->localName($alias)->literal($data['value']);

break;
case ChoiceType::TYPE_CONTAINS:
default:
Expand Down

0 comments on commit bb238e5

Please sign in to comment.