Skip to content

Commit

Permalink
test: Replace atoum with PHPUnit for unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
roadiz-ci committed Mar 12, 2024
1 parent 516dbf3 commit c459060
Show file tree
Hide file tree
Showing 13 changed files with 181 additions and 124 deletions.
2 changes: 1 addition & 1 deletion src/AjaxControllers/AjaxAttributeValuesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public function editAction(Request $request, int $attributeValueId): Response
Response::HTTP_PARTIAL_CONTENT
);
}

protected function updatePosition(array $parameters, AttributeValue $attributeValue): array
{
$attributable = $attributeValue->getAttributable();
Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/AbstractAdminController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use JMS\Serializer\SerializationContext;
use JMS\Serializer\SerializerInterface;
use RZ\Roadiz\Core\AbstractEntities\PersistableInterface;
use RZ\Roadiz\CoreBundle\ListManager\SessionListFilters;
use Symfony\Component\Form\Exception\InvalidConfigurationException;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\HttpFoundation\JsonResponse;
Expand All @@ -17,7 +18,6 @@
use Symfony\Component\String\UnicodeString;
use Symfony\Contracts\EventDispatcher\Event;
use Themes\Rozier\RozierApp;
use Themes\Rozier\Utils\SessionListFilters;

abstract class AbstractAdminController extends RozierApp
{
Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/CustomForms/CustomFormsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

use RZ\Roadiz\Core\AbstractEntities\PersistableInterface;
use RZ\Roadiz\CoreBundle\Entity\CustomForm;
use RZ\Roadiz\RozierBundle\Form\CustomFormType;
use Symfony\Component\HttpFoundation\Request;
use Themes\Rozier\Controllers\AbstractAdminWithBulkController;
use Themes\Rozier\Forms\CustomFormType;

class CustomFormsController extends AbstractAdminWithBulkController
{
Expand Down
90 changes: 45 additions & 45 deletions src/Controllers/Documents/DocumentTranslationsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ class DocumentTranslationsController extends RozierApp

/**
* @param Request $request
* @param int $documentId
* @param int|null $translationId
* @param int $documentId
* @param int|null $translationId
*
* @return Response
* @throws RuntimeError
Expand Down Expand Up @@ -63,59 +63,59 @@ public function editAction(Request $request, int $documentId, ?int $translationI
$documentTr = $this->createDocumentTranslation($document, $translation);
}

if ($documentTr !== null && $document !== null) {
$this->assignation['document'] = $document;
$this->assignation['translation'] = $translation;
$this->assignation['documentTr'] = $documentTr;
if ($documentTr === null || $document === null) {

Check failure on line 66 in src/Controllers/Documents/DocumentTranslationsController.php

View workflow job for this annotation

GitHub Actions / static-analysis-tests (8.1)

Strict comparison using === between RZ\Roadiz\CoreBundle\Entity\Document and null will always evaluate to false.

Check failure on line 66 in src/Controllers/Documents/DocumentTranslationsController.php

View workflow job for this annotation

GitHub Actions / static-analysis-tests (8.2)

Strict comparison using === between RZ\Roadiz\CoreBundle\Entity\Document and null will always evaluate to false.

Check failure on line 66 in src/Controllers/Documents/DocumentTranslationsController.php

View workflow job for this annotation

GitHub Actions / static-analysis-tests (8.3)

Strict comparison using === between RZ\Roadiz\CoreBundle\Entity\Document and null will always evaluate to false.
throw new ResourceNotFoundException();
}

/**
* Versioning
*/
if ($this->isGranted('ROLE_ACCESS_VERSIONS')) {
if (null !== $response = $this->handleVersions($request, $documentTr)) {
return $response;
}
}
$this->assignation['document'] = $document;
$this->assignation['translation'] = $translation;
$this->assignation['documentTr'] = $documentTr;

/*
* Handle main form
*/
$form = $this->createForm(DocumentTranslationType::class, $documentTr, [
'referer' => $this->getRequest()->get('referer'),
'disabled' => $this->isReadOnly,
]);
$form->handleRequest($request);
/**
* Versioning
*/
if ($this->isGranted('ROLE_ACCESS_VERSIONS')) {
if (null !== $response = $this->handleVersions($request, $documentTr)) {
return $response;
}
}

if ($form->isSubmitted() && $form->isValid()) {
$this->onPostUpdate($documentTr, $request);
/*
* Handle main form
*/
$form = $this->createForm(DocumentTranslationType::class, $documentTr, [
'referer' => $this->getRequest()->get('referer'),
'disabled' => $this->isReadOnly,
]);
$form->handleRequest($request);

$routeParams = [
'documentId' => $document->getId(),
'translationId' => $translationId,
];
if ($form->isSubmitted() && $form->isValid()) {
$this->onPostUpdate($documentTr, $request);

if ($form->get('referer')->getData()) {
$routeParams = array_merge($routeParams, [
'referer' => $form->get('referer')->getData()
]);
}
$routeParams = [
'documentId' => $document->getId(),
'translationId' => $translationId,
];

/*
* Force redirect to avoid resending form when refreshing page
*/
return $this->redirectToRoute(
'documentsMetaPage',
$routeParams
);
if ($form->get('referer')->getData()) {
$routeParams = array_merge($routeParams, [
'referer' => $form->get('referer')->getData()
]);
}

$this->assignation['form'] = $form->createView();
$this->assignation['readOnly'] = $this->isReadOnly;

return $this->render('@RoadizRozier/document-translations/edit.html.twig', $this->assignation);
/*
* Force redirect to avoid resending form when refreshing page
*/
return $this->redirectToRoute(
'documentsMetaPage',
$routeParams
);
}

throw new ResourceNotFoundException();
$this->assignation['form'] = $form->createView();
$this->assignation['readOnly'] = $this->isReadOnly;

return $this->render('@RoadizRozier/document-translations/edit.html.twig', $this->assignation);
}

protected function createDocumentTranslation(
Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/Documents/DocumentsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
use RZ\Roadiz\CoreBundle\Entity\Translation;
use RZ\Roadiz\CoreBundle\EntityHandler\DocumentHandler;
use RZ\Roadiz\CoreBundle\Exception\EntityAlreadyExistsException;
use RZ\Roadiz\CoreBundle\ListManager\SessionListFilters;
use RZ\Roadiz\Documents\Events\DocumentCreatedEvent;
use RZ\Roadiz\Documents\Events\DocumentDeletedEvent;
use RZ\Roadiz\Documents\Events\DocumentFileUpdatedEvent;
Expand Down Expand Up @@ -55,7 +56,6 @@
use Themes\Rozier\Forms\DocumentEmbedType;
use Themes\Rozier\Models\DocumentModel;
use Themes\Rozier\RozierApp;
use Themes\Rozier\Utils\SessionListFilters;
use Twig\Error\RuntimeError;

class DocumentsController extends RozierApp
Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/NodeTypes/NodeTypesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use RZ\Roadiz\CoreBundle\Entity\NodeType;
use RZ\Roadiz\CoreBundle\Exception\EntityAlreadyExistsException;
use RZ\Roadiz\CoreBundle\ListManager\SessionListFilters;
use RZ\Roadiz\CoreBundle\Message\DeleteNodeTypeMessage;
use RZ\Roadiz\CoreBundle\Message\UpdateNodeTypeSchemaMessage;
use Symfony\Component\Form\Extension\Core\Type\FormType;
Expand All @@ -16,7 +17,6 @@
use Symfony\Component\Messenger\MessageBusInterface;
use Themes\Rozier\Forms\NodeTypeType;
use Themes\Rozier\RozierApp;
use Themes\Rozier\Utils\SessionListFilters;
use Twig\Error\RuntimeError;

class NodeTypesController extends RozierApp
Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/Nodes/HistoryController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
use RZ\Roadiz\CoreBundle\Entity\Node;
use RZ\Roadiz\CoreBundle\Entity\Translation;
use RZ\Roadiz\CoreBundle\ListManager\QueryBuilderListManager;
use RZ\Roadiz\CoreBundle\ListManager\SessionListFilters;
use RZ\Roadiz\CoreBundle\Logger\Entity\Log;
use RZ\Roadiz\CoreBundle\Security\Authorization\Voter\NodeVoter;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Themes\Rozier\RozierApp;
use Themes\Rozier\Utils\SessionListFilters;
use Twig\Error\RuntimeError;

class HistoryController extends RozierApp
Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/Nodes/NodesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use RZ\Roadiz\CoreBundle\Event\Node\NodeUndeletedEvent;
use RZ\Roadiz\CoreBundle\Event\Node\NodeUpdatedEvent;
use RZ\Roadiz\CoreBundle\Exception\EntityAlreadyExistsException;
use RZ\Roadiz\CoreBundle\ListManager\SessionListFilters;
use RZ\Roadiz\CoreBundle\Node\Exception\SameNodeUrlException;
use RZ\Roadiz\CoreBundle\Node\NodeFactory;
use RZ\Roadiz\CoreBundle\Node\NodeMover;
Expand All @@ -35,7 +36,6 @@
use Symfony\Component\Workflow\Registry;
use Themes\Rozier\RozierApp;
use Themes\Rozier\Traits\NodesTrait;
use Themes\Rozier\Utils\SessionListFilters;
use Twig\Error\RuntimeError;

class NodesController extends RozierApp
Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/SettingsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use RZ\Roadiz\CoreBundle\Exception\EntityAlreadyExistsException;
use RZ\Roadiz\CoreBundle\Form\Error\FormErrorSerializer;
use RZ\Roadiz\CoreBundle\Form\SettingType;
use RZ\Roadiz\CoreBundle\ListManager\SessionListFilters;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormFactoryInterface;
Expand All @@ -23,7 +24,6 @@
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Themes\Rozier\RozierApp;
use Themes\Rozier\Utils\SessionListFilters;
use Twig\Error\RuntimeError;

class SettingsController extends RozierApp
Expand Down
121 changes: 121 additions & 0 deletions src/Forms/CustomFormType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<?php

declare(strict_types=1);

namespace Themes\Rozier\Forms;

use RZ\Roadiz\CoreBundle\Entity\CustomForm;
use RZ\Roadiz\CoreBundle\Form\ColorType;
use RZ\Roadiz\CoreBundle\Form\MarkdownType;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Callback;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Context\ExecutionContextInterface;

class CustomFormType extends AbstractType
{
protected Security $security;

/**
* @param Security $security
*/
public function __construct(Security $security)
{
$this->security = $security;
}

public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('displayName', TextType::class, [
'label' => 'customForm.displayName',
'empty_data' => '',
])
->add('description', MarkdownType::class, [
'label' => 'description',
'required' => false,
])
->add('email', TextType::class, [
'label' => 'email',
'required' => false,
'constraints' => [
new Callback(function ($value, ExecutionContextInterface $context) {
$emails = array_filter(
array_map('trim', explode(',', $value ?? ''))
);
foreach ($emails as $email) {
if (false === filter_var($email, FILTER_VALIDATE_EMAIL)) {
$context->buildViolation('{{ value }} is not a valid email address.')
->setParameter('{{ value }}', $email)
->setCode(Email::INVALID_FORMAT_ERROR)
->addViolation();
}
}
}),
],
])
;
if ($this->security->isGranted('ROLE_ACCESS_CUSTOMFORMS_RETENTION')) {
$builder->add('retentionTime', ChoiceType::class, [
'label' => 'customForm.retentionTime',
'help' => 'customForm.retentionTime.help',
'required' => false,
'placeholder' => 'customForm.retentionTime.always',
'choices' => [
'customForm.retentionTime.one_week' => 'P7D',
'customForm.retentionTime.two_weeks' => 'P14D',
'customForm.retentionTime.one_month' => 'P1M',
'customForm.retentionTime.three_months' => 'P3M',
'customForm.retentionTime.six_months' => 'P6M',
'customForm.retentionTime.one_year' => 'P1Y',
'customForm.retentionTime.two_years' => 'P2Y',
]
]);
}
$builder->add('open', CheckboxType::class, [
'label' => 'customForm.open',
'required' => false,
])
->add('closeDate', DateTimeType::class, [
'label' => 'customForm.closeDate',
'required' => false,
'date_widget' => 'single_text',
'date_format' => 'yyyy-MM-dd',
'attr' => [
'class' => 'rz-datetime-field',
],
'placeholder' => [
'hour' => 'hour',
'minute' => 'minute',
],
])
->add('color', ColorType::class, [
'label' => 'customForm.color',
'required' => false,
]);
}

public function getBlockPrefix(): string
{
return 'customform';
}

public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'label' => false,
'name' => '',
'data_class' => CustomForm::class,
'attr' => [
'class' => 'uk-form custom-form-form',
],
]);
$resolver->setAllowedTypes('name', 'string');
}
}
8 changes: 6 additions & 2 deletions src/Forms/DocumentTranslationType.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

namespace Themes\Rozier\Forms;

use RZ\Roadiz\CoreBundle\Form\MarkdownType;
use RZ\Roadiz\CoreBundle\Entity\DocumentTranslation;
use RZ\Roadiz\CoreBundle\Form\MarkdownType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
Expand All @@ -29,7 +29,11 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
'required' => false,
])
->add('copyright', TextType::class, [
'label' => 'copyright',
'label' => 'document.copyrightHolder',
'required' => false,
])
->add('externalUrl', TextType::class, [
'label' => 'document.externalUrl',
'required' => false,
]);
}
Expand Down
Loading

0 comments on commit c459060

Please sign in to comment.