From 7af1b3e58cfe42e6dddb5cd41bbab530ffdfe769 Mon Sep 17 00:00:00 2001 From: Kevin Frantz Date: Sun, 13 Jan 2019 21:52:09 +0100 Subject: [PATCH] Optimized draft for RequestedRight --- .../RightRequestManagement/RequestedRight.php | 23 +++++-- .../RequestedRightTest.php | 64 +++++++++++++++++++ 2 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 application/symfony/tests/Unit/Domain/RightManagement/RightRequestManagement/RequestedRightTest.php diff --git a/application/symfony/src/Domain/RightManagement/RightRequestManagement/RequestedRight.php b/application/symfony/src/Domain/RightManagement/RightRequestManagement/RequestedRight.php index d8951c2..ec324c7 100644 --- a/application/symfony/src/Domain/RightManagement/RightRequestManagement/RequestedRight.php +++ b/application/symfony/src/Domain/RightManagement/RightRequestManagement/RequestedRight.php @@ -50,7 +50,7 @@ class RequestedRight implements RequestedRightInterface */ private function isIdEquals(): bool { - if ($this->requestedSource->hasId() && $this->source->hasId()) { + if (!$this->requestedSource->hasId() || !$this->source->hasId()) { return false; } @@ -62,19 +62,27 @@ class RequestedRight implements RequestedRightInterface */ private function isSlugEquals(): bool { - if ($this->requestedSource->hasSlug() && $this->source->hasSlug()) { + if (!$this->requestedSource->hasSlug() || !$this->source->hasSlug()) { return false; } return $this->requestedSource->getSlug() === $this->source->getSlug(); } + /** + * @return bool Returns true if the source is not set! + */ + private function isSourceNotSet(): bool + { + return !isset($this->source); + } + /** * @return bool Tells if a reload of the source is neccessary */ private function isReloadNeccessary(): bool { - return $this->isIdEquals() && $this->isSlugEquals(); + return $this->isSourceNotSet() || $this->isIdEquals() || $this->isSlugEquals(); } /** @@ -88,11 +96,19 @@ class RequestedRight implements RequestedRightInterface { if ($this->isReloadNeccessary()) { $this->loadSource(); + $this->setSourceIfNotSet(); } return $this->source; } + private function setSourceIfNotSet(): void + { + if (!isset($this->source)) { + $this->source = $this->requestedSource; + } + } + /** * {@inheritdoc} * @@ -101,6 +117,5 @@ class RequestedRight implements RequestedRightInterface final public function setRequestedSource(RequestedSourceInterface $requestedSource) { $this->requestedSource = $requestedSource; - $this->loadSource(); } } diff --git a/application/symfony/tests/Unit/Domain/RightManagement/RightRequestManagement/RequestedRightTest.php b/application/symfony/tests/Unit/Domain/RightManagement/RightRequestManagement/RequestedRightTest.php new file mode 100644 index 0000000..4d8502c --- /dev/null +++ b/application/symfony/tests/Unit/Domain/RightManagement/RightRequestManagement/RequestedRightTest.php @@ -0,0 +1,64 @@ +get('doctrine.orm.default_entity_manager'); + $sourceRepository = $entityManager->getRepository(AbstractSource::class); + $this->requestedRight = new RequestedRight($sourceRepository); + } + + public function testLayer(): void + { + $layer = LayerType::SOURCE; + $this->assertNull($this->requestedRight->setLayer($layer)); + $this->assertEquals($layer, $this->requestedRight->getLayer()); + } + + public function testLayerException(): void + { + $this->expectException(\TypeError::class); + var_dump($this->requestedRight->getLayer()); + } + + public function testUnsavedRequestedSource(): void + { + $source = $this->createMock(RequestedSource::class); + $this->requestedRight->setRequestedSource($source); + $this->assertEquals($source, $this->requestedRight->getSource()); + } + + public function testKnownSource(): void + { + $requestedSource = new RequestedSource(); + $requestedSource->setSlug(SystemSlugType::IMPRINT); + $this->requestedRight->setRequestedSource($requestedSource); + $sourceResponse1 = $this->requestedRight->getSource(); + $this->assertGreaterThan(0, $sourceResponse1->getId()); + $requestedSource->setSlug(''); + $sourceResponse2 = $this->requestedRight->getSource(); + $this->assertInstanceOf(RequestedSourceInterface::class, $sourceResponse2); + $this->assertFalse($sourceResponse2->hasId()); + } +}