Skip to content

Commit

Permalink
Clean code
Browse files Browse the repository at this point in the history
  • Loading branch information
Dumazeau committed Jul 19, 2021
1 parent 9fba2a2 commit 2d582e5
Show file tree
Hide file tree
Showing 16 changed files with 108 additions and 77 deletions.
20 changes: 10 additions & 10 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,20 @@
"issues": "https://github.com/rich-id/terms-module/issues"
},
"require": {
"php": ">=7.3",
"php": ">=7.3|^8.0",
"doctrine/migrations": "^3.0",
"doctrine/orm": "^2.7",
"friendsofsymfony/ckeditor-bundle": "^2.3",
"psr/log": "^1.1",
"richcongress/bundle-toolbox": "^1.0",
"sensio/framework-extra-bundle": "^5.0",
"symfony/form": "^4.0",
"symfony/http-foundation": "^4.4",
"symfony/routing": "^4.0",
"symfony/security-bundle": "^4.0",
"symfony/translation": "^4.0",
"symfony/twig-bundle": "^4.0",
"symfony/validator": "^4.0"
"richcongress/bundle-toolbox": "*",
"sensio/framework-extra-bundle": "^5.0|^6.0",
"symfony/form": "^4.0|^5.0",
"symfony/http-foundation": "^4.4|^5.0",
"symfony/routing": "^4.0|^5.0",
"symfony/security-bundle": "^4.0|^5.0",
"symfony/translation": "^4.0|^5.0",
"symfony/twig-bundle": "^4.0|^5.0",
"symfony/validator": "^4.0|^5.0"
},
"require-dev": {
"doctrine/doctrine-bundle": "^2.0",
Expand Down
22 changes: 22 additions & 0 deletions src/Domain/Factory/DefaultTermsVersionFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

declare(strict_types=1);

namespace RichId\TermsModuleBundle\Domain\Factory;

use RichId\TermsModuleBundle\Domain\Entity\Terms;
use RichId\TermsModuleBundle\Domain\Entity\TermsVersion;

class DefaultTermsVersionFactory
{
public function __invoke(Terms $terms): TermsVersion
{
$entity = new TermsVersion();

$entity->setTerms($terms);
$entity->setVersion(1);
$terms->addVersion($entity);

return $entity;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,12 @@

namespace RichId\TermsModuleBundle\Domain\Factory;

use RichId\TermsModuleBundle\Domain\Entity\Terms;
use RichId\TermsModuleBundle\Domain\Entity\TermsVersion;
use RichId\TermsModuleBundle\Domain\Exception\InvalidValueException;

class TermsVersionFactory
class DuplicateTermsVersionFactory
{
public function buildDefaultVersion(Terms $terms): TermsVersion
{
$entity = new TermsVersion();

$entity->setTerms($terms);
$entity->setVersion(1);
$terms->addVersion($entity);

return $entity;
}

public function buildFromCopy(TermsVersion $termsVersion): TermsVersion
public function __invoke(TermsVersion $termsVersion): TermsVersion
{
if ($termsVersion->getTitle() === null || $termsVersion->getTitle() === '') {
throw new InvalidValueException('title', $termsVersion->getTitle());
Expand Down
2 changes: 1 addition & 1 deletion src/Domain/Factory/TermsVersionSignatureFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

class TermsVersionSignatureFactory
{
public function sign(TermsVersion $version, TermsSubjectInterface $subject): TermsVersionSignature
public function __invoke(TermsVersion $version, TermsSubjectInterface $subject): TermsVersionSignature
{
$entity = new TermsVersionSignature();

Expand Down
2 changes: 1 addition & 1 deletion src/Domain/Updater/TermsUpdater.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

class TermsUpdater
{
public function update(Terms $terms, TermsEdition $termsEdition): Terms
public function __invoke(Terms $terms, TermsEdition $termsEdition): Terms
{
$terms->setIsPublished($termsEdition->isTermsPublished() ?? false);

Expand Down
2 changes: 1 addition & 1 deletion src/Domain/Updater/TermsVersionUpdater.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

class TermsVersionUpdater
{
public function update(TermsVersion $termsVersion, TermsEdition $termsEdition): TermsVersion
public function __invoke(TermsVersion $termsVersion, TermsEdition $termsEdition): TermsVersion
{
if ($termsEdition->getTitle() === null || $termsEdition->getTitle() === '') {
throw new InvalidValueException('title', $termsEdition->getTitle());
Expand Down
12 changes: 6 additions & 6 deletions src/Domain/UseCase/CreateTermsVersion.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,24 @@
use RichId\TermsModuleBundle\Domain\Entity\TermsVersion;
use RichId\TermsModuleBundle\Domain\Event\TermsVersionCreatedEvent;
use RichId\TermsModuleBundle\Domain\Exception\CannotAddVersionToTermsException;
use RichId\TermsModuleBundle\Domain\Factory\TermsVersionFactory;
use RichId\TermsModuleBundle\Domain\Factory\DuplicateTermsVersionFactory;
use RichId\TermsModuleBundle\Domain\Port\EntityRecoderInterface;
use RichId\TermsModuleBundle\Domain\Port\EventDispatcherInterface;

class CreateTermsVersion
{
/** @var TermsVersionFactory */
protected $termsVersionFactory;
/** @var DuplicateTermsVersionFactory */
protected $duplicateTermsVersionFactory;

/** @var EntityRecoderInterface */
protected $entityRecoder;

/** @var EventDispatcherInterface */
protected $eventDispatcher;

public function __construct(TermsVersionFactory $termsVersionFactory, EntityRecoderInterface $entityRecoder, EventDispatcherInterface $eventDispatcher)
public function __construct(DuplicateTermsVersionFactory $duplicateTermsVersionFactory, EntityRecoderInterface $entityRecoder, EventDispatcherInterface $eventDispatcher)
{
$this->termsVersionFactory = $termsVersionFactory;
$this->duplicateTermsVersionFactory = $duplicateTermsVersionFactory;
$this->entityRecoder = $entityRecoder;
$this->eventDispatcher = $eventDispatcher;
}
Expand All @@ -38,7 +38,7 @@ public function __invoke(TermsVersion $basedTermsVersion): void
throw new CannotAddVersionToTermsException($terms);
}

$newTermVersion = $this->termsVersionFactory->buildFromCopy($basedTermsVersion);
$newTermVersion = ($this->duplicateTermsVersionFactory)($basedTermsVersion);

$this->entityRecoder->saveTermsVersion($newTermVersion);

Expand Down
4 changes: 2 additions & 2 deletions src/Domain/UseCase/EditTerms.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ public function __invoke(TermsEdition $termsEdition): void
$termsVersion = $termsEdition->getEntity();
$terms = $termsVersion->getTerms();

$this->termsVersionUpdater->update($termsVersion, $termsEdition);
$this->termsUpdater->update($terms, $termsEdition);
($this->termsVersionUpdater)($termsVersion, $termsEdition);
($this->termsUpdater)($terms, $termsEdition);

$this->entityRecoder->saveTermsVersion($termsVersion);
$this->entityRecoder->saveTerms($terms);
Expand Down
2 changes: 1 addition & 1 deletion src/Domain/UseCase/SignTerms.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public function __invoke(string $termsSlug, TermsSubjectInterface $subject, ?boo
$lastVersion = ($this->getTermsVersionToSign)($termsSlug, $subject);

if ($accepted === true) {
$signature = $this->termsVersionSignatureFactory->sign($lastVersion, $subject);
$signature = ($this->termsVersionSignatureFactory)($lastVersion, $subject);
$this->entityRecoder->saveSignature($signature);
}

Expand Down
3 changes: 2 additions & 1 deletion src/Infrastructure/Resources/config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
<tag name="kernel.event_listener" event="RichId\TermsModuleBundle\Domain\Event\TermsVersionUpdatedEvent" />
</service>

<service id="RichId\TermsModuleBundle\Domain\Factory\TermsVersionFactory" />
<service id="RichId\TermsModuleBundle\Domain\Factory\DefaultTermsVersionFactory" />
<service id="RichId\TermsModuleBundle\Domain\Factory\DuplicateTermsVersionFactory" />
<service id="RichId\TermsModuleBundle\Domain\Factory\TermsVersionSignatureFactory" />

<service id="RichId\TermsModuleBundle\Domain\Fetcher\GetTermsVersionToSign" />
Expand Down
13 changes: 7 additions & 6 deletions src/UserInterface/Controller/EditAdminRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Doctrine\ORM\EntityManagerInterface;
use RichId\TermsModuleBundle\Domain\Entity\Terms;
use RichId\TermsModuleBundle\Domain\Entity\TermsVersion;
use RichId\TermsModuleBundle\Domain\Factory\DefaultTermsVersionFactory;
use RichId\TermsModuleBundle\Domain\Factory\TermsVersionFactory;
use RichId\TermsModuleBundle\Domain\Model\TermsEdition;
use RichId\TermsModuleBundle\Domain\UseCase\EditTerms;
Expand All @@ -28,8 +29,8 @@ class EditAdminRoute extends AbstractController
/** @var EditTerms */
protected $editTerms;

/** @var TermsVersionFactory */
protected $termsVersionFactory;
/** @var DefaultTermsVersionFactory */
protected $defaultTermsVersionFactory;

/** @var TermsVersionRepository */
protected $termsVersionRepository;
Expand All @@ -45,14 +46,14 @@ class EditAdminRoute extends AbstractController

public function __construct(
EditTerms $editTerms,
TermsVersionFactory $termsVersionFactory,
DefaultTermsVersionFactory $defaultTermsVersionFactory,
TermsVersionRepository $termsVersionRepository,
EntityManagerInterface $entityManager,
ParameterBagInterface $parameterBag,
RequestStack $requestStack
) {
$this->editTerms = $editTerms;
$this->termsVersionFactory = $termsVersionFactory;
$this->defaultTermsVersionFactory = $defaultTermsVersionFactory;
$this->termsVersionRepository = $termsVersionRepository;
$this->entityManager = $entityManager;
$this->requestStack = $requestStack;
Expand Down Expand Up @@ -89,7 +90,7 @@ public function __invoke(Terms $terms): Response
return $this->getSubmissionRedirection($terms, $currentTermsVersion);
}

$lastTermsVersion = $terms->getLatestVersion() ?? $this->termsVersionFactory->buildDefaultVersion($terms);
$lastTermsVersion = $terms->getLatestVersion() ?? ($this->defaultTermsVersionFactory)($terms);

return $this->render(
'@RichIdTermsModule/admin/edit/main.html.twig',
Expand Down Expand Up @@ -120,7 +121,7 @@ private function getTermsVersion(Terms $terms): TermsVersion
throw new NotFoundHttpException(\sprintf('No terms version found with version %s', $version));
}

return $terms->getLatestVersion() ?? $this->termsVersionFactory->buildDefaultVersion($terms);
return $terms->getLatestVersion() ?? ($this->defaultTermsVersionFactory)($terms);
}

private function getSubmissionRedirection(Terms $terms, TermsVersion $termsVersion): RedirectResponse
Expand Down
36 changes: 36 additions & 0 deletions tests/Domain/Factory/DefaultTermsVersionFactoryTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

declare(strict_types=1);

namespace RichId\TermsModuleBundle\Tests\Domain\Factory;

use RichCongress\TestFramework\TestConfiguration\Annotation\TestConfig;
use RichCongress\TestSuite\TestCase\TestCase;
use RichId\TermsModuleBundle\Domain\Entity\Terms;
use RichId\TermsModuleBundle\Domain\Factory\DefaultTermsVersionFactory;

/**
* @covers \RichId\TermsModuleBundle\Domain\Factory\DefaultTermsVersionFactory
* @TestConfig("fixtures")
*/
final class DefaultTermsVersionFactoryTest extends TestCase
{
/** @var DefaultTermsVersionFactory */
public $factory;

public function testFactory(): void
{
$terms = new Terms();

$entity = ($this->factory)($terms);

$this->assertNull($entity->getId());
$this->assertSame($terms, $entity->getTerms());
$this->assertSame(1, $entity->getVersion());
$this->assertFalse($entity->isEnabled());
$this->assertNull($entity->getTitle());
$this->assertNull($entity->getContent());
$this->assertNull($entity->getPublicationDate());
$this->assertEmpty($entity->getSignatures());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,62 +6,45 @@

use RichCongress\TestFramework\TestConfiguration\Annotation\TestConfig;
use RichCongress\TestSuite\TestCase\TestCase;
use RichId\TermsModuleBundle\Domain\Entity\Terms;
use RichId\TermsModuleBundle\Domain\Entity\TermsVersion;
use RichId\TermsModuleBundle\Domain\Exception\InvalidValueException;
use RichId\TermsModuleBundle\Domain\Factory\TermsVersionFactory;
use RichId\TermsModuleBundle\Domain\Factory\DuplicateTermsVersionFactory;

/**
* @covers \RichId\TermsModuleBundle\Domain\Factory\TermsVersionFactory
* @covers \RichId\TermsModuleBundle\Domain\Factory\DuplicateTermsVersionFactory
* @TestConfig("fixtures")
*/
final class TermsVersionFactoryTest extends TestCase
final class DuplicateTermsVersionFactoryTest extends TestCase
{
/** @var TermsVersionFactory */
/** @var DuplicateTermsVersionFactory */
public $factory;

public function testBuildDefaultVersion(): void
{
$terms = new Terms();

$entity = $this->factory->buildDefaultVersion($terms);

$this->assertNull($entity->getId());
$this->assertSame($terms, $entity->getTerms());
$this->assertSame(1, $entity->getVersion());
$this->assertFalse($entity->isEnabled());
$this->assertNull($entity->getTitle());
$this->assertNull($entity->getContent());
$this->assertNull($entity->getPublicationDate());
$this->assertEmpty($entity->getSignatures());
}

public function testBuildFromCopyWithBadTitle(): void
public function testFactoryWithBadTitle(): void
{
$this->expectException(InvalidValueException::class);

$termsVersion = $this->getReference(TermsVersion::class, 'v3-terms-1');
$termsVersion->setTitle('');

$this->factory->buildFromCopy($termsVersion);
($this->factory)($termsVersion);
}

public function testBuildFromCopyWithBadContent(): void
public function testFactoryWithBadContent(): void
{
$this->expectException(InvalidValueException::class);

$termsVersion = $this->getReference(TermsVersion::class, 'v3-terms-1');
$termsVersion->setContent('');

$this->factory->buildFromCopy($termsVersion);
($this->factory)($termsVersion);
}

public function testBuildFromCopy(): void
public function testFactory(): void
{
$termsVersion = $this->getReference(TermsVersion::class, 'v3-terms-1');
$this->assertSame(3, $termsVersion->getVersion());

$entity = $this->factory->buildFromCopy($termsVersion);
$entity = ($this->factory)($termsVersion);

$this->assertNull($entity->getId());
$this->assertNull($entity->getPublicationDate());
Expand Down
6 changes: 3 additions & 3 deletions tests/Domain/Factory/TermsVersionSignatureFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function testSign(): void
{
$termsVersion = new TermsVersion();

$entity = $this->factory->sign($termsVersion, DummySubject::create('user', '42'));
$entity = ($this->factory)($termsVersion, DummySubject::create('user', '42'));

$this->assertNull($entity->getId());
$this->assertInstanceOf(\DateTime::class, $entity->getDate());
Expand All @@ -52,13 +52,13 @@ public function testSignUniqueForTermsVersionAndSubject(): void
$this->getManager()->persist($termsVersion);
$this->getManager()->flush();

$entity1 = $this->factory->sign($termsVersion, DummySubject::create('user', '42'));
$entity1 = ($this->factory)($termsVersion, DummySubject::create('user', '42'));
$this->getManager()->persist($entity1);
$this->getManager()->flush();

$this->expectException(UniqueConstraintViolationException::class);

$entity2 = $this->factory->sign($termsVersion, DummySubject::create('user', '42'));
$entity2 = ($this->factory)($termsVersion, DummySubject::create('user', '42'));
$this->getManager()->persist($entity2);
$this->getManager()->flush();
}
Expand Down
2 changes: 1 addition & 1 deletion tests/Domain/Updater/TermsUpdaterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public function testUpdate(): void
$entity = new Terms();
$model = new TermsEdition($termsVersion);

$this->updater->update($entity, $model);
($this->updater)($entity, $model);

$this->assertNull($entity->getId());
$this->assertNull($entity->getSlug());
Expand Down
Loading

0 comments on commit 2d582e5

Please sign in to comment.