Refactored Collection Sources

This commit is contained in:
Kevin Frantz
2018-11-01 19:59:36 +01:00
parent 7cb6238f92
commit 5f18245b73
15 changed files with 148 additions and 63 deletions

View File

@@ -6,7 +6,6 @@ use App\Entity\Attribut\MembersAttribut;
use App\Entity\Attribut\MembersAttributInterface;
use Doctrine\Common\Collections\ArrayCollection;
use App\Entity\Source\AbstractSource;
use App\Entity\Source\GroupSource;
use App\Tests\AbstractTestCase;
class MembersAttributTest extends AbstractTestCase
@@ -18,7 +17,11 @@ class MembersAttributTest extends AbstractTestCase
public function setUp(): void
{
$this->membersAttribut = new class() implements MembersAttributInterface {
$this->membersAttribut = $this->getMembersAttributClassMock();
}
private function getMembersAttributClassMock():MembersAttributInterface{
return new class implements MembersAttributInterface{
use MembersAttribut;
};
}
@@ -62,7 +65,7 @@ class MembersAttributTest extends AbstractTestCase
public function testFirstLevelMembersInclusiveChildren(): void
{
$source1 = new GroupSource();
$source1 = $this->getMembersAttributClassMock();
$source2 = clone $source1;
$source3 = clone $source1;
$source4 = clone $source1;
@@ -74,13 +77,14 @@ class MembersAttributTest extends AbstractTestCase
public function test3DimensionsMembersInclusiveChildren(): void
{
$source1 = new GroupSource();
$source1 = $this->getMembersAttributClassMock();
$source2 = clone $source1;
$source3 = clone $source1;
$source4 = clone $source1;
$source1->setMembers(new ArrayCollection([$source2]));
$source2->setMembers(new ArrayCollection([$source3]));
$source3->setMembers(new ArrayCollection([$source4]));
$source4->setMembers(new ArrayCollection());
$this->membersAttribut->setMembers(new ArrayCollection([$source1]));
$this->assertEquals(1, $this->membersAttribut->getMembers()->count());
$this->assertEquals(1, $source1->getMembers()->count());
@@ -92,7 +96,8 @@ class MembersAttributTest extends AbstractTestCase
public function testMembersIncludingChildrenInfinite(): void
{
$source1 = new GroupSource();
$source1 = $this->getMembersAttributClassMock();
$source1->setMembers(new ArrayCollection());
$source2 = clone $source1;
$source3 = clone $source1;
$source4 = clone $source1;

View File

@@ -0,0 +1,43 @@
<?php
namespace Tests\Unit\Entity\Source\Collection;
use PHPUnit\Framework\TestCase;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use App\Entity\Source\AbstractSource;
use App\Entity\Source\Collection\MemberCollectionSourceInterface;
use App\Entity\Source\Collection\MemberCollectionSource;
/**
*
* @author kevinfrantz
*/
class MemberCollectionSourceTest extends TestCase
{
/**
*
* @var MemberCollectionSourceInterface
*/
protected $groupSource;
public function setUp(): void
{
$this->groupSource = new MemberCollectionSource();
}
public function testConstructor(): void
{
$this->assertInstanceOf(Collection::class, $this->groupSource->getMembers());
}
public function testMembers()
{
$member = new class() extends AbstractSource {};
$this->groupSource->setMembers(new ArrayCollection([
$member
]));
$this->assertEquals($member, $this->groupSource->getMembers()
->get(0));
}
}

View File

@@ -1,35 +0,0 @@
<?php
namespace tests\unit\Entity\Source;
use App\Entity\Source\GroupSourceInterface;
use App\Entity\Source\GroupSource;
use PHPUnit\Framework\TestCase;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use App\Entity\Source\AbstractSource;
/**
* @author kevinfrantz
*/
class GroupSourceTest extends TestCase
{
/**
* @var GroupSourceInterface
*/
protected $groupSource;
public function setUp(): void
{
$this->groupSource = new GroupSource();
}
public function testMembers()
{
$this->assertInstanceOf(Collection::class, $this->groupSource->getMembers());
$member = new class() extends AbstractSource {
};
$this->groupSource->setMembers(new ArrayCollection([$member]));
$this->assertEquals($member, $this->groupSource->getMembers()->get(0));
}
}