From 1182bf80508669dfd4cf6c04defd77e252a3f812 Mon Sep 17 00:00:00 2001 From: Alex Rock Ancelet Date: Tue, 28 Apr 2020 23:30:34 +0200 Subject: [PATCH] Added fixes to Category after writing form-based tests --- Entity/Category.php | 18 +++++----- Tests/Entity/CategoryTest.php | 39 ++++++++++++++++++++++ Tests/Entity/PageTest.php | 62 +++++++++++++++++++++++++++++++++++ composer.json | 1 + 4 files changed, 111 insertions(+), 9 deletions(-) diff --git a/Entity/Category.php b/Entity/Category.php index 70950be..4d2a4d3 100644 --- a/Entity/Category.php +++ b/Entity/Category.php @@ -98,10 +98,10 @@ public function __construct() public function getName(): string { - return $this->name; + return (string) $this->name; } - public function setName(string $name): void + public function setName(?string $name): void { $this->name = $name; } @@ -111,19 +111,19 @@ public function getDescription(): ?string return $this->description; } - public function setDescription(string $description = null): void + public function setDescription(?string $description): void { $this->description = $description; } public function getSlug(): string { - return $this->slug; + return (string) $this->slug; } - public function setSlug(string $slug = null): void + public function setSlug(?string $slug): void { - $this->slug = $slug; + $this->slug = (string) $slug; } public function isEnabled(): bool @@ -131,9 +131,9 @@ public function isEnabled(): bool return $this->enabled; } - public function setEnabled(bool $enabled = false): void + public function setEnabled(?bool $enabled = false): void { - $this->enabled = $enabled; + $this->enabled = (bool) $enabled; } public function getParent(): ?Category @@ -141,7 +141,7 @@ public function getParent(): ?Category return $this->parent; } - public function setParent(Category $parent = null): void + public function setParent(?Category $parent): void { if ($parent === $this) { // Refuse the category to have itself as parent. diff --git a/Tests/Entity/CategoryTest.php b/Tests/Entity/CategoryTest.php index 6602551..6ca5c20 100644 --- a/Tests/Entity/CategoryTest.php +++ b/Tests/Entity/CategoryTest.php @@ -15,6 +15,12 @@ use Orbitale\Bundle\CmsBundle\Tests\AbstractTestCase; use Orbitale\Bundle\CmsBundle\Tests\Fixtures\TestBundle\Entity\Category; use Orbitale\Bundle\CmsBundle\Tests\Fixtures\TestBundle\Entity\Page; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; +use Symfony\Component\Form\Extension\Core\Type\FormType; +use Symfony\Component\Form\Extension\Core\Type\TextareaType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormFactoryInterface; class CategoryTest extends AbstractTestCase { @@ -161,4 +167,37 @@ public function testCategorySlugIsNotTransliteratedIfEmpty() static::assertEquals(null, $category->getSlug()); } + + public function testSuccessfulFormSubmissionWithEmptyData() + { + static::bootKernel(); + + $category = new Category(); + + /** @var FormBuilderInterface $builder */ + $builder = static::$container->get(FormFactoryInterface::class)->createBuilder(FormType::class, $category); + $builder + ->add('name') + ->add('slug') + ->add('description', TextareaType::class) + ->add('parent', EntityType::class, ['class' => Category::class]) + ->add('enabled', CheckboxType::class) + ; + + $form = $builder->getForm(); + + $form->submit([ + 'name' => null, + 'slug' => null, + 'description' => null, + 'parent' => null, + 'enabled' => null, + ]); + + static::assertSame('', $category->getName()); + static::assertSame('', $category->getSlug()); + static::assertNull($category->getDescription()); + static::assertNull($category->getParent()); + static::assertFalse($category->isEnabled()); + } } diff --git a/Tests/Entity/PageTest.php b/Tests/Entity/PageTest.php index 2a9d261..d1fd3c1 100644 --- a/Tests/Entity/PageTest.php +++ b/Tests/Entity/PageTest.php @@ -14,6 +14,12 @@ use Doctrine\ORM\EntityManager; use Orbitale\Bundle\CmsBundle\Tests\AbstractTestCase; use Orbitale\Bundle\CmsBundle\Tests\Fixtures\TestBundle\Entity\Page; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; +use Symfony\Component\Form\Extension\Core\Type\FormType; +use Symfony\Component\Form\Extension\Core\Type\TextareaType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormFactoryInterface; class PageTest extends AbstractTestCase { @@ -141,4 +147,60 @@ public function testPageSlugIsTransliterated() static::assertEquals('default-page', $page->getSlug()); } + + public function testSuccessfulFormSubmissionWithEmptyData() + { + static::bootKernel(); + + $page = new Page(); + + /** @var FormBuilderInterface $builder */ + $builder = static::$container->get(FormFactoryInterface::class)->createBuilder(FormType::class, $page); + $builder + ->add('title') + ->add('slug') + ->add('metaDescription') + ->add('metaTitle') + ->add('metaKeywords') + ->add('host') + ->add('content', TextareaType::class) + ->add('css', TextareaType::class) + ->add('js', TextareaType::class) + ->add('parent', EntityType::class, ['class' => Page::class]) + ->add('homepage', CheckboxType::class) + ->add('enabled', CheckboxType::class) + ; + + $form = $builder->getForm(); + + $form->submit([ + 'title' => null, + 'slug' => null, + 'metaDescription' => null, + 'metaTitle' => null, + 'metaKeywords' => null, + 'host' => null, + 'content' => null, + 'css' => null, + 'js' => null, + 'category' => null, + 'parent' => null, + 'homepage' => null, + 'enabled' => null, + ]); + + static::assertSame('', $page->getTitle()); + static::assertSame('', $page->getSlug()); + static::assertNull($page->getMetaDescription()); + static::assertNull($page->getMetaTitle()); + static::assertNull($page->getMetaKeywords()); + static::assertNull($page->getHost()); + static::assertNull($page->getContent()); + static::assertNull($page->getCss()); + static::assertNull($page->getJs()); + static::assertNull($page->getCategory()); + static::assertNull($page->getParent()); + static::assertFalse($page->isHomepage()); + static::assertFalse($page->isEnabled()); + } } diff --git a/composer.json b/composer.json index 003bd0f..60fefcd 100644 --- a/composer.json +++ b/composer.json @@ -26,6 +26,7 @@ "symfony/browser-kit": "^5.0", "symfony/css-selector": "^5.0", "symfony/dom-crawler": "^5.0", + "symfony/form": "^5.0", "symfony/phpunit-bridge": "^5.0", "symfony/yaml": "^5.0" },