mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-10-31 09:19:08 +00:00 
			
		
		
		
	Implemented LazyRequestedEntityTest
This commit is contained in:
		| @@ -0,0 +1,103 @@ | ||||
| <?php | ||||
|  | ||||
| namespace tests\Unit\Domain\RequestManagement\Entity; | ||||
|  | ||||
| use PHPUnit\Framework\TestCase; | ||||
| use Infinito\Domain\RequestManagement\Entity\RequestedEntityInterface; | ||||
| use Infinito\Domain\RequestManagement\Entity\LazyRequestedEntity; | ||||
| use Infinito\Domain\RepositoryManagement\LayerRepositoryFactoryServiceInterface; | ||||
| use Infinito\Repository\RepositoryInterface; | ||||
| use Infinito\Entity\Source\PureSource; | ||||
| use Infinito\Repository\Source\SourceRepositoryInterface; | ||||
| use Infinito\DBAL\Types\Meta\Right\LayerType; | ||||
| use Infinito\Domain\RequestManagement\Right\RequestedRightInterface; | ||||
|  | ||||
| class LazyRequestedEntityTest extends TestCase | ||||
| { | ||||
|     /** | ||||
|      * @var RequestedEntityInterface | ||||
|      */ | ||||
|     private $lazyRequestedEntity; | ||||
|  | ||||
|     /** | ||||
|      * @var LayerRepositoryFactoryServiceInterface | ||||
|      */ | ||||
|     private $layerRepositoryFactoryService; | ||||
|  | ||||
|     /** | ||||
|      * @var SourceRepositoryInterface | ||||
|      */ | ||||
|     private $repository; | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      * | ||||
|      * @see \PHPUnit\Framework\TestCase::setUp() | ||||
|      */ | ||||
|     public function setUp(): void | ||||
|     { | ||||
|         $this->repository = $this->createMock(SourceRepositoryInterface::class); | ||||
|         $this->layerRepositoryFactoryService = new class($this->repository) implements LayerRepositoryFactoryServiceInterface { | ||||
|             private $count = 0; | ||||
|             private $repository; | ||||
|  | ||||
|             public function __construct($repository) | ||||
|             { | ||||
|                 $this->repository = $repository; | ||||
|             } | ||||
|  | ||||
|             public function getRepository(string $layer): RepositoryInterface | ||||
|             { | ||||
|                 if ($this->count > 0) { | ||||
|                     //Just for information and testing thrown | ||||
|                     throw new \Exception('The function '.__FUNCTION__.' was called multiple times!'); | ||||
|                 } | ||||
|                 ++$this->count; | ||||
|  | ||||
|                 return $this->repository; | ||||
|             } | ||||
|         }; | ||||
|         $this->lazyRequestedEntity = new LazyRequestedEntity($this->layerRepositoryFactoryService); | ||||
|     } | ||||
|  | ||||
|     public function testSlug(): void | ||||
|     { | ||||
|         $slug = 'hello'; | ||||
|         $requestedSource = new PureSource(); | ||||
|         $requestedSource->setSlug($slug); | ||||
|         $requestedSource->setId('123'); | ||||
|         $this->repository->method('findOneBySlug')->willReturn($requestedSource); | ||||
|         $requestedRight = $this->createMock(RequestedRightInterface::class); | ||||
|         $requestedRight->method('getLayer')->willReturn(LayerType::SOURCE); | ||||
|         $this->assertNull($this->lazyRequestedEntity->setRequestedRight($requestedRight)); | ||||
|         $this->assertNull($this->lazyRequestedEntity->setSlug($slug)); | ||||
|         //Call 1 | ||||
|         $this->assertEquals($requestedSource, $this->lazyRequestedEntity->getEntity()); | ||||
|         //Call 2 | ||||
|         $this->assertEquals($requestedSource, $this->lazyRequestedEntity->getEntity()); | ||||
|         //Call with other slug | ||||
|         $this->assertNull($this->lazyRequestedEntity->setSlug('abcde')); | ||||
|         $this->expectException(\Exception::class); | ||||
|         $this->lazyRequestedEntity->getEntity(); | ||||
|     } | ||||
|  | ||||
|     public function testId(): void | ||||
|     { | ||||
|         $id = 12345; | ||||
|         $requestedSource = new PureSource(); | ||||
|         $requestedSource->setId($id); | ||||
|         $this->repository->method('find')->willReturn($requestedSource); | ||||
|         $requestedRight = $this->createMock(RequestedRightInterface::class); | ||||
|         $requestedRight->method('getLayer')->willReturn(LayerType::SOURCE); | ||||
|         $this->assertNull($this->lazyRequestedEntity->setRequestedRight($requestedRight)); | ||||
|         $this->assertNull($this->lazyRequestedEntity->setId($id)); | ||||
|         //Call 1 | ||||
|         $this->assertEquals($requestedSource, $this->lazyRequestedEntity->getEntity()); | ||||
|         //Call 2 | ||||
|         $this->assertEquals($requestedSource, $this->lazyRequestedEntity->getEntity()); | ||||
|         //Call with other slug | ||||
|         $this->assertNull($this->lazyRequestedEntity->setId(65432)); | ||||
|         $this->expectException(\Exception::class); | ||||
|         $this->lazyRequestedEntity->getEntity(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user