Implemented source data fixtures for guest user

This commit is contained in:
Kevin Frantz 2018-12-31 21:18:03 +01:00
parent 8c082bb0a4
commit 8a5845daa9
3 changed files with 31 additions and 7 deletions

View File

@ -13,7 +13,10 @@ final class SystemSlugType extends AbstractEnumType
{ {
public const IMPRINT = 'IMPRINT'; public const IMPRINT = 'IMPRINT';
public const GUEST_USER = 'GUEST_USER';
protected static $choices = [ protected static $choices = [
self::IMPRINT => 'imprint', self::IMPRINT => 'imprint',
self::GUEST_USER => 'guest user',
]; ];
} }

View File

@ -7,15 +7,21 @@ use Doctrine\Common\Persistence\ObjectManager;
use App\Entity\Source\Primitive\Text\TextSource; use App\Entity\Source\Primitive\Text\TextSource;
use App\Entity\Source\Primitive\Text\TextSourceInterface; use App\Entity\Source\Primitive\Text\TextSourceInterface;
use App\DBAL\Types\SystemSlugType; use App\DBAL\Types\SystemSlugType;
use App\Entity\Source\Complex\UserSource;
use App\Entity\Source\Complex\UserSourceInterface;
class SourceFixtures extends Fixture class SourceFixtures extends Fixture
{ {
public function load(ObjectManager $manager) public function load(ObjectManager $manager)
{ {
$manager->persist($this->getImpressum()); $manager->persist($this->getImpressum());
$manager->persist($this->getGuestUser());
$manager->flush(); $manager->flush();
} }
/**
* @return TextSourceInterface The example source for the impressum
*/
private function getImpressum(): TextSourceInterface private function getImpressum(): TextSourceInterface
{ {
$source = new TextSource(); $source = new TextSource();
@ -24,4 +30,15 @@ class SourceFixtures extends Fixture
return $source; return $source;
} }
/**
* @return UserSourceInterface The UserSource which should be used for the anonymous user
*/
private function getGuestUser(): UserSourceInterface
{
$source = new UserSource();
$source->setSlug(SystemSlugType::GUEST_USER);
return $source;
}
} }

View File

@ -1,14 +1,14 @@
<?php <?php
namespace Tests\Integration; namespace Tests\Integration\DataFixtures;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManager;
use App\Entity\Source\AbstractSource; use App\Entity\Source\AbstractSource;
use App\DBAL\Types\SystemSlugType; use App\DBAL\Types\SystemSlugType;
use App\Entity\Source\Primitive\Text\TextSourceInterface; use App\Entity\Source\Complex\UserSourceInterface;
class FixturesIntegrationTest extends KernelTestCase class SourceFixturesIntegrationTest extends KernelTestCase
{ {
/** /**
* @var EntityManager * @var EntityManager
@ -21,13 +21,17 @@ class FixturesIntegrationTest extends KernelTestCase
$this->entityManager = static::$kernel->getContainer()->get('doctrine')->getManager(); $this->entityManager = static::$kernel->getContainer()->get('doctrine')->getManager();
} }
public function testImpressum(): void public function testImpressumSource(): void
{ {
$sourceRepository = $this->entityManager->getRepository(AbstractSource::class); $sourceRepository = $this->entityManager->getRepository(AbstractSource::class);
/**
* @var TextSourceInterface
*/
$imprint = $sourceRepository->findOneBy(['slug' => SystemSlugType::IMPRINT]); $imprint = $sourceRepository->findOneBy(['slug' => SystemSlugType::IMPRINT]);
$this->assertInternalType('string', $imprint->getText()); $this->assertInternalType('string', $imprint->getText());
} }
public function testGuestUserSource(): void
{
$sourceRepository = $this->entityManager->getRepository(AbstractSource::class);
$userSource = $sourceRepository->findOneBy(['slug' => SystemSlugType::GUEST_USER]);
$this->assertInstanceOf(UserSourceInterface::class, $userSource);
}
} }