<?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\TreeCollectionSourceInterface;
use App\Entity\Source\Collection\TreeCollectionSource;
use App\Helper\DimensionHelperInterface;

/**
 * @author kevinfrantz
 */
class TreeCollectionSourceTest extends TestCase
{
    /**
     * @var TreeCollectionSourceInterface
     */
    protected $tree;

    public function setUp(): void
    {
        $this->tree = new TreeCollectionSource();
    }

    public function testConstructor(): void
    {
        $this->assertInstanceOf(Collection::class, $this->tree->getMembers());
        $this->assertInstanceOf(TreeCollectionSourceInterface::class, $this->tree);
        $this->assertInstanceOf(DimensionHelperInterface::class, $this->tree);
    }

    public function testMembers()
    {
        $member = new class() extends AbstractSource {
        };
        $this->tree->setMembers(new ArrayCollection([
            $member,
        ]));
        $this->assertEquals($member, $this->tree->getMembers()
            ->get(0));
    }
}