Implemented draft for PureSourceCreateType Test and adapted classes to it

This commit is contained in:
Kevin Frantz 2019-02-13 18:03:25 +01:00
parent aafde4c0f9
commit 1bc85c994e
14 changed files with 93 additions and 22 deletions

View File

@ -4,6 +4,8 @@ namespace App\Attribut;
/**
* @author kevinfrantz
*
* @see IdAttributInterface
*/
trait IdAttribut
{
@ -12,16 +14,25 @@ trait IdAttribut
*/
protected $id;
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
public function getId(): int
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return bool
*/
public function hasId(): bool
{
return isset($this->id);

View File

@ -13,9 +13,14 @@ interface IdAttributInterface
public function setId(int $id): void;
/**
* @return int
* Don't use this function to check if an id is set.
* Use instead:.
*
* @see self::hasId()
*
* @return int|null
*/
public function getId(): int;
public function getId(): ?int;
/**
* @return bool Checks if attribute is set

View File

@ -30,9 +30,9 @@ trait SlugAttribut
}
/**
* @return string
* @return string|null
*/
public function getSlug(): string
public function getSlug(): ?string
{
return $this->slug;
}

View File

@ -15,9 +15,14 @@ interface SlugAttributInterface
public function setSlug(string $slug): void;
/**
* @return string
* Don't use this function to check if a slug is set
* Use instead:.
*
* @see self::hasSlug()
*
* @return string|null
*/
public function getSlug(): string;
public function getSlug(): ?string;
/**
* @return bool Checks if a slug is set

View File

@ -35,11 +35,16 @@ final class CreateSourceAction extends AbstractCreateAction
$this->sourceClass = $request->get(SourceType::CLASS_PARAMETER_NAME, self::DEFAULT_CLASS);
}
private function setFormClass(): void
private function setForm(): void
{
$this->form = $this->actionService->getCurrentFormBuilder()->getForm();
}
private function setRequestedEntityClass(): void
{
$this->actionService->getRequestedAction()->getRequestedEntity()->setClass($this->sourceClass);
}
private function handleRequest(): void
{
$this->form->handleRequest($this->actionService->getRequest());
@ -53,7 +58,8 @@ final class CreateSourceAction extends AbstractCreateAction
protected function prepare(): void
{
$this->setSourceClass();
$this->setFormClass();
$this->setRequestedEntityClass();
$this->setForm();
}
/**
@ -63,6 +69,11 @@ final class CreateSourceAction extends AbstractCreateAction
*/
protected function isValid(): bool
{
//The following Exception just exists out of debuging reasons during the development process
if (!$this->form->isSubmitted()) {
throw new \Exception('The form is not submitted!');
}
return $this->form->isValid();
}

View File

@ -16,6 +16,6 @@ final class PureSourceCreateType extends SourceType
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('slug')->add('class');
$builder->add('slug');
}
}

View File

@ -22,6 +22,8 @@ use Symfony\Component\HttpFoundation\Request;
use App\Domain\FormManagement\RequestedActionFormBuilderService;
use App\Domain\FormManagement\FormClassNameService;
use App\Domain\RequestManagement\Entity\RequestedEntityService;
use App\Entity\Source\PureSource;
use App\Attribut\ClassAttributInterface;
/**
* @todo Implement test and logic!!!!!
@ -77,6 +79,7 @@ class CreateSourceActionIntegrationTest extends KernelTestCase
public function testCreateWithGuestUser(): void
{
$this->request->attributes->set(ClassAttributInterface::CLASS_ATTRIBUT_NAME, PureSource::class);
$this->assertInstanceOf(PureSourceInterface::class, $this->createSourceAction->execute());
}

View File

@ -48,7 +48,6 @@ class PureSourceIntegrationTest extends KernelTestCase
$this->assertGreaterThan(0, $this->pureSource->getId());
$this->entityManager->remove($this->pureSource);
$this->entityManager->flush();
$this->expectException(\TypeError::class);
$this->pureSource->getId();
$this->assertNull($this->pureSource->getId());
}
}

View File

@ -26,8 +26,7 @@ class IdAttributTest extends TestCase
public function testConstruct(): void
{
$this->assertFalse($this->id->hasId());
$this->expectException(\TypeError::class);
$this->id->getId();
$this->assertNull($this->id->getId());
}
public function testAccessors(): void

View File

@ -27,8 +27,7 @@ class SlugAttributTest extends TestCase
public function testConstructor(): void
{
$this->assertFalse($this->slugAttribut->hasSlug());
$this->expectException(\TypeError::class);
$this->slugAttribut->getSlug();
$this->assertNull($this->slugAttribut->getSlug());
}
public function testAccessors(): void

View File

@ -22,8 +22,7 @@ class AbstractEntityTest extends TestCase
public function testConstructor(): void
{
$this->assertEquals(0, $this->entity->getVersion());
$this->expectException(\TypeError::class);
$this->entity->getId();
$this->assertNull($this->entity->getId());
}
public function testVersion(): void

View File

@ -38,7 +38,6 @@ class AbstractSourceTest extends TestCase
public function testSlugInit(): void
{
$this->expectException(\TypeError::class);
$this->source->getSlug();
$this->assertNull($this->source->getSlug());
}
}

View File

@ -0,0 +1,42 @@
<?php
namespace tests\Unit\Form\Source;
use Symfony\Component\Form\Test\TypeTestCase;
use App\Entity\Source\PureSource;
use App\Form\Source\PureSourceCreateType;
/**
* @author kevinfrantz
*
* @see https://symfony.com/doc/current/form/unit_testing.html
*/
class PureSourceCreateTypeTest extends TypeTestCase
{
const SLUG = 'ABCDE';
public function testAttributes(): void
{
$formData = ['slug' => self::SLUG];
$objectToCompare = new PureSource();
$form = $this->factory->create(PureSourceCreateType::class, $objectToCompare);
$object = new PureSource();
$object->setSlug(self::SLUG);
$object->setCreatorRelation($objectToCompare->getCreatorRelation());
// submit the data to the form directly
$form->submit($formData);
$this->assertTrue($form->isSynchronized());
// check that $objectToCompare was modified as expected when the form was submitted
//$this->assertEquals($object, $objectToCompare);
$view = $form->createView();
$children = $view->children;
foreach (array_keys($formData) as $key) {
$this->assertArrayHasKey($key, $children);
}
}
}

View File

@ -52,8 +52,7 @@ class UserSourceRepositoryTest extends KernelTestCase
$this->assertGreaterThan(0, $insertSource->getId());
$this->entityManager->remove($insertSource);
$this->entityManager->flush();
$this->expectException(\TypeError::class);
$insertSource->getId();
$this->assertNull($insertSource->getId());
}
public function testCreation(): void