<?php namespace tests\unit\Entity\Meta; use PHPUnit\Framework\TestCase; use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\ArrayCollection; use Infinito\Entity\Meta\LawInterface; use Infinito\Entity\Meta\Law; use Infinito\Entity\Meta\Right; class LawTest extends TestCase { /** * @var LawInterface */ protected $law; public function setUp(): void { $this->law = new Law(); } public function testConstruct(): void { $this->assertFalse($this->law->getGrant()); $this->assertInstanceOf(Collection::class, $this->law->getRights()); } public function testRights(): void { $right = new Right(); $rights = new ArrayCollection([$right, new Right(), new Right()]); $this->assertNull($this->law->setRights($rights)); $this->assertEquals($right, $this->law->getRights()->get(0)); } /** * Implemented to debug where ReflectionException "Property Infinito\\Entity\\Meta\\Law::$relation does not exist" is coming from. */ public function testRelationNotSet(): void { $reflectionClass = new \ReflectionClass($this->law); $this->assertFalse($reflectionClass->hasMethod('getRelation')); $this->assertFalse($reflectionClass->hasMethod('setRelation')); $this->assertFalse($reflectionClass->hasProperty('relation')); } }